相当于JavaFX-3D中的“gluLookAt()”

时间:2016-08-29 21:36:52

标签: graphics javafx-3d

我正在尝试使用JavaFX 8 + 3D构建的应用程序中实现一种简单直观的方法来控制摄像机方向。在OpenGL中,有一个名为gluLookAt()的简单函数,可以轻松定义要查看的点和要查看的目标点。

JavaFX-3D中是否有相同的东西?

2 个答案:

答案 0 :(得分:0)

OpenJDK邮件列表中的答案可能对您有所帮助。 lookAt

答案 1 :(得分:0)

在此处找到此代码段: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()));  
}