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); }
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); }
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); }
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); }