所以,我正在制作纸牌游戏。我有一个一致的问题,无论我尝试什么,java3d渲染我的对象错误。这就是我在说的:
当相机从后面看它们时,它们都按照它们的顺序排列。
但是当你转到另一边时......
实际上应该在后面的卡片呈现在顶部。
我知道这不是法线问题,因为我在Blender(我把它们制作为x3ds)中检查了它们,并且它们都向外指出。此外,如果我将卡片翻转过来(因此在第一张图片中,正面朝向相机),我会遇到同样的问题,但反过来;当从脸侧看时,卡片会正确地呈现并相互覆盖,而当从背面看时,这些卡片会变得混乱。
对于我的游戏(埃及鼠标螺丝)来说,这是一个绝对的灾难性问题,因为我需要将卡片堆成一堆,面朝上,并且需要以正确的顺序显示。
我使用com.interactivemesh.j3d.interchange.ext3d.XModelLoader导入它们。我在场景中有其他物体,包括一张桌子和一双手,他们没有这个问题。我怀疑这可能是因为卡很薄。
所以......之前有没有人见过这样的东西,或者对导致这种情况有什么想法?
答案 0 :(得分:2)
看起来没有深度缓冲区,或忽略深度缓冲区信息。看看你的RenderingAttributes。
答案 1 :(得分:0)
有TransparencySortController
执行计算透明度的顺序 - 也许它适用于您的情况?我不这么认为,因为即使它有效,它也会扭转你的问题。但你可以试试。
我猜测问题可能在于使用从两侧渲染的单个表面 - 双方共享相同的法线,我认为它可能导致无效排序。我有一些问题。
我建议为每张卡使用两个相对的表面 - 每个表面都是透明的。然后他们的法线将指向正确的方向。
另外:发布您的节点创建代码。那里可能有一个错误。