3

我正在渲染大量加载为 stl 的网格,然后添加到作为 HelixViewport3D 对象的视口中。所有网格在环境中都是静态的。

// in MainWindow.xaml
 <HelixToolkit:HelixViewport3D x:Name ="viewPort" ZoomExtentsWhenLoaded="True" Margin="250,-15,0,15">

// in MainWindow.cs Constructor
this.viewPort = new HelixViewport3D();
foreach(string path in meshPaths){
    ModelVisual3D meshModel = loadMesh(path);
    viewport.Children.Add(meshModel);
}

由于网格的数量很多,渲染性能非常低(它在旋转过程中冻结,难以放大......)。如何使我的场景更容易旋转和操作?

4

1 回答 1

1

关于ModelVisual3D的评论,它在渲染、命中测试等方面带来了很大的开销。

因此,可能对您有所帮助的是减少视觉效果并将它们粘在一起:

this.viewPort = new HelixViewport3D();
var meshes = new Model3DGroup();
foreach (string path in meshPaths)
{
    // just take the model of the loaded 3d object
    meshes.Children.Add(loadMesh(path).Content);
}
viewport.Children.Add(new ModelVisual3D() { Content = meshes });

如果您不打算更改模型,您可以简单地冻结它们,然后添加到HelixViewport3D

meshes.Freeze();
于 2019-12-17T06:31:40.393 回答