# CSG rendering. # Colours to be used: DEFINE green PLASTIC { PHONG 1 COLOUR 0 1 0 0.00 0 1.00 } DEFINE blue PLASTIC { PHONG 1 COLOUR 1 0 0 0.00 0 1.00 } DEFINE red PLASTIC { PHONG 1 COLOUR 0 0 1 0.00 0 1.00 } DEFINE gold PLASTIC { PHONG 1 COLOUR 0 1 1 0.25 0 0.75 } # The three walls. DEFINE floor OBJECT { PLANE { ORIG 0 -1 0 NORMAL 0 1 0 # note absense of up vector. CHECKERBOARD { PLASTIC PHONG 1 COLOUR1 1 0 0 0.0 0 1 COLOUR2 0 1 0 0.0 0 1 DENSITY 2 2 2 } } } DEFINE wall OBJECT { PLANE { ORIG 0 0 8 NORMAL 0 0 -1 CHECKERBOARD { PLASTIC PHONG 1 COLOUR1 1 1 0 0.0 0 1 COLOUR2 0 1 1 0.0 0 1 DENSITY 2 2 2 } } } DEFINE wall2 OBJECT { PLANE { ORIG 2.7 0 0 NORMAL -1 0 0 CHECKERBOARD { PLASTIC PHONG 1 COLOUR1 0 0 1 0.0 0 1 COLOUR2 1 0 1 0.0 0 1 DENSITY 2 2 2 } } } # Polygons describing C, S, and G. DEFINE poly_c POLYGON 8 1 -.5 1 0 -.75 1 -.75 0 1 0 .75 1 1 0.5 1 0 1 1 -1 0 1 0 -1 1 DEFINE poly_s POLYGON 10 1 .3 1 0 1 1 -1 .3 1 .75 -.3 1 0 -.75 1 -1 -.3 1 0 -1 1 1 -.3 1 -.75 .3 1 0 .75 1 DEFINE poly_g POLYGON 11 1 -1 1 1 0 1 0 0 1 1 -.5 1 0 -.75 1 -.75 0 1 0 .75 1 1 0.5 1 0 1 1 -1 0 1 0 -1 1 # The three extruded surfaces based off the polygons DEFINE g OBJECT { PLANE { ORIG -1.1 0.5 4 NORMAL -1 0 0 VCTUP 0 1 0 FLIPX TRUE poly_g green } PLANE { ORIG 1.1 .5 4 NORMAL 1 0 0 VCTUP 0 1 0 poly_g green } EXTRUSION { START -1.1 END 1.1 ORIG 0 .5 4 NORMAL 1 0 0 VCTUP 0 1 0 poly_g green } } DEFINE c OBJECT { PLANE { ORIG 0 -0.6 4 NORMAL 0 -1 0 VCTUP 0 0 1 FLIPX TRUE poly_c red } PLANE { ORIG 0 1.6 4 NORMAL 0 1 0 VCTUP 0 0 1 poly_c red } EXTRUSION { START -1.1 END 1.1 ORIG 0 .5 4 NORMAL 0 1 0 VCTUP 0 0 1 poly_c red } } DEFINE s OBJECT { PLANE { ORIG 0 0.5 2.9 NORMAL 0 0 -1 VCTUP 0 1 0 FLIPX TRUE poly_s blue } PLANE { ORIG 0 0.5 5.1 NORMAL 0 0 1 VCTUP 0 1 0 poly_s blue } EXTRUSION { START -1.1 END 1.1 ORIG 0 .5 4 NORMAL 0 0 1 VCTUP 0 1 0 poly_s blue } } # The camera from which the frame will be rendered. DEFINE camera CAMERA { ORIG -2 2 0 LOOKDIR 0.5 -0.5 1 VCTUP 0 1 0 ORTHOGONALIZE TRUE # This causes up/left/lookat to be orthogonal FOCAL 1.5 PRINTSTATUS TRUE # Print current scan number. } # The scene to be rendered. SCENE { floor wall wall2 # This is the sphere with C, S, and G cut out of it: OBJ_BOOL { TYPE DIFF LEFT OBJ_BOOL { TYPE DIFF LEFT OBJ_BOOL { TYPE DIFF LEFT OBJECT { SPHERE { ORIG 0 0.5 4 RADIUS 1.1 gold } } RIGHT g } RIGHT c } RIGHT s } # These are the lights, at nigh-near infinity, set to project along # the x, y, and z axes. LIGHT { COLOUR 0.433 .433 .433 0 0 0 ORIG 0 40 4 } LIGHT { COLOUR 0.433 .433 .433 0 0 0 ORIG 0 0.5 -30 } LIGHT { COLOUR 0.433 .433 .433 0 0 0 ORIG -40 0.5 4 } # This sets the ambient light levels. AMBIENT 0.3 camera }