2016-01-10 14 views
0

Я отбрасываю несколько квадратных объектов в сфере (я в центре сферы, и объекты вокруг меня). Я использую датчик поворота телефона для просмотра объектов в сфере.Как получить текущую позицию каждого объекта в сцене?

все объекты начинаются с позиции вокруг (0,0,0), но при времени рендеринга я поворачиваю каждый объект под другим углом в сфере.

это, как я обрабатывать матрицы до тех пор, с того момента, я получаю матрицу вращения:

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; 
    } 

затем в затенении я умножить каждое местоположение объекта (что одно и то же место в основном) с этой матрицей MVP, и они оказываются вокруг в такой сфере, как мир.

это работает хорошо. теперь мне нравится, когда объект прямо передо мной. всегда получать местоположение каждого объекта, и когда я просматриваю определенный объект, его можно выбрать или зажечь.

но поскольку каждый объект умножается несколько раз, как я могу узнать его местоположение и когда я его просматриваю сейчас?

ответ

1

Перевод всегда хранится в последнем столбце матрицы преобразования (или в последней строке, зависящей от того, хранится ли матрица в столбце main или row major).

Таким образом, положение объекта в мировом пространстве является последним столбцом матрицы модели.

Смежные вопросы