// Last edited on 2010-06-01 00:09:41 by stolfilocal // Caption: The camera rig with stage and view pyramid. global_settings { assumed_gamma 2.2 } #declare eps = 0.001; // Skosh to keep surfaces from touching. #declare closeup = false; // Shows close-up view if true; full view if false. #declare explode = 0.0; // Explode parts if positive. background { color rgb <1.000, 1.000, 1.000> } #include "pst_axes.inc" #include "pst_textures.inc" #include "pst_stage.inc" #include "pst_camera_rig.inc" #declare scene_type = scene_mask; // Type of sample scene. #declare max_light_incl = 45; // Max nominal light inclination. #declare max_scene_wdt = 200; // Max X and Y extent of scene. #declare max_scene_hgt = 50; // Max Z extent of scene. // !!! Should compute these from the lens's focal length. !!! // Seems right for 25mm lens, Pike F-100 camera. #declare camera_rel_szX = 0.2727; // Viewfield width/distance. #declare camera_rel_szY = 0.2727; // Viewfield height/distance. #declare camera_height = 2000; // From floor to pinhole. #declare camera_reach = 500; // From basis axis to pinhole. #declare stage_foot_hgt = 0; // Height of stage feet (0 if none). #declare stage_handle_pos = stage_plate_szX/2 - 15; // Position of handles. #declare scene = union{ object{ camera_rig(camera_height,camera_reach,explode) } object{ camera_view_pyramid(camera_height,camera_reach,camera_rel_szX,camera_rel_szY) } object{ stage( stage_foot_hgt, stage_handle_pos, max_scene_wdt, max_scene_hgt, scene_type, max_light_incl, explode ) rotate 90*z translate camera_reach*x } } #declare scene_min = min_extent(scene); #declare scene_max = max_extent(scene); #declare scene_rad = vlength(scene_max - scene_min)/2; #declare scene_ctr = (scene_min + scene_max)/2; object{ scene } // object{ axes(1.5,600) no_shadow } #if (closeup) // For debugging. Edit these as needed. #declare viewAzim = 65.0; #declare viewElev = 20.0; #declare viewRadius = 150.0; #declare viewDist = 5*viewRadius; // #declare viewCenter = < 300, 0, 1700 >; #declare viewCenter = < 0, 0, 250 >; #else // For production figures. Edit with care. #declare viewAzim = 35; #declare viewElev = 25.0; #declare viewDist = 8*scene_rad; #declare viewRadius = 0.90*scene_rad; #declare viewCenter = scene_ctr; #end #include "pst_camlight.inc" camlight(viewCenter, viewAzim, viewElev, viewDist, viewRadius, z, 2, 1.00)