using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Kitware.VTK;
namespace Decimate
{
public partial class Form3 : Form
{
public string vtkpath = "";
public vtkRenderer render;
public Form3()
{
InitializeComponent();
}
private void renderWindowControl1_Load(object sender, EventArgs e)
{
render = this.renderWindowControl1.RenderWindow.GetRenderers().GetFirstRenderer();
try
{
OBBDicer(null);
}
catch (Exception err)
{
MessageBox.Show(err.Message,"Exception",MessageBoxButtons.OK);
}
}
private void OBBDicer(string p)
{
if (p == null) return;
vtkPolyData inputdata;
vtkPolyDataReader reader = vtkPolyDataReader.New();
reader.SetFileName(p);
reader.Update();
inputdata = reader.GetOutput();
vtkOBBDicer dicer = vtkOBBDicer.New();
dicer.SetInput(inputdata);
dicer.SetNumberOfPieces(4);
dicer.SetDiceModeToSpecifiedNumberOfPieces();
//dicer.SetDiceModeToMemoryLimitPerPiece();
dicer.Update();
vtkPolyDataMapper inputmapper = vtkPolyDataMapper.New();
inputmapper.SetInputConnection(dicer.GetOutputPort());
inputmapper.SetScalarRange(0,dicer.GetNumberOfActualPieces());
vtkActor inputactor = vtkActor.New();
inputactor.SetMapper(inputmapper);
inputactor.GetProperty().SetInterpolationToFlat();
vtkOutlineCornerFilter vtkOutlineCornerFilter = vtkOutlineCornerFilter.New();
vtkOutlineCornerFilter.SetInput(inputdata);
//框体角显示
vtkPolyDataMapper mapper2 = vtkPolyDataMapper.New();
mapper2.SetInput(vtkOutlineCornerFilter.GetOutput());
vtkActor actor2 = vtkActor.New();
actor2.SetMapper(mapper2);
render.AddActor(actor2);
render.AddActor(inputactor);
render.SetBackground(0.2,0.3,0.4);
}
private void 打开文件ToolStripMenuItem_Click(object sender, EventArgs e)
{
openFileDialog1.Title = "请选择测试模型";
openFileDialog1.Filter = "VTK文件 | *.vtk";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
vtkpath = openFileDialog1.FileName;
render .RemoveAllViewProps();
OBBDicer(vtkpath);
}
}
}
}
感觉不太有价值,并不能智能分割,应该是八叉树那种逐层切割,没有找到实际用处。