示例#1
0
        public static ScnFile getSceneBug()
        {
            ScnFile s = new ScnFile();

            //s.DefaultCamera.Origin = new Vector(3.2, -1.2, -2);
            s.DefaultCamera.Origin = new Vector(3.2, -1.2, -2);
            s.DefaultCamera.LookAt = new Vector(1, -0.2, 0);

            //s.Lights.Add(new PointLight(new Vector(1.5, -2.7, -5.0), new Lucid.Base.Color(1, 1, 1, 1), 2));
            //s.Lights.Add(new PointLight(new Vector(0, -3, 1), new Lucid.Base.Color(1, 1, 1, 1), 2.6));
            s.Lights.Add(new PointLight(new Vector(-1, -0.8, -4), new Color(1, 1, 1, 1), 1.5));

            double d = 0.1;
            double l = 4;
            Material m1 = getRandReflMaterial();
            Material m2 = getRandReflMaterial();
            /*s.Primitives.Add(new Triangle(m1,
                new Vector(-l, d, l), new Vector(-l, d, -l), new Vector(l, d, l)));
            s.Primitives.Add(new Triangle(m1,
                new Vector(l, d, -l), new Vector(l, d, l), new Vector(-l, d, -l)));*/
            /*s.Primitives.Add(new Triangle(m2,
                new Vector(-l, d, -l), new Vector(-l, d, l), new Vector(-l, -2*l, -l)));
            s.Primitives.Add(new Triangle(m2,
                new Vector(-l, -2*l, -l), new Vector(-l, d, l), new Vector(-l, -2*l, l)));*/
            s.Primitives.Add(new Sphere(new Vector(1.5, 10, 1.5), 10, getRandReflMaterial()));
            //s.Primitives.Add(new BoxPrimitive(new Vector(-10, 4, -10), new Vector(10, 4, 10), getRandMaterial()));

            //addSphereGrid(s);

            s.ModelFiles.Add(new ModelFileInfo("Mclaren.wrl", (Matrix.RotateY90 * Matrix.RotateY90 * Matrix.RotateZ90 * Matrix.RotateZ90 * Matrix.RotateY90).Translate(0.3, 0, 0)));

            return s;
        }
示例#2
0
        public Form1()
        {
            InitializeComponent();

            // create scene representation
            this.scnFile = Scenes.getSceneCarTest();
        }
示例#3
0
 private void benchmarkTriangles()
 {
     txtTimes.Clear();
     int steps = 6;
     int count2 = 128;
     for (int i = 0; i < steps; i++)
     {
         this.scnFile = Scenes.getSceneBenchTriangles(count2);
         load_Click(this, EventArgs.Empty);   // load
         render_Click(this, EventArgs.Empty);   // render
         txtTimes.Text += count2 + ", " + lblTime.Text + Environment.NewLine;
         //Application.DoEvents();
         count2 *= 2;
     }
 }
示例#4
0
 private void benchmarkSpheres()
 {
     txtTimes.Clear();
     int step = 3;
     int steps = 4;
     int start = 6;
     for (int count = start; count < start + step * steps; count += step)
     {
         this.scnFile = Scenes.getSceneBenchSpheres(count);
         load_Click(this, EventArgs.Empty);   // load
         render_Click(this, EventArgs.Empty);   // render
         txtTimes.Text += count * count * count + ", " + lblTime.Text + Environment.NewLine;
         //Application.DoEvents();
     }
 }
示例#5
0
        public static ScnFile getSceneBenchTriangles(int triangleCount)
        {
            ScnFile s = new ScnFile();

            s.Lights.Add(new PointLight(new Vector(1.5, -2.7, -5.0), new Color(1, 1, 1, 1), 1));

            s.DefaultCamera.Origin = new Vector(0, 0, -4);
            s.DefaultCamera.LookAt = new Vector(0, 0, 0);

            //addSphereGrid(s);
            //addBoxes(s.Primitives);
            addTriangles(s.Primitives, triangleCount, 0.1);

            /*s.Primitives.Add(new Triangle(getRandMaterial(),
                new Vector(2, 0.7, 0.3), new Vector(-2, -2.7, 0.3),
                new Vector(-2, 0.7, 4.3)));*/

            return s;
        }
示例#6
0
        public void AddToSceneFrom(Scene scene, ScnFile scnFile, string modelPath)
        {
            foreach (Primitive primitive in scnFile.Primitives)
            {
                scene.addObject(primitive);
            }
            foreach (Light light in scnFile.Lights)
            {
                scene.addLight(light);
            }
            // use VRML loader to load external models
            Vrml2FormatLoader vrmlLoader = new Vrml2FormatLoader();
            foreach (ModelFileInfo modelFile in scnFile.ModelFiles)
            {
                // assume model in same folder as xml file
                string modelFileName = Path.Combine(modelPath, modelFile.FileName);

                vrmlLoader.TransformMatrix = modelFile.TransformMatrix;
                vrmlLoader.AddToSceneFrom(scene, modelFileName);
            }
        }
示例#7
0
        public static ScnFile getSceneCarTest()
        {
            ScnFile s = new ScnFile();

            //s.DefaultCamera.Origin = new Vector(3.2, -1.2, -2);
            s.DefaultCamera.Origin = new Vector(3, -0.4, -2) * 1.6;
            s.DefaultCamera.LookAt = new Vector(0, -1, 0);

            //s.Lights.Add(new PointLight(new Vector(1.5, -2.7, -5.0), new Lucid.Base.Color(1, 1, 1, 1), 2));
            s.Lights.Add(new PointLight(new Vector(2, -5, -3), new Color(1, 1, 1, 1), 1.2));
            //s.Lights.Add(new PointLight(new Vector(-8, -4, 4), new Lucid.Base.Color(1, 1, 1, 1), 0.5));
            s.Lights.Add(new PointLight(new Vector(6, -4, 0), new Color(1, 1, 1, 1), 1.5));
            s.Lights.Add(new PointLight(new Vector(-16, -16, -4), new Color(1, 1, 1, 1), 1));

            double d = 0.05;
            double l = 20;
            Material m1 = getRandReflMaterial();
            Material m2 = getRandReflMaterial();
            s.Primitives.Add(new Triangle(m1,
                new Vector(-l, d, l), new Vector(-l, d, -l), new Vector(l, d, l)));
            s.Primitives.Add(new Triangle(m1,
                new Vector(l, d, -l), new Vector(l, d, l), new Vector(-l, d, -l)));
            s.Primitives.Add(new Sphere(new Vector(-6, -6, 0), 6, getRandReflMaterial()));
            s.Primitives.Add(new Sphere(new Vector(0.5, -5, 7), 5, getRandReflMaterial()));
            //s.Primitives.Add(new BoxPrimitive(new Vector(-10, 1, -10), new Vector(10, 1.1, 10), getRandMaterial()));

            //addSphereGrid(s);

            s.ModelFiles.Add(new ModelFileInfo("Mclaren.wrl", (Matrix.Scaling(1.5) * Matrix.RotateY90 * Matrix.RotateZ90 * Matrix.RotateZ90 * Matrix.RotateY90).Translate(0.6, 0, 0)));

            return s;
        }
示例#8
0
 private static void addSphereGrid(ScnFile file, int xs, int ys, int zs)
 {
     Material mat = getRandMaterial();
     file.Materials.Add(mat);
     // real dimensions
     double xw = 8; double yw = 8; double zw = 8;
     for (int x = 0; x < xs; x++)
     {
         for (int y = 0; y < ys; y++)
         {
             for (int z = 0; z < zs; z++)
             {
                 Vector center = new Vector(-4 + x / (double)xs * xw,
                                -4 + y / (double)ys * yw,
                                2 + z / (double)zs * zw);
                 file.Primitives.Add(new Sphere(center, 0.05/*rand(0.06, 0.16)*/,
                     mat));
             }
         }
     }
 }
