我正在尝试实现一种简单直观的方式来控制相机的方向,在我使用JavaFX 8+ 3D构建的应用程序中。在OpenGL中,有一个名为gluLookAt()的简单函数,它可以轻松地定义从哪个点开始查找以及向哪个目标点查找。
JavaFX-3D中有没有类似的东西?
发布于 2016-08-30 15:08:41
这个来自OpenJDK邮件列表的答案可能会对您有所帮助。lookAt
发布于 2016-08-30 15:37:29
在以下位置找到此代码片段: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://stackoverflow.com/questions/39215592
复制相似问题