【问题标题】:Equivalent for `gluLookAt()` in JavaFX-3D等效于 JavaFX-3D 中的 `gluLookAt()`
【发布时间】:2016-08-29 21:36:51
【问题描述】:

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

JavaFX-3D 中是否有类似的东西?

【问题讨论】:

    标签: graphics javafx-3d


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-11
      • 2015-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多