示例#9
0
        public static ScnFile getSceneSimple()
        {
            ScnFile s = new ScnFile();

            //s.DefaultCamera.Origin = new Vector(3.2, -1.2, -2);
            s.DefaultCamera.Origin = new Vector(3, -3, -2) * 1.4;
            s.DefaultCamera.LookAt = new Vector(0, -1, 0);

            s.Lights.Add(new PointLight(new Vector(2, -5, -3), new Color(1, 1, 1, 1), 1.2));

            double d = 0.5;
            double l = 20;
            Material m1 = getRandReflMaterial();
            s.Primitives.Add(new Triangle(m1,
                new Vector(-l, d, l), new Vector(-l, d, -l), new Vector(l, d, l)));
            s.Primitives.Add(new Triangle(m1,
                new Vector(l, d, -l), new Vector(l, d, l), new Vector(-l, d, -l)));

            return s;
        }
示例#10
0
        public static ScnFile getSceneMc1()
        {
            ScnFile s = new ScnFile();

            s.DefaultCamera.Origin = new Vector(2, -2, -3);
            s.DefaultCamera.LookAt = new Vector(0, 0, 0);

            //s.Lights.Add(new PointLight(new Vector(1.5, -2.7, -5.0), new Lucid.Base.Color(1, 1, 1, 1), 2));
            s.Lights.Add(new PointLight(new Vector(2, -2.5, 1), new Color(1, 1, 1, 1), 1.6));
            s.Lights.Add(new PointLight(new Vector(-2, -1, -3), new Color(1, 1, 1, 1), 2.5));

            //s.Primitives.Add(new Sphere(new Vector(-1, 8, -1), 6, getRandMaterial()));
            //s.Primitives.Add(new BoxPrimitive(new Vector(-10, 4, -10), new Vector(10, 4, 10), getRandMaterial()));

            //addSphereGrid(s);

            s.ModelFiles.Add(new ModelFileInfo("Mclaren.wrl", Matrix.RotateZ90 * Matrix.RotateZ90 * Matrix.RotateY90));

            return s;
        }
示例#11
0
        public static ScnFile getSceneChairTest()
        {
            ScnFile s = new ScnFile();

            //s.DefaultCamera.Origin = new Vector(3.2, -1.2, -2);
            s.DefaultCamera.Origin = new Vector(3, -0.4, -2) * 1.6;
            s.DefaultCamera.LookAt = new Vector(0, -1, 0);

            //s.Lights.Add(new PointLight(new Vector(1.5, -2.7, -5.0), new Lucid.Base.Color(1, 1, 1, 1), 2));
            s.Lights.Add(new PointLight(new Vector(2, -5, -3), new Color(1, 1, 1, 1), 1.2));
            //s.Lights.Add(new PointLight(new Vector(-8, -4, 4), new Lucid.Base.Color(1, 1, 1, 1), 0.5));
            s.Lights.Add(new PointLight(new Vector(3, -5, 1.5), new Color(1, 1, 1, 1), 1.5));

            double d = 0.4;
            double l = 20;
            Material m1 = getRandReflMaterial();
            Material m2 = getRandReflMaterial();
            s.Primitives.Add(new Triangle(m1,
                new Vector(-l, d, l), new Vector(-l, d, -l), new Vector(l, d, l)));
            s.Primitives.Add(new Triangle(m1,
                new Vector(l, d, -l), new Vector(l, d, l), new Vector(-l, d, -l)));
            /*s.Primitives.Add(new Triangle(m2,
                new Vector(-l, d, -l), new Vector(-l, d, l), new Vector(-l, -2*l, -l)));
            s.Primitives.Add(new Triangle(m2,
                new Vector(-l, -2*l, -l), new Vector(-l, d, l), new Vector(-l, -2*l, l)));*/
            s.Primitives.Add(new Sphere(new Vector(-6, -6, 0), 5.7, getRandReflMaterial()));
            //s.Primitives.Add(new Sphere(new Vector(0, 0, 10), 6, getRandMaterial()));
            //s.Primitives.Add(new BoxPrimitive(new Vector(-10, 4, -10), new Vector(10, 4, 10), getRandMaterial()));

            //addSphereGrid(s);

            s.ModelFiles.Add(new ModelFileInfo("chair.wrl", Matrix.RotateX90 * Matrix.Scaling(0.1)));

            return s;
        }