リビジョン e08c84bf
| learn/java/javafx/Hello3d/Hello3d.java | ||
|---|---|---|
|
private final Rotate cameraRotateX = new Rotate(0, Rotate.X_AXIS);
|
||
|
private final Rotate cameraRotateY = new Rotate(0, Rotate.Y_AXIS);
|
||
|
private final Rotate cameraRotateZ = new Rotate(0, Rotate.Z_AXIS);
|
||
|
private final Translate cameraTranslate = new Translate(0, 0, -160);
|
||
|
private final Translate cameraTranslate = new Translate(0, 0, -200);
|
||
|
|
||
|
@Override
|
||
|
public void start(final Stage stage) {
|
||
| ... | ... | |
|
camera.setFieldOfView(60);
|
||
|
camera.setFarClip(1000);
|
||
|
camera.getTransforms().addAll(
|
||
|
cameraTranslate,
|
||
|
cameraRotateX,
|
||
|
cameraRotateY,
|
||
|
cameraRotateZ
|
||
|
cameraRotateZ,
|
||
|
cameraTranslate
|
||
|
);
|
||
|
|
||
|
// 点光源の定義
|
||
| ... | ... | |
|
scene.setCamera(camera);
|
||
|
|
||
|
// アニメーション定義
|
||
|
// カメラを(0, 0, -200)から(200, 0, 0)に移a動する
|
||
|
// その際、カメラの向きを(0, 0, 0)方向に維持するためY軸半時計回りに
|
||
|
// 90度回転させる
|
||
|
// カメラを0度から-90度まで回転させる
|
||
|
// 次にZ軸に沿って-200固定で移動させる
|
||
|
final Timeline animation = new Timeline();
|
||
|
animation.getKeyFrames().addAll(
|
||
|
new KeyFrame(Duration.ZERO,
|
||
|
new KeyValue(cameraRotateY.angleProperty(), 0),
|
||
|
new KeyValue(cameraTranslate.xProperty(), 0),
|
||
|
new KeyValue(cameraTranslate.yProperty(), 0),
|
||
|
new KeyValue(cameraTranslate.zProperty(), -200)
|
||
|
new KeyValue(cameraRotateY.angleProperty(), 0)
|
||
|
),
|
||
|
new KeyFrame(Duration.millis(3000),
|
||
|
new KeyValue(cameraRotateY.angleProperty(), -90),
|
||
|
new KeyValue(cameraTranslate.xProperty(), 200),
|
||
|
new KeyValue(cameraTranslate.yProperty(), 0),
|
||
|
new KeyValue(cameraTranslate.zProperty(), 0)
|
||
|
new KeyValue(cameraRotateY.angleProperty(), -90)
|
||
|
)
|
||
|
);
|
||
|
|
||
| ... | ... | |
|
public static void main(final String... args) {
|
||
|
launch(args);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
#66 カメラ移動のリファクタリング