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