3D空間的坐標系統如左邊的插圖1所示。它被稱為世界坐標系,3D屏幕中的所有物體都可以在該坐標系系統下移動和旋轉。
對于屏幕上的所有物體來說,這個坐標系系統都是相同的,并且它不會改變。用戶默認的觀察視角是沿著Z軸的負半軸方向。
 
插圖1
除了世界坐標系外,每個物體都有一個本地坐標系系統,而figure也可以在本地坐標系系統下移動,如插圖2。
這兩個坐標系系統最大的不同就是本地坐標系系統的方位可以改變;當figure旋轉時,本地坐標系統也會跟著figure一起旋轉,如插圖3。(譯者注:本地坐標系是相對于對象的原點的3D坐標系,而世界坐標系是相對于3D世界的原點三維坐標系)。
 
插圖2 插圖3
當旋轉一個物體時,如果依靠提供的方法去旋轉它,可能得到不同的結果。Mesh可以相對于它的本地中心平移和旋轉,也可以相對于它的世界中心平移和旋轉。如插圖4。
在JSR 184中,平移和旋轉可以用于所有Transformable的對象,它們包括:Mesh, Light, Camera, Group和SPRite3D。使用Transform和Transformable類都可以實現平移和旋轉。

插圖4
在JSR 184里,它也可能添加一個Mesh到Group里。例如,如果一個Group添加到世界中,然后一個Mesh添加到這個Group中,結點(Node)的平移將相對于根坐標系下完成。
基本函數如下:
Transformable:
- postRotate(float angle, float ax, float ay, float az) 
- translate(float tx, float ty, float tz)
Transform:
- postRotate(float angle, float ax, float ay, float az) 
- postTranslate(float tx, float ty, float tz)
mesh.postRotate(
當直接旋轉Transformable對象時,該物體將相對于本地坐標系系統的原點旋轉。
transform.postRotate(
mesh.setTransform(transform);
當使用Transform類的方法旋轉時,該物體將相對于它自己的中心旋轉。
mesh.translate(
當使用Transformable類的方法移動物體時,該物體將在它的根結點的坐標系系統下移動。
transform.postTranslate(
mesh.setTransform(transform)
當使用Transform類的方法移動物體時,該物體將在本地坐標系系統下移動。
點擊這里下載源代碼,就可獲得這些不同方法的直觀效果。
原文地址
本文使用JSR 184 API簡短的介紹了3D世界(World)下的坐標系系統和定位。
下載源程序
(出處:http://m.survivalescaperooms.com)
新聞熱點
疑難解答