我正在尝试实现(相当)简单的场景,其中我有大约 50 个正向某些方向移动的立方体。立方体的位置每秒变化 20 次。
我的第一次拍摄是在场景中添加和移除演员。这种方法无法扩展。整个场景滞后,用户无法移动相机。
void draw(vtkRenderer *renderer)
{
renderer->RemoveAllViewProps();
for(const Cube& cube : cubes_)
{
vtkSmartPointer<vtkCubeSource> cube_source = vtkSmartPointer<vtkCubeSource>::New();
cube_source->Update();
cube_source->SetXLength(cube.lengt());
cube_source->SetYLength(cube.width());
cube_source->SetZLength(cube.height());
vtkSmartPointer<vtkPolyDataMapper> poly_mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
poly_mapper->SetInputConnection(cube_source->GetOutputPort());
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(poly_mapper);
actor->SetPosition(cube.x(), cube.y(), cube.z());
renderer->AddActor(actor);
}
}
第二个镜头好一点。我创建了“演员池”,我在其中重用演员并隐藏不需要的演员。尽管如此,移动相机还是很慢,我的 UI 的其余部分(我在 Vtk 小部件中还有一些额外的小部件)似乎很慢。
我找不到任何相关的 Vtk 资源,其中场景是“动态的”。所有示例都预加载所有场景元素并进一步使用它们。谁能告诉我我在这里做错了什么?