C#3D Helix Toolkit形状仅从某些方向透明

时间:2017-08-25 20:41:55

标签: c# colors 3d helix-3d-toolkit

我正在尝试使用一些动画来平滑地改变各种形状的材质,以便它们是透明/不同的颜色。

问题是:

如果我从上面看到形状,我可以看到它的内角(比如说它是一个立方体,我可以看到它的内表面),但是在形状周边之外/之外的任何东西都被遮挡了

到目前为止,我正在做以下事情,除了这个问题之外,它的效果很好:

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,并在第一个答案下看到评论,我假设能够使对象真正透明,必须比我最初想的更多参与。那个人似乎遇到了和我一样的麻烦。

1 个答案:

答案 0 :(得分:0)

听起来你的表面可能是错误的。如果是这样,您可以通过反转多维数据集中每个元素的顶点顺序来修复它。

标准光栅化管道通常绘制“单面”图元 - 即,它只会绘制它认为面向相机的三角形。这样,例如,它甚至不必尝试绘制立方体的背面。