在假3D平面中进行Java z排序?

时间:2012-10-26 19:46:09

标签: java java-3d z-order

我正在用Java实现像Notch的“打破塔”这样的项目。 我有大部分写的,但是我对z顺序有困难。

当物体围绕中心“旋转”时,它们仍然严重地相互重叠。例如,背景中的树可能会在其“前面”的树顶上绘制。

任何人都可以建议一种可以帮助我解决问题的算法吗?  ...或者可能有助于解释z排序的完整概念,甚至可能提供另一种解决方案。

感谢

1 个答案:

答案 0 :(得分: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++)

所以,这样,你的对象应该是一个在另一个之前,而不是一个在另一个之上。

希望它有所帮助, 麦克