小编bro*_*itz的帖子

JavaFX 3D旋转

我的问题是:

  1. 下面的代码基于oracle教程网站上的"MolecularSampleApp",但非常简化.它仅显示用于定向目的的框和红色球体.旋转顺序围绕x轴,然后是y轴,最后是z轴.旋转之后显然是在坐标轴上完成的,坐标轴随之前的旋转而旋转.(我用一个立方体和90°旋转序列一次又一次地检查)因此,当用户用鼠标旋转摄像机视图时,这是非常不直观的,因为旋转行为在围绕垂直屏幕轴旋转后发生变化(因为然后水平轴也会旋转.尝试使用我的下面的代码,或使用MolecularSampleApp - 它同样不自然的感觉.有没有一种简单的方法可以克服这个问题?
  2. 但我甚至不理解的是执行mousePressed-code时的行为:这里,摄像机总是在FIXED系统中旋转!轴不会随相机一起旋转,尽管它的代码基本相同(旋转角度当然不会在这里累积).谁知道这怎么可能?
package trafotest;

import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.scene.DepthTest;
import javafx.scene.Group;
import javafx.scene.PerspectiveCamera;
import javafx.scene.Scene;
import javafx.scene.input.MouseEvent;
import javafx.scene.paint.Color;
import javafx.scene.paint.PhongMaterial;
import javafx.scene.shape.Box;
import javafx.scene.shape.Sphere;
import javafx.scene.transform.Rotate;
import javafx.scene.transform.Translate;
import javafx.stage.Stage;

public class TrafoTest extends Application {

    final Group root = new Group();
    final XformWorld world = new XformWorld();
    final PerspectiveCamera camera = new PerspectiveCamera(true);
    final XformCamera cameraXform = new XformCamera();
    private static final double CAMERA_INITIAL_DISTANCE = -1000;
    private static final double CAMERA_NEAR_CLIP = 0.1; …
Run Code Online (Sandbox Code Playgroud)

java 3d rotation javafx-3d

1
推荐指数
1
解决办法
4467
查看次数

标签 统计

3d ×1

java ×1

javafx-3d ×1

rotation ×1