如何在不拆分的情况下渲染BSP树

时间:2012-08-08 05:34:19

标签: objective-c c algorithm cocos2d-iphone bsp-tree

我在等距游戏中有一个用于深度排序的BSP树(我尝试了无数其他方法)它似乎很接近,但在我的游戏中我无法拆分资产。因此,截取当前平面的项目,我只是将它们添加到“后面”和“前面”节点(如http://www.seas.upenn.edu/~cis568/presentations/bsp-techniques.pdf中所示)。

当我遍历树(从最低深度​​到最高深度)时,我只渲染精灵一次(第一次接近它)但这似乎是在显示顺序中放置了一些精灵。

对此有任何见解将不胜感激。这是(大部分)C for iOS,顺便说一句。

提前致谢(我试着在这里回答一些问题,但你们都快得快!)。

1 个答案:

答案 0 :(得分:1)

我认为BSP树不会帮助您理清等距平铺渲染中普遍存在的(字面)精灵排序问题。特别是如果你有像门一样的拱门,那么角色总会出现在拱门下方/上方。 BSP树有助于快速对3D世界中的可见区域进行排序,但等轴测图是一种二维分层视图,其中其他效果(如单个图块图像的大小)比空间位置的影响大。

最常见的解决方案是拆分资产,以便在玩家的前方或后方渲染拱门(或任何更大的等距对象)的各个部分,具体取决于每个部分与相机的距离。

替代方法是添加阻塞,以便玩家和其他对象永远不会太靠近精灵渲染通常因排序问题而失败的区域。但只有从一开始就内置(瓦片的大小,世界碰撞的大小),这才有效。