# Test Scene 3 # Intended to show transforms # I know it's not the most exciting of scenes... size 640 480 camera 0 -4 4 0 -1 0 0 1 1 45 maxverts 8 vertex -1 -1 -1 vertex +1 -1 -1 vertex +1 +1 -1 vertex -1 +1 -1 vertex -1 -1 +1 vertex +1 -1 +1 vertex +1 +1 +1 vertex -1 +1 +1 pushTransform # The basic camera transform to return to for new parts # The actual cube definition. Since no instancing is supported, I will just # repeat this to create many cubes. For extra credit, you can implement # instancing to make this simpler. Alternatively, define a ray-cube # intersection test. ambient .7 .7 1 scale 2 1 .25 tri 0 1 5 tri 0 5 4 tri 3 7 6 tri 3 6 2 tri 1 2 6 tri 1 6 5 tri 0 7 3 tri 0 4 7 tri 0 3 2 tri 0 2 1 tri 4 5 6 tri 4 6 7 popTransform pushTransform # This idiom restores the camera transform and pushes it back on the stack # Now, I draw the 4 legs of the table. # Note that like OpenGL, commands right-multiply ambient .7 .7 .4 translate -1.75 -.8 -.25 translate 0 0 -2.0 scale 0.15 0.15 2.0 tri 0 1 5 tri 0 5 4 tri 3 7 6 tri 3 6 2 tri 1 2 6 tri 1 6 5 tri 0 7 3 tri 0 4 7 tri 0 3 2 tri 0 2 1 tri 4 5 6 tri 4 6 7 # leg 2: Note that I'm only changing a single translation command. popTransform pushTransform translate +1.75 -.8 -.25 translate 0 0 -2.0 scale 0.15 0.15 2.0 tri 0 1 5 tri 0 5 4 tri 3 7 6 tri 3 6 2 tri 1 2 6 tri 1 6 5 tri 0 7 3 tri 0 4 7 tri 0 3 2 tri 0 2 1 tri 4 5 6 tri 4 6 7 # leg 3: Note that I'm only changing a single translation command. popTransform pushTransform translate +1.75 +.8 -.25 translate 0 0 -2.0 scale 0.15 0.15 2.0 tri 0 1 5 tri 0 5 4 tri 3 7 6 tri 3 6 2 tri 1 2 6 tri 1 6 5 tri 0 7 3 tri 0 4 7 tri 0 3 2 tri 0 2 1 tri 4 5 6 tri 4 6 7 # leg 4: Note that I'm only changing a single translation command. popTransform pushTransform translate -1.75 +.8 -.25 translate 0 0 -2.0 scale 0.15 0.15 2.0 tri 0 1 5 tri 0 5 4 tri 3 7 6 tri 3 6 2 tri 1 2 6 tri 1 6 5 tri 0 7 3 tri 0 4 7 tri 0 3 2 tri 0 2 1 tri 4 5 6 tri 4 6 7 # Now draw the spheres ambient 0 1 0 popTransform pushTransform translate 0 0 0.5 rotate 0 0 1 45 scale 1.0 0.25 0.25 sphere 0 0 0 1 ambient 1 0 0 popTransform pushTransform translate 0 0 0.5 rotate 0 0 1 -45 scale 1.0 0.25 0.25 sphere 0 0 0 1 ambient 0 1 1 popTransform pushTransform translate -1.5 -.8 0.65 scale 0.4 0.4 0.4 sphere 0 0 0 1 ambient 0 1 1 popTransform pushTransform translate 1.5 -.8 0.65 scale 0.4 0.4 0.4 sphere 0 0 0 1 ambient 0 1 1 popTransform pushTransform translate 1.5 .8 0.65 scale 0.4 0.4 0.4 sphere 0 0 0 1 ambient 0 1 1 popTransform pushTransform translate -1.5 .8 0.65 scale 0.4 0.4 0.4 sphere 0 0 0 1