Ejemplo n.º 1
0
        public static World Create()
        {
            var world = new World(new Camera(new Vector3(-6, 6, 0),
                                             new Quaternion(MathHelper.DegreesToRadians(10), MathHelper.DegreesToRadians(30), 0)));

            var environment = new HDRTexture(@"assets/textures/stpeters_cross.hdr", 80000);

            world.Environent = new EnvironmentBox(new CubeMapTexture(environment));
            world.Environent.AmbientLight = new Vector3(0.87f, 0.56f, 0.46f) * 0.05f;


            world.addObject(new Plane(new Vector3(0, 0, 0), Quaternion.Identity)
            {
                Material =
                {
                    Diffuse = new Vector3(0.6f),
                    Texture = new DiffuseTexture("assets/textures/wood.png", 8)
                }
            });

            var mesh = new Mesh(new Vector3(0, 0, 7), Quaternion.Identity)
            {
                Material =
                {
                    Diffuse     = new Vector3(1, 0.686f, 0.278f),
                    Specular    = new Vector3(1, 0.686f, 0.278f),
                    Shinyness   =            20,
                    IsDielectic = true,
                    //Roughness = 0.2f,
                    Reflectivity = 0.6f
                },
                Scale = new Vector3(1f),
            };

            mesh.ImportMesh("assets/models/stanford.obj");
            world.addObject(mesh);

            world.addLight(new PointLight(new Vector3(0, 60, -40), Vector3.One, 120000));

//            world.addLight(new PointLight(new Vector3(0, 70, -50), Vector3.One, 120000));
//            world.addLight(new PointLight(new Vector3(30, 90, 40), Vector3.One, 120000));

            return(world);
        }
Ejemplo n.º 2
0
        public static World CreateTestScene()
        {
            var world = new World(new Camera(new Vector3(-2f),
                                             new Quaternion(MathHelper.DegreesToRadians(35), MathHelper.DegreesToRadians(-35), 0)));
            var environment = new HDRTexture(@"assets/textures/uffizi_cross.hdr", 100000);

            world.Environent = new EnvironmentBox(new CubeMapTexture(environment));
            world.Environent.AmbientLight = new Vector3(0.87f, 0.56f, 0.46f) * 0.05f;

            var sphere = new Sphere(new Vector3(0), 1, Quaternion.Identity)
            {
                Material =
                {
                    Diffuse = new Vector3(1.0f, .5f, .5f)
                }
            };
            //world.addObject(sphere);
            var mesh = new Mesh(Vector3.Zero, Quaternion.Identity)
            {
                Material =
                {
                    Diffuse = new Vector3(1, 0.5f, 0.5f)
                },
                Scale = new Vector3(.5f)
            };

            mesh.ImportMesh("assets/models/teapot.obj");
            world.addObject(mesh);

            world.addObject(new Plane(new Vector3(0, -3, 0), Quaternion.Identity)
            {
                Material =
                {
                    Diffuse      = new Vector3(1),
                    IsDielectic  = true,
                    Reflectivity = .7f
                }
            });

            world.addObject(new Plane(new Vector3(0, 3, 0), new Quaternion(MathHelper.DegreesToRadians(180), 0, 0))
            {
                Material =
                {
                    Diffuse      = new Vector3(1),
                    IsDielectic  = true,
                    Reflectivity = .7f
                }
            });

            world.addObject(new Plane(new Vector3(0, 0, 3), new Quaternion(MathHelper.DegreesToRadians(90), 0, 0))
            {
                Material =
                {
                    Diffuse      = new Vector3(1),
                    IsDielectic  = true,
                    Reflectivity = .7f
                }
            });

            world.addObject(new Plane(new Vector3(0, 0, -3), new Quaternion(MathHelper.DegreesToRadians(-90), 0, 0))
            {
                Material =
                {
                    Diffuse      = new Vector3(1),
                    IsDielectic  = true,
                    Reflectivity = .7f
                }
            });

            world.addObject(new Plane(new Vector3(-3, 0, 0), new Quaternion(0, 0, MathHelper.DegreesToRadians(90)))
            {
                Material =
                {
                    Diffuse      = new Vector3(1),
                    IsDielectic  = true,
                    Reflectivity = .7f
                }
            });

            world.addObject(new Plane(new Vector3(3, 0, 0), new Quaternion(0, 0, MathHelper.DegreesToRadians(-90)))
            {
                Material =
                {
                    Diffuse      = new Vector3(1),
                    IsDielectic  = true,
                    Reflectivity = .7f
                }
            });

            world.addLight(new SphereAreaLight(new Vector3(1.5f, -1.5f, 1.5f), new Vector3(0.5f, 0.4f, 0.4f), 150)
            {
                Radius = .5f
            });
            world.addLight(new SphereAreaLight(new Vector3(-1.5f, 1.5f, -1.5f), new Vector3(0.5f, 0.4f, 0.4f), 150)
            {
                Radius = .5f
            });

            return(world);
        }
