プロジェクト

全般

プロフィール

« | » 

リビジョン e08c84bf

高徹 高橋 徹 さんが約9年前に追加

  • ID e08c84bfbbf728936382f5722dabb5dc44b8bfb2
  • 2f3bf69b

#66 カメラ移動のリファクタリング

差分を表示:

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);
}
}
}

他の形式にエクスポート: Unified diff