2012-10-26 4 views
0

나는 Notch의 "broken the tower"와 같은 프로젝트를 Java로 구현 중이다. 주로 쓰여졌지만 z 주문에 어려움이 있습니다.위조 된 3D 평면에서 Java z-ordering이 가능합니까?

개체가 가운데를 "회전"할 때 개체가 계속해서 서로 겹쳐서 표시됩니다. 예를 들어 배경에있는 나무는 나무의 꼭대기에 그릴 수 있습니다.

누구든지 문제를 해결하는 데 도움이되는 알고리즘을 제안 할 수 있습니까? ... 또는 z-ordering의 전체 개념을 설명하거나 다른 해결책을 제시하는 데 도움이 될 수도 있습니다.

감사

+1

구글 "페인터의 알고리즘을"희망. 당신이하고 싶은 것은 언제나 뒤로부터 앞으로 페인트입니다. 따라서 페인트 할 객체의 배열이 주어지며, 각 객체는 z 순서가 정의 된 상태에서 배열을 가장 낮은 z 순서에서 가장 높은 z 순서로 정렬 한 다음 배열에있는 순서대로 객체를 페인트합니다. – Shmiddty

답변

0

내가 생각하는 당신은 Z 좌표와 배열을 배열을 정렬 한 다음 그 자리에 개체를 번역에 이력서를 해제 할 것. 예를 들어 :

TransformGroup translate(Node node,Vector3f vector){ 

    Transform3D transform3D = new Transform3D(); 
    transform3D.setTranslation(vector); 
    TransformGroup transformGroup = new TransformGroup(); 
    transformGroup.setTransform(transform3D); 
    transformGroup.addChild(node); 
    return transformGroup; 
}  
for(int i=0;vec[i];i++) 
translate(Your_Object,new Vector3f(x,y,vec[i]); 
//do this while you still have elements in your vector. 
//you may want to set a value, let's say 2500 that indicates that you ran out of objects 
//in that case, you will have for(int i=0;vec[i]!=2500;i++) 

그래서,이 방법은, 당신의 개체보다는 다른 위에 하나를 쌓아 다른 앞에 하나를해야합니다.

, 그것은 도움이 마이크