0

カメラが見ているポイントを計算しようとしています。カメラはX軸とY軸を中心に回転します。カメラと同じ線上に1cm離れた点を計算したい。

このようなものを2Dで計算する方法は知っていますが、3Dになると困ります。

これは2D用です(x軸とz軸のみ):

float c = 1f;
float a = c * Math.cos(Math.toRadians(rotationY));
float b = (Math.sin(Math.toRadians(rotationY)) * c);
newPosition.z -= a;
newPosition.x += b;

しかし、3Dでは助けが必要です。

ここの誰かがオーンサーを知っていることを願っています。

4

1 に答える 1

0

1つの方法は、カメラのビューマトリックスの逆行列を取り、このマトリックスによってカメラの1cm前のポイントを変換することです。

カメラを最初にX軸を中心にX度、y軸を中心にY度回転すると、擬似コードでは次のようになります。

Matrix4D camMM = Matrix4D.Identity(); //camera model matrix
camMM.Rotate(X, 1, 0, 0);
camMM.Rotate(Y, 0, 1, 0);
Vector4D focusPoint = camMM * vector4D(-1cm, 0, 0, 1);
于 2012-06-02T17:41:19.747 に答える