首页 > 解决方案 > 使用 Helix Toolkit 的 VS 2015 中的不透明度错误

问题描述

当我在组合框中选择对象时,我一直在尝试创建一种方法来更改对象的不透明度,以便可以看到它后面的另一个对象。这是在更改相机位置/方向以从第一个对象的位置跟随第二个对象之前完成的。这是通过克隆对象的默认材质来完成的

this.DefaultMaterial = this.DefaultMaterial.Clone();

然后调用

MaterialHelper.ChangeOpacity(DefaultMaterial,0.1);

方法,就像我在那里写的一样。

不透明度似乎在大多数情况下都能正常工作,但对于视口中的某些对象,我无法通过我最初的不透明对象看到它们。例如,当我将相机转向有问题的特定对象(有问题的那个)时,我无法在初始对象后面看到它,而是看穿了我的初始对象并越过了第二个对象(有问题的那个),就好像一辆越野车甚至不在那里。我只看到它背后的东西。

我不知道为什么会这样。

有谁知道这可能是什么原因造成的?或者,如果有一种不同的方法可以使某些东西变得透明而不是设置它的不透明度?

我看到有些人引用了 TRANSPARENCY 属性,但不确定这是否适用于 FileModelVisual3D 对象,即初始对象。

有问题的对象是 UIElement3D,不透明的对象是 FileModelVisual3D,Point3DCollection 类的其他对象也有错误,就像 UIElement3D 一样。

标签: wpfxamlvisual-studio-2015opacityhelix-3d-toolkit

解决方案


由于 RenderOrder 和深度缓冲区。您必须将透明对象移动到渲染的末尾。这不是错误,而是渲染的工作方式。

或者改用Helix-toolkit sharpdx,使用透明渲染pass。


推荐阅读