;; ;; pinball.al ;; ;; Lawson Wade ;; ;; a pinball machine scene ;; ;; lighting coefficients for metallic shader (define Ka 0.4) (define Kr 0.6) (define Ks 1) (define (surfpoly) (surface "backlit")) (define (surftop) (surface "backlit")) (require 'colors.al) (load 'pinballgeom.al) (define railingrad 0.04) ;; railing radius (define rolloverrad 0.035) ;; rollover radius ;;------------------- ;; The Base (define (make-base) (separator (divisions 40 20) (color White) (surface "stars" 'seed 0.63 'hfreq 2) (patch "bilinear" 'P (list '#<-20 0 -10> '#<20 0 -10> '#<-20 0 10> '#<20 0 10>)) )) ;;------------------- ;; The Quarter Circle Patch (define (quarter-circle-patch) (let* ( (offset 1.6) (p0 (vec3 (/ 9.7 (sqrt 2)) 0 (/ 9.7 (sqrt 2)))) (p1 (+ p0 (vec3 offset 0 (- offset)))) (p2 (vec3 9.7 0 (* offset (sqrt 2)))) (p3 (vec3 9.7 0 0)) (p7 (vec3 9.7 0 3.23)) (p11 (vec3 9.7 0 6.47)) (p4 (+ p0 (vec3 (- offset) 0 offset))) (p8 (vec3 (* offset (sqrt 2)) 0 9.7)) (p12 (vec3 0 0 9.7)) (p13 (vec3 3.23 0 9.7)) (p14 (vec3 6.47 0 9.7)) (p15 (vec3 9.7 0 9.7)) (p5 (+ p0 (* 0.3 (- p15 p0)))) (p10 (+ p0 (* 0.6 (- p15 p0)))) (p6 (+ p0 (* 0.8 (- p7 p0)))) (p9 (+ p0 (* 0.8 (- p13 p0)))) (lip 0.075) (lip1 (vec3 0 (/ lip 3) 0)) (lip2 (vec3 0 (* (/ lip 3) 2) 0)) (lip3 (vec3 0 lip 0)) ) (separator (patch "bicubic" 'P (list p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15)) ;; the lip (patch "bicubic" 'P (list p3 p2 p1 p0 (- p3 lip1) (- p2 lip1) (- p1 lip1) (- p0 lip1) (- p3 lip2) (- p2 lip2) (- p1 lip2) (- p0 lip2) (- p3 lip3) (- p2 lip3) (- p1 lip3) (- p0 lip3) )) (patch "bicubic" 'P (list p0 p4 p8 p12 (- p0 lip1) (- p4 lip1) (- p8 lip1) (- p12 lip1) (- p0 lip2) (- p4 lip2) (- p8 lip2) (- p12 lip2) (- p0 lip3) (- p4 lip3) (- p8 lip3) (- p12 lip3) )) ))) ;;------------------- ;; The Tops (define (make-tops) (separator ;;(divisions 10 10) (color White) (if (eq? surftop #f) (surface "backlit") (surftop)) ;; the quarter circles up top (separator (translate 10 1.05 0) (quarter-circle-patch)) (separator (translate 10 1.05 0) (rotate 90 y-axis) (quarter-circle-patch)) (color White) (surface "plastic") ;; the slanted patch tops (separator (translate -20 1.5 0) (patch "bilinear" 'P (list '#<0 0 0> '#<0 0 8.1> '#<4 0 0> '#<8.0125 0 8.1>))) (separator (translate -20 1.5 -2) (patch "bilinear" 'P (list '#<0 0 0> '#<0 0 -8> '#<4 0 0> '#<8 0 -8>))) ;; the top to the ball drop area, and its lip (separator (translate -20 1.5 -2) (patch "bilinear" 'P (list '#<0 0 0> '#<0 0 2> '#<4 0 0> '#<4 0 2>))) (separator (translate -16 1.5 -1) (scale 1 0.2 1) (translate 0 -1 0) (rotate -90 z-axis) (smallpatch)) ;; the top of the plunger area (separator (translate -20 1.5 8) (patch "bilinear" 'P (list '#<0 0 0> '#<0 0 2> '#<4 0 0> '#<4 0 2>))) ;; the top of the sides (separator (translate -20 1.5 9.7) (patch "bilinear" 'P (list '#<0 0 0> '#<40 0 0> '#<0 0 0.3> '#<40 0 0.3>))) (separator (translate -20 1.5 -10) (patch "bilinear" 'P (list '#<0 0 0> '#<40 0 0> '#<0 0 0.3> '#<40 0 0.3>))) )) ;;------------------- ;; The Walls (define (make-walls) (separator ;;(divisions 5 1) (color White) (surface "rsmetal") ;; the end walls (separator (translate 20 0 0) (scale 1 0.075 1) (translate 0 10 0) (rotate 90 z-axis) (largepatch)) (separator (translate -20 0 0) (scale 1 0.075 1) (translate 0 10 0) (rotate 90 z-axis) (largepatch)) ;;(divisions 1 10) ;; the side walls (separator (translate 0 0 -9.7) (scale 2 0.075 1) (translate 0 10 0) (rotate 90 x-axis) (largepatch)) (separator (translate 0 0 9.7) (scale 2 0.075 1) (translate 0 10 0) (rotate 90 x-axis) (largepatch)) ;; the cylindrical wall (separator ;;(divisions 30 1) (translate 10 0 0) (scale 9.7 1.02 9.7) (rotate -90 y-axis) (rotate -90 x-axis) (cylinder 'thetamax 180)) ;; the partial cylindrical wall on ;; the left and its finishing cylinder (separator ;;(divisions 10 1) (translate 10 0 8.1) (scale 17.8 1 17.8) (rotate -270 y-axis) (rotate -90 x-axis) (cylinder 'thetamax 23.7)) (separator ;;(divisions 6 1) (translate 10 0 8.1) (rotate 23.7 y-axis) (translate 0 0 -17.9) (rotate -90 x-axis) (cylinder 'radius 0.1)) ;; the runway walls ;;(divisions 8 1) (separator (translate 0 0 8.1) (patch "bilinear" 'P (list '#<10 0 0> '#<-11.9875 0 0> '#<10 1.05 0> '#<-11.9875 1.05 0>))) (separator (translate 0 0 7.7) (patch "bilinear" 'P (list '#<10 0 0> '#<-13 0 0> '#<10 1.05 0> '#<-13 1.05 0>))) (separator (translate 0 1.05 7.7) (patch "bilinear" 'P (list '#<10 0 0> '#<-13 0 0> '#<10 0 0.4> '#<-13 0 0.4>))) (separator (translate 10 0 7.7) (patch "bilinear" 'P (list '#<0 0 0> '#<0 0 0.4> '#<0 1.05 0> '#<0 1.05 0.4>))) ;; the bottom walls ;;(divisions 4 1) (separator (translate -16 0 0) (patch "bilinear" 'P (list '#<0 0 0> '#<4.0125 0 8.1> '#<0 1.5 0> '#<4.0125 1.5 8.1>))) (separator (translate -16 0 -2) (patch "bilinear" 'P (list '#<0 0 0> '#<4 0 -8> '#<0 1.5 0> '#<4 1.5 -8>))) ;; the pocket walls at the bottom ;;(divisions 1 1) (separator (translate -18 0 -2) (scale 2 (* 0.075 20) 0.5) (uscale 0.5) (translate 1 1 0) (rotate 90 x-axis) (smallpatch)) (separator (translate -18 0 0) (scale 2 (* 0.075 20) 0.5) (uscale 0.5) (translate 1 1 0) (rotate 90 x-axis) (smallpatch)) (separator (translate -18 0 0) (rotate 90 y-axis) (scale 2 (* 0.075 20) 0.5) (uscale 0.5) (translate 1 1 0) (rotate 90 x-axis) (smallpatch)) ;; the walls near the plunger ;;(divisions 10 10) (separator (translate -20 0 8.1) (patch "bilinear" 'P (list '#<7 0 0> '#<8.0125 0 0> '#<7 1.5 0> '#<8.0125 1.5 0>)) (patch "bilinear" 'P (list '#<5.8 1.2 0> '#<7 1.2 0> '#<5.8 1.5 0> '#<7 1.5 0>)) (patch "bilinear" 'P (list '#<0 0 0> '#<5.8 0 0> '#<0 1.5 0> '#<5.8 1.5 0>)) ) (separator (translate -16 0 8) (patch "bilinear" 'P (list '#<0 0 0> '#<0 0 2> '#<0 1.5 0> '#<0 1.5 2>))) )) ;;------------------- ;; The Left Side Patch (define (left-side-patch) (let* ( (p0 (vec3 0 0 0.3)) (p1 (vec3 3.3 0 0.3)) (p2 (vec3 6.7 0 0.3)) (p3 (vec3 10 0 0.3)) (p12 (vec3 2 0 2)) (p15 (vec3 2.5 0 2)) (p13 (+ p0 (* 1.06 (- p12 p0)))) (p14 (+ p2 (* 1.06 (- p15 p2)))) (p4 (+ p0 (* 0.33 (- p12 p0)))) (p8 (+ p0 (* 0.67 (- p12 p0)))) (p7 (vec3 7 0 0.3)) (p11 (+ p2 (* 0.5 (- p15 p2)))) (p5 (+ p4 (* 0.33 (- p7 p4)))) (p6 (+ p4 (* 0.67 (- p7 p4)))) (p9 (+ p8 (* 0.33 (- p11 p8)))) (p10 (+ p8 (* 0.67 (- p11 p8)))) (lip 0.075) (lip1 (vec3 0 (/ lip 3) 0)) (lip2 (vec3 0 (* (/ lip 3) 2) 0)) (lip3 (vec3 0 lip 0)) ) (separator ;; the patch ;;(divisions 20 20) (translate 0 1.05 0) (patch "bicubic" 'P (list p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15)) ;; the lip (patch "bicubic" 'P (list p0 p4 p8 p12 (- p0 lip1) (- p4 lip1) (- p8 lip1) (- p12 lip1) (- p0 lip2) (- p4 lip2) (- p8 lip2) (- p12 lip2) (- p0 lip3) (- p4 lip3) (- p8 lip3) (- p12 lip3) )) (patch "bicubic" 'P (list p12 p13 p14 p15 (- p12 lip1) (- p13 lip1) (- p14 lip1) (- p15 lip1) (- p12 lip2) (- p13 lip2) (- p14 lip2) (- p15 lip2) (- p12 lip3) (- p13 lip3) (- p14 lip3) (- p15 lip3) )) (patch "bicubic" 'P (list p15 p11 p7 p3 (- p15 lip1) (- p11 lip1) (- p7 lip1) (- p3 lip1) (- p15 lip2) (- p11 lip2) (- p7 lip2) (- p3 lip2) (- p15 lip3) (- p11 lip3) (- p7 lip3) (- p3 lip3) )) ))) ;;------------------- ;; The Left Side Special (define (make-left-side-special) (separator (translate 0 0 -10) ;; the patch on top (separator ;;(divisions 15 15) (color White) (if (eq? surftop #f) (surface "backlit") (surftop)) (left-side-patch)) ;; the bumpered support post (separator (translate 2.2 0 1.65) (post-standalone)) ;; the support posts (separator (translate 0.8 0 0.6) (post) (post-screw)) (separator (translate 5.5 0 0.6) (post) (post-screw)) )) ;;------------------- ;; The Top for the Left Rollover Bumper (define (left-rollover-extended-patch) (let ( (p0 (vec3 3.7 0 3.5)) (p1 (vec3 8.0 0 1.7)) (p2 (vec3 13.0 0 1.5)) (p3 (vec3 16.0 0 5.0)) (p4 (vec3 3.686 0 3.53)) (p5 (vec3 9.0 0 2.1)) (p6 (vec3 13.2 0 2.1)) (p7 (vec3 15 0 6)) (p8 (vec3 3.69 0 3.56)) (p9 (vec3 9.3 0 2.3)) (p10 (vec3 13.6 0 3.0)) (p11 (vec3 14 0 6)) (p12 (vec3 3.7 0 3.59)) (p13 (vec3 9.5 0 2.5)) (p14 (vec3 13.5 0 3.6)) (p15 (vec3 12.0 0 6)) ) (separator ;;(divisions 10 10) (define radius 0.3) (define lip 0.075) (extended-patch (list p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15) radius lip surfpoly) ))) ;;------------------- ;; The Top for the Right Rollover Bumper (define (right-rollover-extended-patch) (let* ( (p0 (vec3 2 0 0)) (p1 (vec3 2.67 0 0)) (p2 (vec3 3.33 0 0)) (p3 (vec3 4 0 0)) (p12 (vec3 0.45 0 3.65)) (p13 (vec3 2.5 0 3.65)) (p14 (vec3 4.45 0 2.85)) (p15 (vec3 5.9 0 1)) (p4 (+ p0 (* 0.33 (- p12 p0)))) (p5 (+ p1 (* 0.33 (- p13 p1)))) (p6 (+ p2 (* 0.33 (- p14 p2)))) (p7 (+ p3 (* 0.33 (- p15 p3)))) (p8 (+ p0 (* 0.67 (- p12 p0)))) (p9 (+ p1 (* 0.67 (- p13 p1)))) (p10 (+ p2 (* 0.67 (- p14 p2)))) (p11 (+ p3 (* 0.67 (- p15 p3)))) ) (separator ;;(divisions 10 10) (define radius 0.3) (define lip 0.075) (extended-patch (list p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15) radius lip surfpoly) ))) ;;------------------- ;; The Left Side Rollover Bumper (define (make-left-rollover-bumper) (separator ;; the left-side bumper conglomerate (separator (translate 13 0 -4) (poly-bumper (list '#<-1 0 0> '#<0.5 0 -2.9> '#<3 0 -1> '#<1 0 0>) (list) #f #f) (poly-bumper (list '#<-0.27 0 -3.2> '#<-0.8 0 -2.2> '#<-4 0 -2.9> '#<-4.1 0 -3.7> '#<-2 0 -3.65>) (list) #f #f) (poly-bumper (list '#<-4.9 0 -3.62> '#<-4.83 0 -2.89> '#<-9.25 0 -2.45>) (list) #f #f)) ;; the extended patch on top (separator (translate 0 1.05 -10) (left-rollover-extended-patch)) )) ;;------------------- ;; The Right Side Rollover Bumper (define (make-right-rollover-bumper) (separator ;; the right-side 6-post bumper (separator (translate 13 0 4) (poly-bumper (list '#<-1 0 0> '#<1 0 0> '#<2.9 0 1> '#<1.5 0 2.25> '#<-0.4 0 3.2> '#<-2.55 0 3.65>) (list) #f #f)) ;; the extended patch on top (separator (translate 10 1.05 4) (right-rollover-extended-patch)) )) ;;------------------- ;; The Four Rollover Slots (define (make-four-rollover-slots) (separator ;; the 2-post bumpers (separator (translate 13 0 -2) (poly-bumper (list '#<-1 0 0> '#<1 0 0>) (list) #t #f)) (separator (translate 13 0 0) (poly-bumper (list '#<-1 0 0> '#<1 0 0>) (list) #t #f)) (separator (translate 13 0 2) (poly-bumper (list '#<-1 0 0> '#<1 0 0>) (list) #t #f)) ;; the rollovers (separator (translate 13 0 -3) (rotate 90 y-axis) (rollover rolloverrad)) (separator (translate 13 0 -1) (rotate 90 y-axis) (rollover rolloverrad)) (separator (translate 13 0 1) (rotate 90 y-axis) (rollover rolloverrad)) (separator (translate 13 0 3) (rotate 90 y-axis) (rollover rolloverrad)) )) ;;------------------- ;; The Target Row & Poly Bumper (define (make-target-row) (separator ;; the rollover behind the poly bumper (separator (translate 5 0 6.55) (rotate 90 y-axis) (rollover rolloverrad)) (translate 7.5 0 3.5) (rotate (degrees (atan 2 6)) y-axis) ;; the 3-post bumper (separator (poly-bumper (list '#<-6 0 0> '#<0 0 0> '#<0 0 2>) (list) #t surfpoly)) ;; the target row (separator (translate 0 0 -0.7) (rotate -90 y-axis) (popup-target-row 5)) )) ;;------------------- ;; The Bumpers (define (make-bumpers) (separator ;;(divisions 8 3) (separator (translate 9 0 0.5) (bumper #t)) (separator (translate 8 0 -4) (bumper #f)) (separator (translate 4 0 -2) (bumper #t)) )) ;;------------------- ;; The Disk Target & Miniposts (define (make-disk-target) (separator ;;(divisions 8 3) ;; disk target with minipost escorts (translate 1.5 0 -8) (rotate -37 y-axis) (translate -1 0 0) (separator (translate 0 0 0.4) (disk-target)) (separator (translate -0.7 0 0) (minipost)) (separator (translate 0.7 0 0) (minipost)) )) ;;------------------- ;; The Poly Bumpers on the Sides (define (make-side-poly-bumpers) (separator ;; the 3-post bumper on the left side (separator (translate -2 0 -9) (poly-bumper (list '#<-1 0 0> '#<1 0 0> '#<0 0 1>) (list) #t surfpoly)) ;; the minipost on the left (separator ;;(divisions 8 3) (translate -4 0 -9.3) (minipost)) ;; the 3-post bumper on the right side (separator (translate -2 0 7.1) (poly-bumper (list '#<-1 0 0> '#<0 0 -1> '#<2 0 0>) (list) #t surfpoly)) ;; the minipost on the right (separator ;;(divisions 8 3) (translate -4 0 7.3) (minipost)) )) ;;------------------- ;; The Kickout Bumpers (define (make-kickout-bumpers) (separator ;; the kickout bumper on the left side (separator (translate -9 0 -7) (poly-bumper (list '#<0 0 0> '#<4.5 0 0> (vec3 (/ -4 3) 0 (/ 8 3))) (list 1) #t surfpoly)) ;; the kickout bumper on the right side (separator (translate -9 0 5) (poly-bumper (list '#<4.5 0 0> '#<0 0 0> (vec3 (/ -4 3) 0 (/ -8 3))) (list 2) #t surfpoly)) )) ;;------------------- ;; The Flippers (define (make-flippers) (begin (separator (translate -12.8 0 -4.2) (rotate (degrees (atan -4 8)) y-axis) (flipper 0.35 0.19 0.04 2.1)) (separator (translate -12.8 0 2.2) (rotate (degrees (atan -4 -8)) y-axis) (flipper 0.35 0.19 0.04 2.1)) )) ;;------------------- ;; The Railings (define (make-railings) (begin ;; slanted rails (separator (translate -12.3 0 -4.45) (rotate (degrees (atan 4 -8)) y-axis) (railing 4.5 railingrad 0.52)) (separator (translate -12.3 0 2.45) (rotate (degrees (atan 4 8)) y-axis) (railing 4.5 railingrad 0.52)) ;; vertical rails (separator (translate -10.1 0 -8.6) (rotate 90 y-axis) (railing 4.5 railingrad 0.52)) (separator (translate -10.1 0 6.6) (rotate 90 y-axis) (railing 4.5 railingrad 0.52)) ;; rollovers on the left (separator (translate -7.5 0 -8) (rotate 90 y-axis) (rollover rolloverrad)) (separator (translate -7.8 0 -9.16) (rotate 90 y-axis) (rollover rolloverrad)) ;; rollovers on the right (separator (translate -7.5 0 6) (rotate 90 y-axis) (rollover rolloverrad)) (separator (translate -7.8 0 7.16) (rotate 90 y-axis) (rollover rolloverrad)) )) ;;------------------- ;; Lightbulb Geometry & pointlight source (define (lightbulb x z small?) (begin (let ((rad (if small? 0.15 0.2))) (separator (color White) (surface "glow") (translate x 0.66 z) (sphere 'radius rad 'zmin (- rad) 'zmax rad))) (separator (color White) (surface "metallic" 'texturemap "environ.tex" 'Ka Ka 'Ks Ks 'Kr Kr) (translate x 0 z) (rotate -90 x-axis) (cylinder 'radius (if small? 0.07 0.1) 'zmax 0.6)) (light "pointlight" 'from (vec3 x 0.66 z) 'intensity (if small? 0.5 1.0)) )) (define makemap #f) (define placepinball #t) (world ;;(divisions 4 4) (if makemap (scale -1 1 1)) ;; (light-shadows #t) (camera "overhead" "perspective" 'from '#<0 50 0> 'to '#<0 0 0> 'tilt 90 'fov 45) (camera "overheadrender" "perspective" 'from '#<0 26 0> 'to '#<0 0 0> 'tilt 90 'fov 45) (camera "main" "perspective" ;; 'from '#<-22.1 20 -7.11> ;; 'from '#<-15 24.8 -9.78> ;; top,side,front view 'from '#<18 6 6> ;; 'to '#<-3.54 1.54 0.2> ;; top,side,front view 'to '#<7 -4 -1> 'fov 45) (define envcam (vec3 0 0.5 0)) (camera "env0px" "perspective" 'from envcam 'to (+ envcam '#<1 0 0>)) (camera "env0nx" "perspective" 'from envcam 'to (+ envcam '#<-1 0 0>)) (camera "env0py" "perspective" 'from envcam 'to (+ envcam '#<0 1 0>)) (camera "env0ny" "perspective" 'from envcam 'to (+ envcam '#<0 -1 0>) 'tilt 180) (camera "env0pz" "perspective" 'from envcam 'to (+ envcam '#<0 0 1>)) (camera "env0nz" "perspective" 'from envcam 'to (+ envcam '#<0 0 -1>)) (light "ambientlight" 'intensity 0.3) ;; (light-shadows #t) (light "spotlight" 'from (vec3 0 40 0) 'to (vec3 0 0 0) 'intensity 1000) ;; 'shadow-map-res 512 'width 3 'samples 32) (surface "plastic") ;; lights (lightbulb 13 -2 #t) ;; rollover bumper (lightbulb 13 0 #t) ;; rollover bumper (lightbulb 13 2 #t) ;; rollover bumper (lightbulb 18.7 -6.5 #f) ;; left quarter circle top (lightbulb 16.5 -8.7 #f) ;; left quarter circle top (lightbulb 18.7 6.5 #f) ;; right quarter circle top (lightbulb 16.5 8.7 #f) ;; right quarter circle top (lightbulb 14 -5.2 #f) ;; left rollover bumper (lightbulb 10.7 -7.1 #f) ;; left rollover bumper (lightbulb 7 -7.11 #f) ;; left rollover bumper (lightbulb 13 5.7 #f) ;; right rollover bumper (lightbulb 2 -9.4 #f) ;; left side special (lightbulb 5.5 4.75 #f) ;; target row bumper (lightbulb -2 -8.7 #f) ;; left side bumper (lightbulb -1.8 6.7 #f) ;; right side bumper (lightbulb -8.1 -6.4 #f) ;; left kickout bumper (lightbulb -8.1 4.4 #f) ;; right kickout bumper ;; the scene (make-base) (make-walls) (make-tops) (make-left-side-special) (make-four-rollover-slots) (make-right-rollover-bumper) (make-left-rollover-bumper) (make-target-row) (make-bumpers) (make-disk-target) (make-side-poly-bumpers) (make-kickout-bumpers) (make-flippers) (make-railings) ;; pinball (if (and placepinball (not makemap)) (separator (pinball)) ) ) (if #f (render 'format '(1280 1024) ;; 'format '(240 180) ;; 'render-shadow-maps #t ;; 'remove-shadow-maps #f ;; 'option '(ri-option "shadow" 'bias0 0.05) ;; 'option '(ri-option "shadow" 'bias1 0.15) ;; 'option '(ri-pixel-samples 1 1) ;; 'option '(ri-pixel-filter "box" 1 1) 'display-type "tiff" 'display-name "frames/image-pinball.19" ) ) (if #f (render 'camera "overheadrender" 'format '(500 1000) ;; 'option '(ri-pixel-samples 1 1) ;; 'option '(ri-pixel-filter "box" 1 1) 'display-type "tiff" 'display-name "frames/image-pinball.17" ) ) ;; shader strip tests (if #f (for i 2 5 1 (begin (set! Ka (/ i 5)) (for j 2 5 1 (begin (set! Ks (/ j 5)) (render ;; 'format '(640 484) 'format '(240 180) 'option '(ri-pixel-samples 1 1) 'option '(ri-pixel-filter "gaussian" 3 3) ) )) ))) ;; environment map maker (if makemap (begin (set! placepinball #f) (render 'format '128 'camera "env0px" 'display-type "tiff" 'display-name "env0px") (render 'format '128 'camera "env0nx" 'display-type "tiff" 'display-name "env0nx") (render 'format '128 'camera "env0py" 'display-type "tiff" 'display-name "env0py") (render 'format '128 'camera "env0ny" 'display-type "tiff" 'display-name "env0ny") (render 'format '128 'camera "env0pz" 'display-type "tiff" 'display-name "env0pz") (render 'format '128 'camera "env0nz" 'display-type "tiff" 'display-name "env0nz") (set! placepinball #t) (set! makemap #f) (render 'option '(ri-make-cube-face-environment "env0px" "env0nx" ;; input images (TIFF) "env0py" "env0ny" "env0pz" "env0nz" "cube.tex" ;; output 92 ;; field of view "catmull-rom" 3 3) ;; filter and filterwidth 'format '(64 48) 'remove-ribfile #f ) ))