使用Helix Toolkit提高WPF渲染性能



我正在渲染大量网格,这些网格加载为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();

最新更新