我正在尝试使用一些动画来平滑地改变各种形状的材质,以便它们是透明/不同的颜色。
问题是:
如果我从上面看到形状,我可以看到它的内角(比如说它是一个立方体,我可以看到它的内表面),但是在形状周边之外/之外的任何东西都被遮挡了
到目前为止,我正在做以下事情,除了这个问题之外,它的效果很好:
Color c = new Color()
{
A = 16,
R = Colors.Transparent.R,
G = Colors.Transparent.G,
B = Colors.Transparent.B
};
(model as GeometryModel3D).Material = new DiffuseMaterial(new SolidColorBrush(c));
(model as GeometryModel3D).BackMaterial = new DiffuseMaterial(new SolidColorBrush(c));
如果我将颜色的alpha一直放到0,那么形状会变得不透明,似乎是因为形状是不可见的,但它仍然遮挡了它背后的任何东西。
到目前为止我发现的信息表明,使用自发光或镜面反射材料会起作用,因为它没有被写入Z缓冲区,但是漫反射材料不能正常工作,或者我实现了错误。< / p>
编辑:
在遇到这个问题之后:StackOverflow,并在第一个答案下看到评论,我假设能够使对象真正透明,必须比我最初想的更多参与。那个人似乎遇到了和我一样的麻烦。
答案 0 :(得分:0)
听起来你的表面可能是错误的。如果是这样,您可以通过反转多维数据集中每个元素的顶点顺序来修复它。
标准光栅化管道通常绘制“单面”图元 - 即,它只会绘制它认为面向相机的三角形。这样,例如,它甚至不必尝试绘制立方体的背面。