使用 HelixToolkit 使 3D 模型面朝半透明的问题
Issues with making a 3D model faces semi-transparent using HelixToolkit
我正在尝试使用 HelixToolkit 显示下面描述的 3D 模型。 (以下快照取自 SolidWorks。)
我把我的GeometryModel3D
的DiffuseMaterial
和Material
的BackMaterial
的笔刷颜色设置为透明色。
Model3DGroup faceVisualEntity = ModelFaces.First(modelFace => modelFace.Content.GetName() == faceName).Content as Model3DGroup;
// Breaking the 3D-model down to the constituting mesh..
//
foreach (var child in faceVisualEntity.Children)
{
if (child is GeometryModel3D)
{
GeometryModel3D body = child as GeometryModel3D;
body.Material = new DiffuseMaterial(new SolidColorBrush("#40FF0000"));
body.BackMaterial = new DiffuseMaterial(new SolidColorBrush("#40FF0000"));
}
}
然而,我在HelixViewport3D
中看到的是如下所示。
虽然盒子的侧面看起来是透明的,但我想知道为什么看不到盒子里面的管道。我还将管壁的颜色更改为不透明值,但还看不到它们。
事实是,仅通过更改模型面的 alpha 通道无法使用 HelixToolkit 的透明功能 material。实际上,HelixToolkit 代码中有一个示例显示需要 SortingVisual3D
来支持模型的透明度。因此,我首先将 SortingVisual3D
的实例添加到 HelixViewport3D
,然后向其添加 Visual3D 对象,例如 ModelVisual3D
、LinesVisual3D
等。结果,我现在看到的是下面这样的。
我正在尝试使用 HelixToolkit 显示下面描述的 3D 模型。 (以下快照取自 SolidWorks。)
我把我的GeometryModel3D
的DiffuseMaterial
和Material
的BackMaterial
的笔刷颜色设置为透明色。
Model3DGroup faceVisualEntity = ModelFaces.First(modelFace => modelFace.Content.GetName() == faceName).Content as Model3DGroup;
// Breaking the 3D-model down to the constituting mesh..
//
foreach (var child in faceVisualEntity.Children)
{
if (child is GeometryModel3D)
{
GeometryModel3D body = child as GeometryModel3D;
body.Material = new DiffuseMaterial(new SolidColorBrush("#40FF0000"));
body.BackMaterial = new DiffuseMaterial(new SolidColorBrush("#40FF0000"));
}
}
然而,我在HelixViewport3D
中看到的是如下所示。
虽然盒子的侧面看起来是透明的,但我想知道为什么看不到盒子里面的管道。我还将管壁的颜色更改为不透明值,但还看不到它们。
事实是,仅通过更改模型面的 alpha 通道无法使用 HelixToolkit 的透明功能 material。实际上,HelixToolkit 代码中有一个示例显示需要 SortingVisual3D
来支持模型的透明度。因此,我首先将 SortingVisual3D
的实例添加到 HelixViewport3D
,然后向其添加 Visual3D 对象,例如 ModelVisual3D
、LinesVisual3D
等。结果,我现在看到的是下面这样的。