2012-08-08 4 views
1

아이소 메트릭 게임에서 심도있는 정렬을위한 BSP 트리를 가지고 있습니다 (다른 방법을 시도해 보았습니다). 가까운 거리에있는 것처럼 보이지만 게임에서 자산을 나눌 수 없습니다. 따라서 현재 비행기를 가로 채는 항목은 "뒤"와 "앞"노드에 모두 추가하기 만하면됩니다 (http://www.seas.upenn.edu/~cis568/presentations/bsp-techniques.pdf에서 제안).분할하지 않고 BSP 트리를 렌더링하는 방법

트리를 탐색 할 때 (가장 낮은 깊이에서 가장 높은 것까지), 스프라이트를 한 번만 렌더링합니다 (처음 접근 할 때). 그러나 이것은 표시 순서가 너무 낮은 스프라이트를 배치하는 것 같습니다.

이것에 대한 통찰력이 있으면 크게 감사하겠습니다. 이것은 iOS 용 b (대개) C 용입니다.

미리 감사드립니다. (그리고 저는 여기서 몇 가지 질문에 답하려고 노력합니다.하지만 모두 너무 빠르다!).

답변

1

BSP 트리가 등각 타일 렌더링에서 널리 사용되는 (리터럴) 스프라이트 정렬 문제를 해결하는 데 도움이된다고 생각하지 않습니다. 특히 문과 같은 아치 길이있는 경우, 캐릭터가 아치 밑의 통로 바로 아래에서 튀어 나오는 지점이 항상있을 것입니다. BSP 트리는 3D 세계의 가시 영역을 빠르게 정렬하는 데 도움이되지만 등각 투영 맵은 개별 타일 이미지의 크기와 같은 다른 효과가 공간의 위치보다 큰 요소를 갖는 2 차원의 계층화 된 뷰입니다.

가장 일반적인 해결책은 실제로 각 부품의 카메라까지의 거리에 따라 아치 길 (또는 더 큰 등각 투영 개체)의 개별 부분을 플레이어 앞이나 뒤에 렌더링하기 위해 자산을 분할하는 것입니다.

다른 방법으로는 플레이어 및 기타 개체가 정렬 문제로 인해 일반적으로 스프라이트 렌더링이 실패한 영역에 너무 가까이 다가 가지 않도록 차단을 추가하는 것입니다. 하지만 그것은 처음부터 내장되어있는 경우에만 작동합니다 (타일 크기, 세계 충돌 크기).

+0

도움을 주셔서 대단히 감사합니다. 운 좋게도 객체 아래에 전달해야하는 항목이 없습니다. 내 물건 중 많은 부분이 1x1 이상을 차지하고 있으며, 나는 그들을 분할하는 사치품이 없습니다. 내가 이해하는 바에 따르면, 진정한 대답은 본질적으로 "모든 것을 모든 것과 비교하는 것"입니다. 솔루션에 대한 절대적인 방정식 (예 : 원점으로부터의 거리)이 없기 때문입니다. BSP 트리가이를 수행하는 효율적인 방법 인 것처럼 보였습니다. 본질적으로 나는 그리드 x, y, 너비, 높이가있는 항목들을 가지고 있으며 그것들을 뒤에서 앞으로의 순서 (화가 알고리즘)로 가져와야합니다. 많이 남았습니다! – ICanChange