C# 使用Helix工具箱提高WPF渲染性能
我正在渲染大量加载为stl的网格,然后将其添加到视口中,该视口是HelixViewport3D对象。环境中的所有网格都是静态的C# 使用Helix工具箱提高WPF渲染性能,c#,wpf,rendering,helix-3d-toolkit,C#,Wpf,Rendering,Helix 3d Toolkit,我正在渲染大量加载为stl的网格,然后将其添加到视口中,该视口是HelixViewport3D对象。环境中的所有网格都是静态的 // in MainWindow.xaml <HelixToolkit:HelixViewport3D x:Name ="viewPort" ZoomExtentsWhenLoaded="True" Margin="250,-15,0,15"> // in MainWindow.cs Constructor this.viewPort = new Hel
// 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);
}
//在MainWindow.xaml中
//在MainWindow.cs构造函数中
this.viewPort=新的HelixViewport3D();
foreach(网格路径中的字符串路径){
ModelVisual3D网格模型=加载网格(路径);
viewport.Children.Add(meshModel);
}
由于网格数很高,渲染性能相当低(在旋转期间冻结,难以放大…)。如何使场景更易于旋转和操纵 关于渲染、命中测试等,它会带来很大的开销
因此,可以帮助您减少视觉效果并将它们粘在一起:
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();
您是否找到了有关多个对象性能的解决方案?我必须使用70MB的3ds文件。。我试图删除最大可见边界的边界大小小于xxx%的网格(但我还没有找到任何方法知道最大可见边界…)嗨@MauroDestro,实际上我没有太多改进。不过,你的方法似乎很有希望。也许你可以将其与视口本身的百分比进行比较。是的@Nic,但我无法找到空间可见部分的大小(例如,包含整个模型可见的不可见球体的边界)来计算%