JavaFX 8 + 3Dを使って作成したアプリケーションで、カメラの方向を制御する簡単で直感的な方法を実装しようとしています。 OpenGLには、gluLookAt()
と呼ばれる単純な関数があり、どの点から見えるか、どの目的点を見るかを簡単に定義することができます。JavaFX-3Dの `gluLookAt()`に相当します。
JavaFX-3Dに相当するものはありますか?
JavaFX 8 + 3Dを使って作成したアプリケーションで、カメラの方向を制御する簡単で直感的な方法を実装しようとしています。 OpenGLには、gluLookAt()
と呼ばれる単純な関数があり、どの点から見えるか、どの目的点を見るかを簡単に定義することができます。JavaFX-3Dの `gluLookAt()`に相当します。
JavaFX-3Dに相当するものはありますか?
この回答はOpenJDKメーリングリストから得られる場合があります。ここでは、このコードスニペットが見つかり lookAt
:https://community.oracle.com/thread/3868043
を私はそれが将来的に利用できることを確認するためにここにするためにコードをコピーしています。テストしませんでした。正常に動作することを確認する必要があります。
public void lookAt(Point3D cameraPosition, Point3D lookAtPos) {
//Create direction vector
Point3D camDirection = lookAtPos.subtract(cameraPosition.getX(), cameraPosition.getY(), cameraPosition.getZ());
camDirection = camDirection.normalize();
double xRotation = Math.toDegrees(Math.asin(-camDirection.getY()));
double yRotation = Math.toDegrees(Math.atan2(camDirection.getX(), camDirection.getZ()));
Rotate rx = new Rotate(xRotation, cameraPosition.getX(), cameraPosition.getY(), cameraPosition.getZ(), Rotate.X_AXIS);
Rotate ry = new Rotate(yRotation, cameraPosition.getX(), cameraPosition.getY(), cameraPosition.getZ(), Rotate.Y_AXIS);
cam.getTransforms().addAll(ry, rx,
new Translate(
cameraPosition.getX(),
cameraPosition.getY(),
cameraPosition.getZ()));
}
他のパラメータも考慮に入れた別の実装があります:https://github.com/lancelet/orbitnav/blob/master/src/main/java/org/orbitnav/example/LookAt.java – SomethingSomething
ありがとうございます!有望です – SomethingSomething