wpf - 使用 Helix Toolkit 的 VS 2015 中的不透明度错误
问题描述
当我在组合框中选择对象时,我一直在尝试创建一种方法来更改对象的不透明度,以便可以看到它后面的另一个对象。这是在更改相机位置/方向以从第一个对象的位置跟随第二个对象之前完成的。这是通过克隆对象的默认材质来完成的
this.DefaultMaterial = this.DefaultMaterial.Clone();
然后调用
MaterialHelper.ChangeOpacity(DefaultMaterial,0.1);
方法,就像我在那里写的一样。
不透明度似乎在大多数情况下都能正常工作,但对于视口中的某些对象,我无法通过我最初的不透明对象看到它们。例如,当我将相机转向有问题的特定对象(有问题的那个)时,我无法在初始对象后面看到它,而是看穿了我的初始对象并越过了第二个对象(有问题的那个),就好像一辆越野车甚至不在那里。我只看到它背后的东西。
我不知道为什么会这样。
有谁知道这可能是什么原因造成的?或者,如果有一种不同的方法可以使某些东西变得透明而不是设置它的不透明度?
我看到有些人引用了 TRANSPARENCY 属性,但不确定这是否适用于 FileModelVisual3D 对象,即初始对象。
有问题的对象是 UIElement3D,不透明的对象是 FileModelVisual3D,Point3DCollection 类的其他对象也有错误,就像 UIElement3D 一样。
解决方案
由于 RenderOrder 和深度缓冲区。您必须将透明对象移动到渲染的末尾。这不是错误,而是渲染的工作方式。
或者改用Helix-toolkit sharpdx,使用透明渲染pass。
推荐阅读
- javascript - 图像滑块没有任何反应
- charts - 来自上传的 csv 文件的 Google ScatterChart
- angular - 如何在动态表上设置html元素样式?
- python - 查询过去 1 小时数据的 Python 脚本
- laravel - 如何从数据库中获取图像
- javascript - Nanogallery2 的灯箱,用于同一站点上的单个图像
- bash - 使用 bash 在一次读取中将二进制文件拆分为任意数量的不同预定大小的段
- import - update_post_meta 属性可见性?
- css - IE11 SVG 转换:翻译不起作用
- ionic-framework - 标签栏未隐藏在 Ionic 5 的子页面上