Alternativa3Dを試してみる Part.03 : CameraとCameraController

AS3の3Dライブラリ「Alternativa3D」を学習するシリーズ第三回目、今回はカメラについて調べてみました。

3Dの初期化について

まだ解説してませんでしたが、PV3Dと同じくカメラ・シーン・ビューの3要素がありこれらを初期化することからはじめます。
[source:javascript]
// シーンの初期化
scene = new Scene3D();
// シーンのルートを設定(ここに色んな3DオブジェクトをaddChildしていきます)
scene.root = new Object3D();

// カメラを初期化
camera = new Camera3D();
// scene.rootにカメラをaddChild
scene.root.addChild(camera);

// ビューを初期化
view = new View();
addChild(view);

// ビューにカメラを設定
view.camera = camera;
[/source]

そして、Event.ENTER_FRAMEのハンドラーでレンダリングを行います。
[source:javascript]
scene.calculate();
[/source]

初期化に関するスクリプトは若干記法が違えど、流れはPV3Dと変わりませんでした。

カメラコントローラー

Alternativa3Dにはカメラをマウスとキーボードで簡単に制御できるようにCameraControllerというクラスが用意されています。どういうことができるかというと次のサンプルをご確認ください。

キーボードに対応しており制御方向は次のとおり。

  • W — 前に進みます
  • S — 後に進みます
  • A — 左に進みます
  • D — 右に進みます
  • SPACE — 上に進みます
  • Z — 下に進みます
  • UP — 上を向きます
  • DOWN — 下を向きます
  • LEFT — 左に傾けます
  • RIGHT — 右に傾けます
  • SHIFT — 押しながらで別のキーを押すと進むスピードを高速にします

カメラコントローラーは次のとおりカスタマイズができます。
[source:javascript]
// 1.カメラコントローラーを初期化 引数はマウスイベントを受け取るDisplayObject
cameraController = new CameraController(stage);
// 2.カメラコントローラーが制御するカメラを指定
cameraController.camera = camera;
// 3.キーボード操作を可能にする機能
cameraController.setDefaultBindings();
// 4.衝突したらカメラを進まなくさせるかの設定
cameraController.checkCollisions = true;
// 5.衝突判定の半径(球の形で判定)
cameraController.collisionRadius = 0;
// 6.カメラの目標点を設定
cameraController.lookAt(new Point3D());
// 7.カメラコントローラーの制御の設定
cameraController.controlsEnabled = true;
[/source]

今回のソース

  • src (130行, asファイル)

参考

投稿者 : 池田 泰延

BookMark

ブックマークはこちらからどうぞ。

このエントリーをはてなブックマークに追加