Я отбрасываю несколько квадратных объектов в сфере (я в центре сферы, и объекты вокруг меня). Я использую датчик поворота телефона для просмотра объектов в сфере.Как получить текущую позицию каждого объекта в сцене?
все объекты начинаются с позиции вокруг (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, и они оказываются вокруг в такой сфере, как мир.
это работает хорошо. теперь мне нравится, когда объект прямо передо мной. всегда получать местоположение каждого объекта, и когда я просматриваю определенный объект, его можно выбрать или зажечь.
но поскольку каждый объект умножается несколько раз, как я могу узнать его местоположение и когда я его просматриваю сейчас?