三维模型是通过三维制图软件绘制后导入wpf 的,ModelVisual3D类并没有设置透明度属性,而 GeometryModel3D类的材质可设置Opacity属性,但是ModelVisual3D类下有很多 GeometryModel3D,如何对整个模型设置透明度?
楼主,你这个问题解决了吗?我最近也遇到这个问题了。
wpf+modelvisual3D透明度
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 三更圣人 2023-03-31 14:49关注
可以通过在ModelVisual3D下添加一个新的GeometryModel3D,将原有的所有GeometryModel3D作为子元素添加到新的GeometryModel3D中,并设置新的GeometryModel3D的Opacity属性来实现整个模型的透明度。具体步骤如下:
创建一个新的GeometryModel3D,设置其材质的Opacity属性为所需的透明度值。
遍历原有的所有GeometryModel3D,将它们作为子元素添加到新的GeometryModel3D中。
将新的GeometryModel3D添加到原有的ModelVisual3D中,移除原有的所有GeometryModel3D。
最后将新的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);
解决 无用评论 打赏 举报
悬赏问题
- ¥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报错,如何解决?