あまりに忙しすぎてblog更新サボってたら随分間が開いちゃったけど、引き続きPV3D2.0を勉強中。今回はカメラ。
PV3D2.0には、
- Camera3D
- FreeCamera3D
- FrustumCamera3D
と、3種類のカメラがある。
※リビジョン639以降Camera3Dに一本化されました。FrustumCamera3Dの特性はCamera3Dが引き継いでいます。
Camera3DとFreeCamera3Dについては、これまでと変わりない(Camera3Dを原点に置くとマズいのも相変わらず)みたいなので、新規追加されたFrustumCamera3Dを使ってみた。ASColladaの作者でもあるTim Knip氏によるもので、以前はブランチで開発されてたものが2.0でめでたくマージされた。
標準のカメラとの決定的な違いは、nearClippingとfarClippingが実装されている点。カメラからの距離に応じて自動的にポリゴンの表示・非表示を処理してくれる。これで、特にテクニックを駆使しなくてもバカでかい地形の上を歩き回るようなものが比較的簡単に作れるようになったかも。
FrustumCamera3Dのコンストラクタ定義
FrustumCamera3D(
viewport3D:Viewport3D,
fov:Number = 90,
near:Number = 10,
far:Number = 2000
)
- viewport3D:ViewPort3Dオブジェクトの指定
- fov:カメラの視角
- near:手前側のクリッピング平面位置
- far:奥側のクリッピング平面位置
以下わりといい加減なサンプル。
FrustumCameraTest.swf(要:FlashPlayer9)※ちょっと読み込みに時間かかります。
カーソルキーでカメラが移動
地形データは、206の時と同じくTORCSのデータを拝借。テクスチャを手抜きしたので、スゲー判りづらいサンプルになっちゃったけど、下記のようなオーバルのサーキット上を移動できるようになってる。

衝突判定はよくわかんないので、バリバリにメリ込むヒドいサンプルだけど、とりあえずfarClippingが効いてるおかげで△5700の地形上をなんとか動き回れるだけで妙にウレシイ。





