1

所以,我正在做一个纸牌游戏。我有一个一致的问题,无论我尝试什么,java3d 都会使我的对象出错。这就是我所说的: 在此处输入图像描述

当相机从后面看它们时,它们都应该是井然有序的。

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

s

在此处输入图像描述

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

在此处输入图像描述

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

这对我的游戏(Egyptian Ratscrew)来说绝对是一个灾难性的问题,因为我需要将牌堆成一堆,正面朝上,并且它们需要以正确的顺序显示。

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

那么...有没有人以前见过这样的事情,或者对导致这种情况的原因有任何想法?

4

2 回答 2

2

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

于 2013-05-09T11:31:14.077 回答
0

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

我猜想问题可能在于使用从双方渲染的单个表面——双方共享相同的法线,我认为这可能会导致无效的排序。我对此有一些问题。

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

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

于 2013-05-09T10:20:26.057 回答