我正在渲染大量网格,这些网格加载为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);
}
由于网格数很高,渲染性能很低(旋转时会冻结,很难放大…)。如何使场景更容易旋转和操作?
关于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();