0
我在球體中渲染幾個方形物體(我在球體的中心,物體在我的周圍)。我正在使用手機的旋轉傳感器來查看球體中的物體。如何獲取場景中每個對象的當前位置?
所有對象都從(0,0,0)左右的位置開始,但在渲染時我將每個對象旋轉到球體中的不同角度。
這是我如何處理矩陣,直到從時刻我得到的旋轉矩陣:與此MVP矩陣
public void position(float[] rotationMatrix , float[] projectionMatrix , float rotationAngle , float xRotation , float yRotation , float zRotation , float xTranslation , float yTranslation , float zTranslation){
float[] MVP = new float[16];
float[] modelMatrix = new float[16];
System.arraycopy(rotationMatrix, 0, modelMatrix, 0, rotationMatrix.length);
Matrix.rotateM(modelMatrix, 0, -90f, 1f, 0f, 0f); //correct the axis so that the direction of Y axis is to the sky and Z is to the front
Matrix.rotateM(modelMatrix, 0, rotationAngle, xRotation, yRotation, zRotation); //rotate the object around axis
// used to control the distance of viewing the object (currently only z translation is used)
Matrix.translateM(modelMatrix, 0, xTranslation, yTranslation, zTranslation);
Matrix.multiplyMM(MVP , 0 , projectionMatrix , 0 , modelMatrix , 0);
textureShaderProgram.setUniforms(MVP , texture);
return;
}
然後在着色器我乘以每個對象的位置(這是相同的位置基本上),它們被渲染成像世界一樣的球體。
這個很好用。現在我想要做的是確定一個物體何時位於我面前。隨時獲取每個對象的位置,並且當我查看某個對象時,可以選擇或點亮它。
但是由於每個對象都被乘以好幾次,我怎麼能知道它的位置以及我現在實際查看它的時間?