生生不息0.o 2023-03-31 09:07 采纳率: 0%
浏览 9

wpf+modelvisual3D透明度

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

  • 写回答

1条回答 默认 最新

  • 三更圣人 2023-03-31 14:49
    关注

    可以通过在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);
    
    评论

报告相同问题?

问题事件

  • 创建了问题 3月31日

悬赏问题

  • ¥60 db2move nlzxams import 导出db2备份数据报错
  • ¥15 关于#python#的问题:全文总结功能咨询
  • ¥15 俄罗斯方块中无法同时消除多个满行
  • ¥15 c#转安卓 java html
  • ¥15 os.listdir文件路径找不到
  • ¥15 使用gojs3.0,如何在nodeDataArray设置好text的位置,再go.TextBlock alignment中进行相应的改变
  • ¥15 psfusion图像融合指标很低
  • ¥15 银河麒麟linux系统如何修改/etc/hosts权限为777
  • ¥50 医院HIS系统代码、逻辑学习
  • ¥30 docker离线安装mysql报错,如何解决?