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