【发布时间】:2021-04-10 12:41:43
【问题描述】:
不久前我刚刚开始使用 javaFX 学习 3D 图形,我目前正在研究旋转模型。虽然它确实旋转,但它的旋转方式并不完全符合我的想法......例如,如果我按下键向左旋转,模型在旋转时向屏幕左侧移动并最终消失屏幕。
下面是一些构建盒子和场景的代码:
Box box = new Box(100,20,50);
SmartGroup group = new SmartGroup();
group.getChildren().add(box);
Camera camera = new PerspectiveCamera();
Scene scene = new Scene(group,WIDTH,HEIGHT);
scene.setFill(Color.SILVER);
scene.setCamera(camera);
box.translateXProperty().set(WIDTH/2);
box.translateYProperty().set(HEIGHT/2);
box.translateZProperty().set(-1000);
//Here's the wrapper class I made to make the box move:
class SmartGroup extends Group{
Rotate r;
Transform t = new Rotate();
void rotateByX(double ang){
r = new Rotate(ang, Rotate.X_AXIS);
t = t.createConcatenation(r);
this.getTransforms().clear();
this.getTransforms().addAll(t);
}
void rotateByY(double ang){
r = new Rotate(ang, Rotate.Y_AXIS);
t = t.createConcatenation(r);
this.getTransforms().clear();
this.getTransforms().addAll(t);
}
void rotateByZ(double ang){
r = new Rotate(ang, Rotate.Z_AXIS);
t = t.createConcatenation(r);
this.getTransforms().clear();
this.getTransforms().addAll(t);
}
}
所以基本上我的模型在旋转,但也在屏幕外移动。我希望它保持原位并在设定的轴上旋转。我该怎么做
【问题讨论】: