public Scene CreateScene()
        {
            var defaultMaterial = new Material(new DiffuseReflectanceMaterial(new Spectrum(0.5f)));

            Illuminarium.IO.ISceneLoader loader = new Illuminarium.IO.SceneLoader3ds((float)1, defaultMaterial);
            var scene = loader.LoadFromFile("TestScenes\\3ds\\sponza.3ds");

            scene.Lights.Add(new RectangleLight(new Point3D(0, scene.Lights[0].Position.Y, 5f), 14f, 0.5f, new Spectrum(1), defaultMaterial, 4));
            //scene.Lights.Add( new RectangleLight( new Point3D( 0, scene.Lights[0].Position.Y, 9f ), 14f, 0.5f, new Specturm( 1 ) ) );
            //scene.Lights.Add( new RectangleLight( new Point3D( 0, scene.Lights[0].Position.Y, 12f ), 14f, 0.5f, new Specturm( 1 ) ) );
            scene.Lights.RemoveAt(0);
            //scene.Lights[0].Position = new Point3D( scene.Lights[0].Position.X, scene.Lights[0].Position.Y, 6f );
            //scene.Lights[0].Position = new Point3D( scene.Lights[0].Position.X, scene.Lights[0].Position.Y, 6f );
            //scene.Lights.Add( new PointLight( "", new Point3D( 4, 0, 6 ) ) );
            //scene.Lights.Add( new PointLight( "", new Point3D( -4, 0, 6 ) ) );


            scene.RecalcSceneParams();
            scene.CameraSetDefault();
            scene.Camera.Position = new Point3D(14f, 2f, 2f);
            scene.Camera.Target   = new Point3D(0f, 0f, 3f);

            // materials
            //var floor = new DiffuseReflectanceMirrorMaterial( new Spectrum( new float[Spectrum.Size] { 0.5f, 0.5f, 0.5f } ), new Spectrum( new float[Spectrum.Size] { 0.1f, 0.1f, 0.1f } ) );
            var floor = new Material(new DiffuseReflectanceMaterial(new Spectrum(0.85f, 0.8f, 0.8f)));

            //var floor = new PhongReflectanceMaterial( new Specturm( new float[Specturm.Size] { 0.9f, 0.1f, 0.1f } ), 5f, 0.9f );
            foreach (var obj in scene.Objects.Where(x => x.Name.Contains("wall")).ToList())
            {
                foreach (var face in obj.Faces)
                {
                    face.Material = floor;
                }
            }

            var arc = new Material(new DiffuseReflectanceMaterial(new Spectrum(1f, 1f, 1f)));

            foreach (var obj in scene.Objects.Where(x => x.Name.Contains("arc")).ToList())
            {
                foreach (var face in obj.Faces)
                {
                    face.Material = arc;
                }
            }

            var hole = new Material(new DiffuseReflectanceMaterial(new Spectrum(0f, 1f, 0f)));

            //var hole = new DiffuseReflectanceMirrorMaterial( new Spectrum( new float[Spectrum.Size] { 0.1f, 0.1f, 0.1f } ), new Spectrum( new float[Spectrum.Size] { 0.8f, 0.8f, 0.8f } ) );
            foreach (var obj in scene.Objects.Where(x => x.Name.Contains("pil")).ToList())
            {
                foreach (var face in obj.Faces)
                {
                    face.Material = hole;
                }
            }



            return(scene);
        }
Exemplo n.º 2
0
        public Scene CreateScene()
        {
            var defaultMaterial = new Material(new DiffuseReflectanceMaterial(new Spectrum(0.5f)));

            Illuminarium.IO.ISceneLoader loader = new Illuminarium.IO.SceneLoader3ds((float)1, defaultMaterial);
            var scene = loader.LoadFromFile("TestScenes\\3ds\\sphere.3ds");

            scene.RecalcSceneParams();
            scene.CameraSetDefault();
            //scene.Camera.Position = new Point3D( 0f, -6f, 2.5f );
            //scene.Camera.Target = new Point3D( 0f, 0f, 2.5f );

            // remove one wall for camera
            scene.Objects[0].Faces.RemoveAt(4);
            scene.Objects[0].Faces.RemoveAt(4);

            // lights
            scene.Lights.Clear();
            scene.Lights.Add(new RectangleLight(new Point3D(0f, 0f, 0f), 0.02f, 0.02f, new Spectrum(1), defaultMaterial, 4));


            return(scene);
        }