Ejemplo n.º 3
0
        public static World Create()
        {
            var world = new World(new Camera(new Vector3(3, 4, 0.5f),
                                             new Quaternion(MathHelper.DegreesToRadians(0), MathHelper.DegreesToRadians(-0), 0)));
            var environment = new HDRTexture(@"assets/textures/kitchen_cross.hdr", 100000);

            world.Environent = new EnvironmentBox(new CubeMapTexture(environment));
            world.Environent.AmbientLight = new Vector3(0.87f, 0.56f, 0.46f) * 0.05f;

            var plane = new Plane(new Vector3(0, -2, 0), Quaternion.Identity)
            {
                Material =
                {
                    Diffuse      = new Vector3(0.2f),
                    IsDielectic  = true,
                    Reflectivity =                                           0.3f,
                    Texture      = new DiffuseTexture(@"assets/textures/wall.png", 5f)
                }
            };

            world.addObject(plane);

            var mesh1 = new Mesh(new Vector3(9, 0, 8), Quaternion.Identity)
            {
                Material =
                {
                    Diffuse = new Vector3(.5f)
                },
                Scale = new Vector3(1f),
            };

            mesh1.ImportMesh("assets/models/lamp.obj");
            world.addObject(mesh1);

            var mesh2 = new Mesh(new Vector3(0, 0, 5), Quaternion.Identity)
            {
                Material =
                {
                    IsMirror = true,
                    Diffuse  = new Vector3(1)
                },
                Scale = new Vector3(1)
            };

            mesh2.ImportMesh("assets/models/teapot.obj");
            world.addObject(mesh2);

            var mesh3 = new Mesh(new Vector3(45, 45, 55), Quaternion.Identity)
            {
                Material =
                {
                    Diffuse      = new Vector3(.5f, .7f, 1f),
                    IsDielectic  = true,
                    Reflectivity = .2f
                },
                Scale = new Vector3(1.5f)
            };

            mesh3.ImportMesh("assets/models/airplane.obj");
            world.addObject(mesh3);

            var mesh4 = new Mesh(new Vector3(-10, 25, 45), Quaternion.Identity)
            {
                Material =
                {
                    Diffuse = new Vector3(1f, .5f, .8f)
                },
                X     = 3,
                Z     = 1,
                Scale = new Vector3(.7f)
            };

            mesh4.ImportMesh("assets/models/dragon.obj");
            world.addObject(mesh4);

            var light1 = new PointLight(new Vector3(10, 30, 40), Vector3.One, 2500);

            world.addLight(light1);

            var light2 = new PointLight(new Vector3(8, 8f, 0), Vector3.One, 1500);

            world.addLight(light2);

            var light3 = new PointLight(new Vector3(30, 30, 40), Vector3.One, 1000);

            world.addLight(light3);

            return(world);
        }