Java3D无序地呈现对象

时间:2013-05-09 00:15:00

标签: java-3d

所以,我正在制作纸牌游戏。我有一个一致的问题,无论我尝试什么,java3d渲染我的对象错误。这就是我在说的: enter image description here

当相机从后面看它们时,它们都按照它们的顺序排列。

但是当你转到另一边时......

s

enter image description here

实际上应该在后面的卡片呈现在顶部。

enter image description here

我知道这不是法线问题,因为我在Blender(我把它们制作为x3ds)中检查了它们,并且它们都向外指出。此外,如果我将卡片翻转过来(因此在第一张图片中,正面朝向相机),我会遇到同样的问题,但反过来;当从脸侧看时,卡片会正确地呈现并相互覆盖,而当从背面看时,这些卡片会变得混乱。

对于我的游戏(埃及鼠标螺丝)来说,这是一个绝对的灾难性问题,因为我需要将卡片堆成一堆,面朝上,并且需要以正确的顺序显示。

我使用com.interactivemesh.j3d.interchange.ext3d.XModelLoader导入它们。我在场景中有其他物体,包括一张桌子和一双手,他们没有这个问题。我怀疑这可能是因为卡很薄。

所以......之前有没有人见过这样的东西,或者对导致这种情况有什么想法?

2 个答案:

答案 0 :(得分:2)

看起来没有深度缓冲区,或忽略深度缓冲区信息。看看你的RenderingAttributes

答案 1 :(得分:0)

TransparencySortController执行计算透明度的顺序 - 也许它适用于您的情况?我不这么认为,因为即使它有效,它也会扭转你的问题。但你可以试试。

我猜测问题可能在于使用从两侧渲染的单个表面 - 双方共享相同的法线,我认为它可能导致无效排序。我有一些问题。

我建议为每张卡使用两个相对的表面 - 每个表面都是透明的。然后他们的法线将指向正确的方向。

另外:发布您的节点创建代码。那里可能有一个错误。