Exemplo n.º 3
0
        public Scene CreateScene()
        {
            var defaultMaterial = new Material(new DiffuseReflectanceMaterial(new Spectrum(0.5f)));

            Illuminarium.IO.ISceneLoader loader = new Illuminarium.IO.SceneLoader3ds((float)0.0254, defaultMaterial);
            var scene = loader.LoadFromFile("TestScenes\\3ds\\2PlaneWithTable.3ds");

            scene.RecalcSceneParams();
            scene.CameraSetDefault();
            scene.Camera.Position = new Point3D(3.25f, -3f, 2f);
            scene.Camera.Target   = new Point3D(-2.3f, 2.8f, 0.68f);

            // lights
            scene.Lights.Clear();
            //scene.Lights.Add( new PointLight( string.Empty, new Point3D( -3, 3, 2 ) ) );
            scene.Lights.Add(new RectangleLight(new Point3D(-1.2f, 1.5f, 2.5f), 1f, 1f, new Spectrum(1), defaultMaterial, 4));
            //scene.Lights.Add( new RectangleLight( new Point3D( 1f, -2f, 2.5f ), 1f, 1f, new Spectrum( 1 ) ) );

            //scene.Lights.Add( new PointLight( string.Empty, new Point3D( 0, 0, 1 ) ) );
            //scene.Lights.Add( new PointLight( string.Empty, new Point3D( -2, 2, 2 ) ) );
            //scene.Lights.Add( new PointLight( string.Empty, new Point3D( 2, -2, 2 ) ) );
            //scene.Lights.Add( new PointLight( string.Empty, new Point3D( -2, -2, 2 ) ) );

            // materials
            var pol     = new Material(new DiffuseReflectanceMaterial(new Spectrum(0.1f, 0.5f, 0.4f)));
            var potolok = new Material(new DiffuseReflectanceMaterial(new Spectrum(0.1f, 0.1f, 0.1f)));
            //new PhongReflectanceMaterial( new Spectrum( new float[3] { 0.9f, 0.9f, 0.9f } ), 20f, 0f ); //new DiffuseReflectanceMaterial( new Specturm( new float[3] { 0.9f, 0.9f, 0.9f } ) );
            var st = new Material(new PhongReflectanceMaterial(new Spectrum(0.5f, 0.3f, 0.1f), 64f, 0.0f));       //new DiffuseReflectanceMaterial( new Specturm( new float[3] { 0.5f, 0.3f, 0.1f } ) );
            var n  = new Material(new DiffuseReflectanceMaterial(new Spectrum(0.4f, 0.1f, 0.9f)));

            foreach (var face in scene.Objects[0].Faces)
            {
                face.Material = pol;
            }

            foreach (var face in scene.Objects[1].Faces)
            {
                face.Material = potolok;
            }

            foreach (var face in scene.Objects[6].Faces)
            {
                face.Material = st;
            }

            foreach (var face in scene.Objects[2].Faces)
            {
                face.Material = n;
            }

            foreach (var face in scene.Objects[3].Faces)
            {
                face.Material = n;
            }

            foreach (var face in scene.Objects[4].Faces)
            {
                face.Material = n;
            }

            foreach (var face in scene.Objects[5].Faces)
            {
                face.Material = n;
            }

            return(scene);
        }
