wpf+modelvisual3D透明度

三维模型是通过三维制图软件绘制后导入wpf 的,ModelVisual3D类并没有设置透明度属性,而 GeometryModel3D类的材质可设置Opacity属性,但是ModelVisual3D类下有很多 GeometryModel3D,如何对整个模型设置透明度?
楼主,你这个问题解决了吗?我最近也遇到这个问题了。

可以通过在ModelVisual3D下添加一个新的GeometryModel3D,将原有的所有GeometryModel3D作为子元素添加到新的GeometryModel3D中,并设置新的GeometryModel3D的Opacity属性来实现整个模型的透明度。具体步骤如下:

  1. 创建一个新的GeometryModel3D,设置其材质的Opacity属性为所需的透明度值。

  2. 遍历原有的所有GeometryModel3D,将它们作为子元素添加到新的GeometryModel3D中。

  3. 将新的GeometryModel3D添加到原有的ModelVisual3D中,移除原有的所有GeometryModel3D。

  4. 最后将新的ModelVisual3D添加到场景中即可。

// 创建一个新的GeometryModel3D,设置透明度为0.5
GeometryModel3D transparentModel = new GeometryModel3D();
transparentModel.Material = new DiffuseMaterial(new SolidColorBrush(Colors.Red));
transparentModel.Material.Opacity = 0.5;

// 遍历原有的所有GeometryModel3D,将它们作为子元素添加到新的GeometryModel3D中
foreach (GeometryModel3D model in originalModelVisual3D.Children)
{
    transparentModel.Geometry = model.Geometry;
    transparentModel.Transform = model.Transform;
}

// 将新的GeometryModel3D添加到原有的ModelVisual3D中,移除原有的所有GeometryModel3D
originalModelVisual3D.Children.Clear();
originalModelVisual3D.Children.Add(transparentModel);

// 将新的ModelVisual3D添加到场景中
viewport.Children.Add(originalModelVisual3D);