Beispiel #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" +
                         "|All scene types|*.obj";

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

            WavefrontObj objReader = new WavefrontObj();

            objReader.MirrorConversion = false;
            int faces = objReader.ReadBrep(ofd.FileName, scene);

            scene.BuildCornerTable();
            int errors = scene.CheckCornerTable(null);

            labelFaces.Text = string.Format("{0} faces, {1} errors", faces, errors);
            redraw();
        }
Beispiel #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;
            int faces = objReader.ReadBrep(ofd.FileName, scene);

            scene.BuildCornerTable();
            int errors = scene.CheckCornerTable(null);

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

            labelFaces.Text = string.Format("{0}: {1} faces, {2} errors", ofd.SafeFileName, faces, errors);
            PrepareDataBuffers();
            glControl1.Invalidate();
        }
Beispiel #3
0
        private void buttonGenerate_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;

            scene.Reset();
            Construction cn = new Construction();

            int faces = cn.AddMesh(scene, Matrix4.Identity, textParam.Text);

            diameter = scene.GetDiameter(out center);

            if (checkMulti.Checked)
            {
                Matrix4 translation, rotation;

                Matrix4.CreateTranslation(diameter, 0.0f, 0.0f, out translation);
                Matrix4.CreateRotationX(90.0f, out rotation);
                faces += cn.AddMesh(scene, translation * rotation, textParam.Text);

                Matrix4.CreateTranslation(0.0f, diameter, 0.0f, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(diameter, diameter, 0.0f, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(0.0f, 0.0f, diameter, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(diameter, 0.0f, diameter, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(0.0f, diameter, diameter, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(diameter, diameter, diameter, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                diameter = scene.GetDiameter(out center);
            }

            scene.BuildCornerTable();
            int errors = scene.CheckCornerTable(null);

            scene.GenerateColors(12);
            ResetCamera();

            labelFile.Text = string.Format("{0} faces, {1} errors", faces, errors);
            PrepareDataBuffers();
            glControl1.Invalidate();

            Cursor.Current = Cursors.Default;
        }
Beispiel #4
0
        private void buttonGenerate_Click(object sender, EventArgs e)
        {
            bool doCheck = checkCorner.Checked;

            scene.Reset();

            Stopwatch sw = new Stopwatch();

            sw.Start();

            Construction cn = new Construction();

            int faces = cn.AddMesh(scene, Matrix4.Identity, textParam.Text);

            diameter = scene.GetDiameter(out center);

            if (checkMulti.Checked)
            {
                Matrix4 translation, rotation;

                Matrix4.CreateTranslation(diameter, 0.0f, 0.0f, out translation);
                Matrix4.CreateRotationX(90.0f, out rotation);
                faces += cn.AddMesh(scene, translation * rotation, textParam.Text);

                Matrix4.CreateTranslation(0.0f, diameter, 0.0f, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(diameter, diameter, 0.0f, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(0.0f, 0.0f, diameter, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(diameter, 0.0f, diameter, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(0.0f, diameter, diameter, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(diameter, diameter, diameter, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                diameter = scene.GetDiameter(out center);
            }

            sw.Stop();
            long elapsed = sw.ElapsedMilliseconds;

            // Scene postprocessing.
            scene.BuildCornerTable();
            int errors = doCheck ? scene.CheckCornerTable(null) : 0;

            scene.GenerateColors(12);

            // 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    = $"{scene.Triangles + scene.Lines}f ({faces}rep), {scene.Vertices}v, {errors}err, {elapsed}ms";
            labelFile.Text = modelStatus;

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