Exemplo n.º 4
0
        public Scene CreateScene()
        {
            var defaultMaterial = new Material(new DiffuseReflectanceMaterial(new Spectrum(0.5f)));

            Illuminarium.IO.ISceneLoader loader = new Illuminarium.IO.SceneLoader3ds((float)1, defaultMaterial);
            var scene = loader.LoadFromFile("TestScenes\\3ds\\cornellbox.3ds");

            scene.RecalcSceneParams();
            scene.CameraSetDefault();
            scene.Camera.Position = new Point3D(0f, -6f, 2.5f);
            scene.Camera.Target   = new Point3D(0f, 0f, 2.5f);

            // remove one wall for camera
            scene.Objects[0].Faces.RemoveAt(4);
            scene.Objects[0].Faces.RemoveAt(4);

            //scene.Objects[0].Faces.RemoveAt( 8 );
            //scene.Objects[0].Faces.RemoveAt( 8 );


            // lights
            scene.Lights.Clear();
            scene.Lights.Add(new RectangleLight(new Point3D(0f, 0f, 4.98f), 1f, 1f, new Spectrum(1), defaultMaterial, 128));

            var floor = new Material(new DiffuseReflectanceMaterial(new Spectrum(0.54f, 0.54f, 0.54f)));

            //var floor = new Material( new PhongReflectanceMaterial( new Spectrum( 0.54f, 0.54f, 0.54f ), 16f, 1f ) );
            //var floor = new Material( new MirrorMaterial( new Spectrum( 0.9f, 0.9f, 0.9f ) ) );

            scene.Objects[0].Faces[0].Material = floor;
            scene.Objects[0].Faces[1].Material = floor;

            var ceiling = new Material(new DiffuseReflectanceMaterial(new Spectrum(0.84f, 0.84f, 0.84f)));

            //var ceiling = new Material( new PhongReflectanceMaterial( new Spectrum( 0.84f, 0.84f, 0.84f ), 128f, 1f ) );
            scene.Objects[0].Faces[2].Material = ceiling;
            scene.Objects[0].Faces[3].Material = ceiling;

            var rightWall = new Material(new DiffuseReflectanceMaterial(new Spectrum(0.0f, 0.0f, 1.0f)));

            //var rightWall = new Material( new PhongReflectanceMaterial( new Spectrum( 0.0f, 0.0f, 1.0f ), 64f, 1f ) );
            scene.Objects[0].Faces[4].Material = rightWall;
            scene.Objects[0].Faces[5].Material = rightWall;

            var backWall = new Material(new DiffuseReflectanceMaterial(new Spectrum(0.84f, 0.84f, 0.84f)));

            scene.Objects[0].Faces[6].Material = backWall;
            scene.Objects[0].Faces[7].Material = backWall;

            //var leftWall = new Material( new PhongReflectanceMaterial( new Spectrum( 1.0f, 1.0f, 1.0f ), 8f, 1f ) );
            var leftWall = new Material(new DiffuseReflectanceMaterial(new Spectrum(1.0f, 0.0f, 0.0f)));

            scene.Objects[0].Faces[8].Material = leftWall;
            scene.Objects[0].Faces[9].Material = leftWall;

            //var box1 = new Material( new MirrorMaterial( new Spectrum( 0.95f, 0.95f, 0.95f ) ) );
            //var box1 = new Material( new DiffuseReflectanceMaterial( new Spectrum( 0.9f, 0.9f, 0.9f ) ) );
            var box1 = new Material(new PhongReflectanceMaterial(new Spectrum(0.8f, 0.8f, 0.8f), 16f, 0.5f));

            foreach (var face in scene.Objects[1].Faces)
            {
                face.Material = box1;
            }

            //scene.Objects[1].Faces[10].Material = box1Mirror;
            //scene.Objects[1].Faces[11].Material = box1Mirror;


            //var box2 = new Material( new DiffuseReflectanceMaterial( new Spectrum( 0.8f, 0.8f, 0.8f ) ) );
            //var box2 = new Material( new MirrorMaterial( new Spectrum( 0.95f, 0.95f, 0.95f ) ) );
            var box2 = new Material(new PhongReflectanceMaterial(new Spectrum(0.8f, 0.0f, 0.0f), 64f, 0.5f));

            foreach (var face in scene.Objects[2].Faces)
            {
                face.Material = box2;
            }

            /*
             * scene.Objects.RemoveAt( 2 );
             * scene.Objects.RemoveAt( 1 );
             * scene.Objects[0].Faces.RemoveAt( 8 );
             * scene.Objects[0].Faces.RemoveAt( 8 );
             * scene.Objects[0].Faces.RemoveAt( 0 );
             * scene.Objects[0].Faces.RemoveAt( 0 );
             * scene.Objects[0].Faces.RemoveAt( 0 );
             * scene.Objects[0].Faces.RemoveAt( 0 );
             * scene.Objects[0].Faces.RemoveAt( 0 );
             * scene.Objects[0].Faces.RemoveAt( 0 );
             *
             */
            /*
             * scene.Objects.RemoveAt( 2 );
             * scene.Objects[1].Faces.RemoveAt( 4 );
             * scene.Objects[1].Faces.RemoveAt( 4 );
             * scene.Objects[1].Faces.RemoveAt( 4 );
             * scene.Objects[1].Faces.RemoveAt( 4 );
             * scene.Objects[1].Faces.RemoveAt( 4 );
             * scene.Objects[1].Faces.RemoveAt( 4 );
             * scene.Objects[1].Faces.RemoveAt( 4 );
             * scene.Objects[1].Faces.RemoveAt( 4 );
             * scene.Objects[1].Faces.RemoveAt( 0 );
             * scene.Objects[1].Faces.RemoveAt( 0 );
             * scene.Objects.RemoveAt( 0 );
             */
            /*
             * scene.Objects[0].Faces.RemoveAt( 4 );
             * scene.Objects[0].Faces.RemoveAt( 4 );
             * scene.Objects[0].Faces.RemoveAt( 4 );
             * scene.Objects[0].Faces.RemoveAt( 4 );
             * scene.Objects[0].Faces.RemoveAt( 4 );
             * scene.Objects[0].Faces.RemoveAt( 4 );
             * scene.Objects[0].Faces.RemoveAt( 2 );
             * scene.Objects[0].Faces.RemoveAt( 2 );
             */


            return(scene);
        }