java - 如何在 java 3d 中旋转相机/viewPlatform

标签 java view camera angle java-3d

我刚刚启动java3D,我可以向上/下/左/右/向前/向后移动相机,但我似乎不知道如何使相机角度改变,例如从期待变为向左看。有人能给我举个例子吗?另外,我是否应该放置 getViewingPlatform().getViewPlatformTransform().setTransform(test.position);在我的主要方法中,还是我应该做其他事情?

我尝试过仅使用鼠标并旋转 View OrbitBehavior 轨道 = new OrbitBehavior(canvas, OrbitBehavior.REVERSE_ROTATE);

orbit.setSchedulingBounds(new BoundingSphere());
orbit.setRotXFactor(2);
orbit.setRotYFactor(2);

但是当我添加 getViewingPlatform().getViewPlatformTransform().setTransform(test.position); 时它不起作用; 到 main 方法中的 while 循环。视角反复重置。

最佳答案

您可以通过定义 3D“gazePoint”(注意力集中的点)来控制观看者(摄像机),而不是使用角度来控制观看者(摄像机)。为了防止相机侧向倾斜,请定义 upDir = [ 0 , 1, 0 ] (J3D 假设 +y 轴向上)。

然后,修改 simpleUniverse 中的viewingTransform。

这是我的应用程序中的示例代码:

// ***********declare these variables in class where canvas3D lives *****
//J3D stuff
public InteractiveCanvas3D  canvas3D;
public SimpleUniverse       simpleUniv;
private Transform3D         viewingTransform;
private TransformGroup viewingTransformGroup;

public  static Point3d viewersLocation;
public  static Point3d gazePoint;  //point viewer is looking at

// and initialize as follows:

viewingTransformGroup = simpleUniv.getViewingPlatform().getViewPlatformTransform();
viewingTransform = new Transform3D();


//called to update viewer's location and gaze:
// *********************** UpdateViewerGeometryJ3D 
public void UpdateViewerGeometryJ3D()  {
    Point3d eye = viewersLocation;  
    Point3d center = gazePoint;
    Vector3d up = upDir;
    viewingTransform.lookAt(eye, center, up);
    viewingTransform.invert();
    viewingTransformGroup.setTransform(viewingTransform);

我忘记了为什么观看变换必须反转。希望这会有所帮助。

关于java - 如何在 java 3d 中旋转相机/viewPlatform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36579718/

相关文章:

Java 未正确将字符串转换为长对象

java - android Java libgdx 文本文件

java - 如何通过跳过文件中的第一行和最后一行来读取文本文件

android - 在 LinearLayout 中添加多个 TextView 会导致 stackOverflowError

ios - 以编程方式创建多个 View

android - 两个带线程的 SurfaceView - 相机预览无法恢复

java - 如何在 Java 中消除改造 react 请求?

iOS 嵌入 View

android - ImageView 相机预览

python - 树莓派:校准相机和图像不失真