public void build() { DestroyRenderAreaTexture(); texture = new Texture2D(200, 200); GameObject.Find("ViewRectangle").GetComponent <MeshRenderer> ().material.mainTexture = texture; vp = new ViewPlane(texture.width, texture.height, 1.0f, 256); background_color = Constants.black; tracer_ptr = new RayCastTracer(this); Jittered jit = new Jittered(256); AmbientOccluder ambocl = new AmbientOccluder(); ambocl.scale_radiance(1.0f); ambocl.set_color(Constants.white); ambocl.set_minAmount(Constants.black); ambocl.SetSampler(jit); set_ambient_light(ambocl); PerspectiveCamera pinhole_ptr1 = new PerspectiveCamera(); pinhole_ptr1.set_eye(new Vector3(0, 0, 500)); pinhole_ptr1.set_lookat(Vector3.zero); pinhole_ptr1.set_view_distance(600.0f); pinhole_ptr1.compute_uvw(); set_camera(pinhole_ptr1); Directional directional = new Directional(); directional.set_color(new Color(1, 1, 1, 1)); directional.set_direction(new Vector3(-1, -1, 0)); directional.cast_shadows = true; directional.scale_radiance(3.0f); add_light(directional); Matte mat_ptr = new Matte(); mat_ptr.set_ka(0.25f); mat_ptr.set_kd(0.65f); mat_ptr.set_cd(new Color(1, 1, 0, 1)); Sphere sphere = new Sphere(); sphere.sphereCenter = new Vector3(0, 0, 0); sphere.sphereRad = 20.0f; sphere.set_material(mat_ptr); Instance sphereInst = new Instance(sphere); sphereInst.set_material(mat_ptr); add_object(sphereInst); sphereInst.set_identity(); sphereInst.Shear(1.15f, 0.6f, 1.2f, 1.8f, 2.2f, 2.4f); render_scene(); }
public void Build() { lights = new List <PointLight>(); objects = new List <Primitive>(); backgroundColor = RGBColor.BLACK; //camera = new OrthogonalCamera(600, 480); int sceneWidth = 240; int sceneHeight = 240; camera = new PerspectiveCamera(new Vector3(0, 0, 80), new Vector3(0, 0, -1), 50, sceneWidth, sceneHeight); //50 jittered = new Jittered(9); //tracer = new MultipleObjectsTracer(this); tracer = new Whitted(this, 10); Material.Material orangeMaterial = new Phong(Color.Orange, 0.8, 1, 30); Material.Material redMaterial = new Lambertian(Color.PowderBlue); Material.Material blueMaterial = new Lambertian(RGBColor.NAVY_BLUE); Material.Material grayMaterial = new Phong(Color.LightGray, 0.8, 1, 30); Material.Material yellowMaterial = new Phong(Color.Yellow, 0.8, 1, 30); Material.Material skyBlueMaterial = new Phong(Color.SkyBlue, 0.8, 1, 30); Material.Material refMat = new Reflective(RGBColor.WHITE, 0, 1, 350, 1); Material.Material refMat1 = new Reflective(RGBColor.WHITE, 0.5, 1, 350, 0.5); Material.Material lamb = new Lambertian(RGBColor.SKY_BLUE); Material.Material refractiveMat = new Refractive(RGBColor.WHITE, 0, 1, 350, 1); Quad wall1 = new Quad(new Vector3(-30, 30, 30), new Vector3(-30, -30, 30), new Vector3(-15, 15, -15), new Vector3(-15, -15, -15)); //wall1.AddQuadToScene(this, skyBlueMaterial); Triangle t1 = new Triangle(new Vector3(-30, 30, 30), new Vector3(-30, -30, 30), new Vector3(-20, 20, -15), new Vector3(1, 0, 0)); t1.Material = redMaterial; AddObject(t1); Triangle t2 = new Triangle(new Vector3(-30, -30, 30), new Vector3(-20, 20, -15), new Vector3(-20, -20, -15), new Vector3(1, 0, 0)); t2.Material = redMaterial; AddObject(t2); Triangle t3 = new Triangle(new Vector3(30, 30, 30), new Vector3(30, -30, 30), new Vector3(20, 20, -15), new Vector3(-1, 0, 0)); t3.Material = blueMaterial; AddObject(t3); Triangle t4 = new Triangle(new Vector3(30, -30, 30), new Vector3(20, 20, -15), new Vector3(20, -20, -15), new Vector3(-1, 0, 0)); t4.Material = blueMaterial; AddObject(t4); Triangle t5 = new Triangle(new Vector3(-30, -30, 30), new Vector3(-20, -20, -15), new Vector3(30, -30, 30), new Vector3(0, 1, 0)); t5.Material = grayMaterial; AddObject(t5); Triangle t6 = new Triangle(new Vector3(30, -30, 30), new Vector3(-20, -20, -15), new Vector3(20, -20, -15), new Vector3(0, 1, 0)); t6.Material = grayMaterial; AddObject(t6); Triangle t7 = new Triangle(new Vector3(-20, 20, -15), new Vector3(-20, -20, -15), new Vector3(20, 20, -15), new Vector3(0, 0, 1)); t7.Material = grayMaterial; AddObject(t7); Triangle t8 = new Triangle(new Vector3(20, 20, -15), new Vector3(20, -20, -15), new Vector3(-20, -20, -15), new Vector3(0, 0, 1)); t8.Material = grayMaterial; AddObject(t8); Triangle t9 = new Triangle(new Vector3(-30, 30, 30), new Vector3(30, 30, 30), new Vector3(-20, 20, -15), new Vector3(0, -1, 0)); t9.Material = grayMaterial; AddObject(t9); Triangle t10 = new Triangle(new Vector3(30, 30, 30), new Vector3(-20, 20, -15), new Vector3(20, 20, -15), new Vector3(0, -1, 0)); t10.Material = grayMaterial; AddObject(t10); Sphere sphere = new Sphere(new Vector3(-5, 10, 10), 8); sphere.Material = refractiveMat; AddObject(sphere); Sphere sphere1 = new Sphere(new Vector3(10, 0, 12), 5); sphere1.Material = orangeMaterial; AddObject(sphere1); sphere1 = new Sphere(new Vector3(-4, -6, 15), 6); sphere1.Material = refMat; AddObject(sphere1); Plane plane = new Plane(new Vector3(0, -5, 0), new Vector3(0, 1, 0)); plane.Material = orangeMaterial; //AddObject(plane); Mesh mesh = new Mesh("ico.obj"); // mesh.AddModelToScene(this, yellowMaterial); PointLight light = new PointLight(new Vector3(0, 17, 50), RGBColor.WHITE); AddLight(light); /*sphere = new Sphere(new Vector3(0, -10, 0), 5); * sphere.Material = yellowMaterial; * //AddObject(sphere); * * Triangle triangle = new Triangle(new Vector3(0, 0, 10), new Vector3(10, 0, 10), new Vector3(10, 10, 10), new Vector3(0, 0, 1)); * triangle.Material = orangeMaterial; * //AddObject(triangle); * * Mesh mesh = new Mesh("ico.obj"); * mesh.AddModelToScene(this, yellowMaterial); * * Plane plane = new Plane(new Vector3(0,0,-40), new Vector3(0,0,1)); * Material.Material lamb2 = new Lambertian(RGBColor.DARK_SALMON); * Material.Material refMat = new Reflective(RGBColor.GREEN, 0.8, 1, 30, 0.1); * plane.Material = lamb2; * AddObject(plane);*/ // PointLight light = new PointLight(new Vector3(-25, 0, 20), Color.White); // AddLight(light); // PointLight light1 = new PointLight(new Vector3(25, 0, 20), Color.White); // AddLight(light1); // Sphere sphere = new Sphere(new Vector3(0, 0, 0), 10); /* Triangle t7 = new Triangle(new Vector3(0, 0, 0), new Vector3(10, 0, 0), new Vector3(10, 10, 0), new Vector3(0, 0, 1)); * t7.Material = grayMaterial; * * * Bitmap textureBitmap = new Bitmap("test.png"); * RectangularMapping sphericalMapping = new RectangularMapping(); * ImageTexture imageTexture = new ImageTexture(textureBitmap, sphericalMapping); * * LambertianTexture textureMaterial = new LambertianTexture(imageTexture); * * * t7.Material = textureMaterial; * AddObject(t7); * PointLight light = new PointLight(new Vector3(20, 0, 40), Color.White); * AddLight(light);*/ }
public void build() { DestroyRenderAreaTexture(); texture = new Texture2D(200, 200); GameObject.Find("ViewRectangle").GetComponent <MeshRenderer> ().material.mainTexture = texture; vp = new ViewPlane(texture.width, texture.height, 1.0f, 1); vp.max_depth = 5; background_color = Constants.white; tracer_ptr = new Whitted(this); Jittered jit = new Jittered(1); AmbientOccluder ambocl = new AmbientOccluder(); ambocl.scale_radiance(1.0f); ambocl.set_color(Constants.white); ambocl.set_minAmount(Constants.black); ambocl.SetSampler(jit); set_ambient_light(ambocl); PerspectiveCamera pinhole_ptr1 = new PerspectiveCamera(); pinhole_ptr1.set_eye(new Vector3(0, 0, 500)); pinhole_ptr1.set_lookat(Vector3.zero); pinhole_ptr1.set_view_distance(600.0f); pinhole_ptr1.compute_uvw(); set_camera(pinhole_ptr1); Directional directional = new Directional(); directional.set_color(new Color(1, 1, 1, 1)); directional.set_direction(new Vector3(-1, -1, 0)); directional.cast_shadows = true; directional.scale_radiance(3.0f); add_light(directional); Dielectric mat_ptr = new Dielectric(); mat_ptr.set_eta_in(0.8f); mat_ptr.set_eta_in(1.2f); mat_ptr.set_cf_in(new Color(0.0f, 1.0f, 0.8f, 1)); mat_ptr.set_cf_out(new Color(0.75f, 1.0f, 0.4f, 1)); mat_ptr.set_ks(0.5f); mat_ptr.set_exp(100.0f); mat_ptr.set_ior(1.2f); Sphere sph = new Sphere(); sph.sphereCenter = Vector3.zero; sph.sphereRad = 1.0f; sph.set_material(mat_ptr); Instance sphInst = new Instance(sph); sphInst.set_material(mat_ptr); add_object(sphInst); sphInst.set_identity(); sphInst.Scale(40, 40, 1); sphInst.Translate(0.0f, 0.0f, -60); Dielectric mat_ptr1 = new Dielectric(); mat_ptr.set_eta_in(0.2f); mat_ptr.set_eta_in(0.4f); mat_ptr1.set_cf_in(new Color(0.0f, 1.0f, 0.0f, 1)); mat_ptr1.set_cf_out(new Color(0.75f, 1.0f, 0.0f, 1)); mat_ptr1.set_ks(0.8f); mat_ptr1.set_exp(100.0f); mat_ptr1.set_ior(1.52f); Rectangle rect1 = new Rectangle(Vector3.zero, new Vector3(1, 0, 0), new Vector3(0, 1, 0)); rect1.set_material(mat_ptr1); Instance rect1Inst = new Instance(rect1); rect1Inst.set_material(mat_ptr1); add_object(rect1Inst); rect1Inst.set_identity(); rect1Inst.Scale(80, 80, 1); rect1Inst.Translate(-40, -40, 0.0f); render_scene(); }