【发布时间】:2016-08-29 21:36:51
【问题描述】:
我正在尝试在我使用 JavaFX 8 + 3D 构建的应用程序中实现一种简单直观的方法来控制相机方向。在 OpenGL 中,有一个名为gluLookAt() 的简单函数,它可以轻松定义从哪个点查看以及从哪个目标点查看。
JavaFX-3D 中是否有类似的东西?
【问题讨论】:
我正在尝试在我使用 JavaFX 8 + 3D 构建的应用程序中实现一种简单直观的方法来控制相机方向。在 OpenGL 中,有一个名为gluLookAt() 的简单函数,它可以轻松定义从哪个点查看以及从哪个目标点查看。
JavaFX-3D 中是否有类似的东西?
【问题讨论】:
OpenJDK 邮件列表中的这个答案可能对您有所帮助。 lookAt
【讨论】:
在此处找到此代码 sn-p: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()));
}
【讨论】: