1<?php 2 3require_once 'Image/3D.php'; 4// resize image according to this factor 5$factor = 5; 6 7$world = new Image_3D(); 8$world->setColor(new Image_3D_Color(255, 255, 255)); 9 10$light = $world->createLight('Light', array(-4 * $factor, -4 * $factor, 0)); 11$light->setColor(new Image_3D_Color(255, 255, 255, 100)); 12$lightSphere = $world->createObject('sphere', array('r' => $factor, 'detail' => 0)); 13$lightSphere->transform($world->createMatrix('Move', array(-4 * $factor, -4 * $factor, 0))); 14$lightSphere->setColor(new Image_3D_Color(255, 255, 255, 100)); 15 16$light = $world->createLight('Light', array(4 * $factor, -4 * $factor, 0)); 17$light->setColor(new Image_3D_Color(255, 255, 255, 100)); 18$lightSphere = $world->createObject('sphere', array('r' => $factor, 'detail' => 0)); 19$lightSphere->transform($world->createMatrix('Move', array(4 * $factor, -4 * $factor, 0))); 20$lightSphere->setColor(new Image_3D_Color(255, 255, 255, 100)); 21 22$p = array(); 23$bottom = $world->createObject('polygon', array( 24 new Image_3D_Point(-5 * $factor, 3 * $factor, 5 * $factor), 25 new Image_3D_Point(-5 * $factor, 3 * $factor, -5 * $factor), 26 new Image_3D_Point(5 * $factor, 3 * $factor, -5 * $factor), 27 new Image_3D_Point(5 * $factor, 3 * $factor, 5 * $factor), 28)); 29$bottom->setColor(new Image_3D_Color(200, 200, 200, 0, .6)); 30 31$top = $world->createObject('polygon', array( 32 new Image_3D_Point(-5 * $factor, 5 * $factor, 5 * $factor), 33 new Image_3D_Point(5 * $factor, 5 * $factor, 5 * $factor), 34 new Image_3D_Point(5 * $factor, -5 * $factor, 5 * $factor), 35 new Image_3D_Point(-5 * $factor, -5 * $factor, 5 * $factor), 36)); 37$top->setColor(new Image_3D_Color(200, 200, 200, 0, .5)); 38 39$redPlane = $world->createObject('polygon', array( 40 new Image_3D_Point(-5 * $factor, 1 * $factor, 2 * $factor), 41 new Image_3D_Point(-5 * $factor, 1 * $factor, -2 * $factor), 42 new Image_3D_Point(-1 * $factor, -1 * $factor, -2 * $factor), 43 new Image_3D_Point(-1 * $factor, -1 * $factor, 2 * $factor), 44)); 45$redPlane->setColor(new Image_3D_Color(255, 0, 0, 100, 0)); 46 47$bluePlane = $world->createObject('polygon', array( 48 new Image_3D_Point(5 * $factor, 1 * $factor, 2 * $factor), 49 new Image_3D_Point(5 * $factor, 1 * $factor, -2 * $factor), 50 new Image_3D_Point(1 * $factor, -1 * $factor, -2 * $factor), 51 new Image_3D_Point(1 * $factor, -1 * $factor, 2 * $factor), 52)); 53$bluePlane->setColor(new Image_3D_Color(100, 100, 255, 0, 0)); 54 55$world->transform($world->createMatrix('Rotation', array(10, 0, 0))); 56 57if (!@$argv[1]) { 58 // Create normal GD picture with projection 59 echo "Render with projection.\n"; 60 61 $renderer = $world->createRenderer('perspectively'); 62 $driver = $world->createDriver('GD'); 63 $world->render(15 * $factor, 15 * $factor, 'Image_3D_No_Raytrace.png'); 64} else { 65 // Raytrace advanced crazy picture 66 echo "RAYTRACE!\n"; 67 68 $renderer = $world->createRenderer('Raytrace'); 69 70 // Define the cameras position 71 $renderer->setCameraPosition(new Image_3D_Coordinate(0, 0, -50 * $factor)); 72 73 // define antialiasing level 74 $renderer->setRaysPerPixel(2); 75 76 // Set recursive scan depth 77 $renderer->scanDepth(3); 78 79 // Enable shadows 80 $renderer->enableShadows(true); 81 82 $world->render(15 * $factor, 15 * $factor, 'Image_3D_Raytrace.png'); 83} 84 85echo $world->stats(); 86 87