http://www.youtube.com/watch?v=gZNdfVwkttM - 如果您无法看到图片,可以在此视频中查看所有问题的描述。
以下所有图像中的墙壁都有一个半透明的PNG纹理。每个正方形的墙壁、地板和天花板瓷砖都是单独的GeometryModel3D(我知道这对性能不利,但是...)。中央立方体的地板和天花板没有任何几何形状和纹理 - 因此它们具有与Window.Background(黑色)相同的颜色。但是考虑的效果在任何透明度获得的方式中都会出现:具有透明度的ImageBrush纹理,材料颜色(例如DiffuseMAterial.Color),其中颜色具有alpha通道,将ImageBrush用作材料,其中ImageBrush具有不透明度- 我使用的所有方式都存在相同的问题。
所有的墙壁都由两个三角形组成。因为我定义了三角形索引,所以没有显式法线,法线通过WPF自动计算。
它也没有任何背面材料或额外的三角形从背面。如您所见,如果仅从+Z到-Z查看(站在蓝色正方形上并望向红色正方形-即第二张图片),则没有问题。但是,如果您向后看(从红色到蓝色-第一张图片),则没有透明度!好吧,我决定从黄色正方形(第三张图片)开始观察。然后我走近了-您可以看到发生了什么(第4到6张图片)。没有几何构造错误、纹理映射错误或照明错误!这是某种剪辑,我猜测!此外还有一些有趣的图片7和8来证明我的猜测。最后一张图片显示了承载Viewport3D的窗口的白色背景(之前是黑色),并且我的剪辑猜测得到了确认-WPF只是没有绘制场景的这部分,我们可以看到窗口背景!但是!如果这种情况从各种角度发生,为什么从+Z到-Z的视角(第二张图片)看起来很好?!