カメラとゲーム オブジェクトでうまく機能する 3D ワールドがあります。カメラが「レンダリング」すると、マトリックスがカメラの位置に配置されます。これを行うには、次のコードを呼び出します。
gl.glMultMatrixf(rotationArray,0);
gl.glTranslatef(position.getX(), position.getY(), position.getZ());
各オブジェクトがレンダリングされると、オブジェクトごとにこれを呼び出します。(行列を適切にプッシュおよびポップすることに注意してください)
gl.glTranslatef(position.getX(), position.getY(), position.getZ());
gl.glMultMatrixf(rotationArray,0);
ここで、モデルを世界に持ち込むときに、特定のメッシュを 0,0,0 ポイントの周りではなく、別のポイントの周りにピボットする必要があるという質問が出てきます。サブメッシュの ArrayList を持つ Mesh というオブジェクトがあります。各メッシュ (およびサブメッシュ) にはピボット ポイントの位置があります。(x、y、z float)。
指定された点を中心にピボットするために行列をどこに変換すればよいですか? あらゆる組み合わせを試しましたが、うまくいきません!
例:
gl.glTranslatef(position.getX(), position.getY(), position.getZ());
gl.glMultMatrixf(rotationArray,0);
gl.glTranslatef(pivotPoint.getX(),pivotPoint.getY(),pivotPoint.getZ());
そして私は試しました
gl.glTranslatef(pivotPoint.getX(),pivotPoint.getY(),pivotPoint.getZ());
gl.glMultMatrixf(rotationArray,0);
gl.glTranslatef(position.getX(), position.getY(), position.getZ());