Esempio n. 1
0
        private void buttonOpen_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Title  = "Open Scene File";
            ofd.Filter = "Wavefront OBJ Files|*.obj;*.obj.gz" + "|Polygon File Format|*.ply" +
                         "|All scene types|*.obj;*.ply";
            ofd.FilterIndex = 1;
            ofd.FileName    = "";
            if (ofd.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            string ext = Path.GetExtension(ofd.FileName);

            StanfordPly  plyReader;
            WavefrontObj objReader;

            if (ext == ".ply")
            {
                plyReader = new StanfordPly();
                if (plyReader.ReadBrep(ofd.FileName, scene) == -1)
                {
                    MessageBox.Show("Invalid .ply file");
                }
            }
            else
            {
                objReader = new WavefrontObj();
                objReader.MirrorConversion  = false;
                objReader.TextureUpsideDown = checkOrientation.Checked;
                objReader.ReadBrep(ofd.FileName, scene);
            }

            scene.BuildCornerTable();
            diameter = scene.GetDiameter(out center);
            scene.GenerateColors(12);
            scene.ComputeNormals();

            UpdateParams(textParam.Text);
            tb.Center   = center;
            tb.Diameter = diameter;
            SetLight(diameter, ref light);
            tb.Reset();

            labelFile.Text = string.Format("{0} @ {1} vertices, {2} edges ({3}), {4} faces",
                                           ofd.SafeFileName, scene.Vertices,
                                           scene.statEdges, scene.statShared,
                                           scene.Triangles);
            PrepareDataBuffers();

            glControl1.Invalidate();

            // Supports point selection
            selectedPoints = new Selection(scene);
            commandManager = new CommandManager();
        }
Esempio n. 2
0
        private void buttonOpen_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Title  = "Open Scene File";
            ofd.Filter = "Wavefront OBJ Files|*.obj;*.obj.gz" +
                         "|All scene types|*.obj";

            ofd.FilterIndex = 1;
            ofd.FileName    = "";
            if (ofd.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            WavefrontObj objReader = new WavefrontObj();

            objReader.MirrorConversion  = false;
            objReader.TextureUpsideDown = checkOrientation.Checked;
            objReader.ReadBrep(ofd.FileName, scene);

            // Scene postprocessing.
            scene.BuildCornerTable();
            scene.GenerateColors(12);
            scene.ComputeNormals();
            diameter = scene.GetDiameter(out center);

            // Viewport update.
            UpdateParams(textParam.Text);
            tb.Center   = center;
            tb.Diameter = diameter;
            tb.Reset();

            camera.Center   = center;
            camera.Diameter = diameter;
            camera.Reset();

            SetupViewport();
            SetLight(diameter, ref light);

            modelStatus    = $"{ofd.SafeFileName}: {scene.Vertices}v, {scene.statEdges}e({scene.statShared}), {scene.Triangles + scene.Lines}f";
            labelFile.Text = modelStatus;

            // Prepare rendering system.
            PrepareDataBuffers();
            glControl1.Invalidate();
        }