private void CreateScene() { scene = new Scene(); scene.camera = new TrackBallCamera(trackballTumbleWidget); //scene.background = new Background(new RGBA_Floats(0.5, .5, .5), 0.4); scene.background = new Background(new RGBA_Floats(1, 1, 1, 0), 0.6); AddTestMesh(loadedMeshGroups); allObjects = BoundingVolumeHierarchy.CreateNewHierachy(renderCollection); allObjectsHolder = new Transform(allObjects); //allObjects = root; scene.shapes.Add(allObjectsHolder); //AddAFloor(); //add two lights for better lighting effects //scene.lights.Add(new Light(new Vector3(5000, 5000, 5000), new RGBA_Floats(0.8, 0.8, 0.8))); scene.lights.Add(new PointLight(new Vector3(-5000, -5000, 3000), new RGBA_Floats(0.5, 0.5, 0.5))); }
private void CreateScene() { scene = new Scene(); scene.camera = new TrackBallCamera(trackballTumbleWidget); scene.background = new Background(new RGBA_Floats(0.5, .5, .5), 0.4); AddBoxAndSheresBooleanTest(); //AddBoxAndBoxBooleanTest(); #if false renderCollection.Add(new BoxShape(new Vector3(), new Vector3(1, 1, 1), new SolidMaterial(new RGBA_Floats(.9, .2, .1), .01, 0.0, 2.0))); renderCollection.Add(new BoxShape(new Vector3(.5,.5,.5), new Vector3(1.5, 1.5, 1.5), new SolidMaterial(new RGBA_Floats(.9, .2, .1), .01, 0.0, 2.0))); #endif //renderCollection.Add(new CylinderShape(.25, 1, new SolidMaterial(RGBA_Floats.Cyan, 0, 0, 0))); //AddTestStl(); //AddPolygonTest(); //AddSphereAndBox(); //AddAxisMarker(); //AddCubeOfShperes(); //renderCollection.Add(MakerGearXCariage()); allObjects = BoundingVolumeHierarchy.CreateNewHierachy(renderCollection); allObjectsHolder = new Transform(allObjects); //allObjects = root; scene.shapes.Add(allObjectsHolder); //AddAFloor(); //add two lights for better lighting effects scene.lights.Add(new PointLight(new Vector3(5000, 5000, 5000), new RGBA_Floats(0.8, 0.8, 0.8))); scene.lights.Add(new PointLight(new Vector3(-5000, -5000, 3000), new RGBA_Floats(0.5, 0.5, 0.5))); }
private void AddBoxAndSheresBooleanTest() { BoxShape box1 = new BoxShape(new Vector3(.5, .5, .5), new Vector3(1.5, 1.5, 1.5), new SolidMaterial(RGBA_Floats.Green, 0, 0, 0));//.01, 0.0, 2.0)); List<IPrimitive> subtractShapes = new List<IPrimitive>(); SolidMaterial material = new SolidMaterial(RGBA_Floats.Red, 0, 0, 0); #if false // two big spheres. Looks good. subtractShapes.Add(new SphereShape(new Vector3(.5, .5, 1), .6, material)); subtractShapes.Add(new SphereShape(new Vector3(1.5, .5, 1), .6, material)); Transform cylinder = new Transform(new CylinderShape(.1, 3, material)); cylinder.MoveToAbsolute(1, 1, 1); cylinder.RotateRelative(.1, .6, .6); //subtractShapes.Add(cylinder); //renderCollection.Add(cylinder); #else for (int z = 0; z < 6; z++) { for (int y = 0; y < 6; y++) { for (int x = 0; x < 6; x++) { subtractShapes.Add(new SphereShape(new Vector3(x * .2 + .5, y * .2 + .5, z * .2 + .5), .1, material)); //subtractShapes.Add(new SphereShape(new Vector3(x * .2 + .5, y * .2 + .5, z * .2 + .5), .13, material)); } } } #endif IPrimitive subtractGroup = BoundingVolumeHierarchy.CreateNewHierachy(subtractShapes); Difference merge = new Difference(box1, subtractGroup); renderCollection.Add(merge); }
public void RenderRecursive(Transform objectToProcess, int level = 0) { RenderBounds(objectToProcess.GetAxisAlignedBoundingBox()); transform.Push(objectToProcess.Transform); RenderRecursive((dynamic)objectToProcess.Child, level + 1); }