如何将众多vtkprop或vtkactor组合成一个更大的演员或道具
How to combing many vtkprop or vtkactor to form a bigger actor or prop?
我正在开发qt/vtk应用程序,用户可以根据自己的需求绘制大量的vtk参与者/道具。现在需要提供一种功能,将所有绘制的演员/道具组合起来,形成一个母演员/道具。我试过vtkactorcollection,但它单独存储了所有演员。提供任何合适的例子或向我介绍相关的帖子。
我猜您正在寻找一个vtkAssembly:http://www.vtk.org/doc/release/5.0/html/a01164.html
遗憾的是,所提供的示例仅为TCL/Py,因此您最好选择此处给出的交互程序示例:http://www.vtk.org/Wiki/VTK/Examples/Cxx/Interaction/Assembly
但是:这仍然将原始演员保存在某个地方,而且速度很慢,您可以通过vtkAssembly的转换来进行转换,但速度不是很快。这完全取决于你想做什么。也许你可以丢弃所有参与者,然后简单地合并poly数据?http://www.cmake.org/Wiki/VTK/Examples/Cxx/Filtering/CombinePolydata
编辑:用于打印的内容http://www.vtk.org/Wiki/VTK/Examples/Cxx/Filtering/AppendFilter也可以很好地工作(比组合多数据过滤器快一点)
尽管我不想阻止使用stackoverflow,但imho vtk邮件列表对vtk问题来说可能更好,因为所有的vtk老手都在附近徘徊,并为几乎每一项要求提供最佳实践。
void Widget::loadObjModel() {
QElapsedTimer t;
t.start();
auto renderer = vtkSmartPointer<vtkRenderer>::New();
auto renWin = vtkSmartPointer<vtkRenderWindow>::New();
renWin->AddRenderer(renderer);
auto importer = vtkSmartPointer<vtkOBJImporter>::New();
importer->SetRenderWindow(renWin);
importer->SetFileName("E:/Garden/Garden.obj");
importer->SetFileNameMTL("E:/Garden/Garden.mtl");
importer->SetTexturePath("E:/Garden");
importer->Update();
auto actors = renderer->GetActors();
actors->InitTraversal();
auto assembly = vtkSmartPointer<vtkAssembly>::New();
qDebug() << "There are " << actors->GetNumberOfItems() << " actors";
for (vtkIdType a = 0; a < actors->GetNumberOfItems(); ++a) {
vtkActor *actor = actors->GetNextActor();
assembly->AddPart(actor);
}
assembly->RotateX(90);
m_renderer->AddActor(assembly);
}
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 运行同一解决方案的另一个项目的项目
- 挂起和取消挂起一个文件DLL
- 用C++中的一个变量定义一个常量
- 函数向量_指针有不同的原型,我可以构建一个吗
- 在c++中用vector填充一个简单的动态数组
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 预处理器:插入结构名称中的前一个行号
- 我在c++代码中生成了一个运行时#3异常
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 从链接列表c++中删除一个项目
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '