CS4から、ActionScript3.0に幾つかのクラスが追加されましたが、その中で何といっても魅力的なのは3D表現でしょう。私は、これまでFlashにおける3D表現にはPaperVision3Dを使用してきましたが、簡単な3D表現であればActionScript3.0のクラスだけで実現できることになります。今回は、ActionScript3.0のPerspectiveProjectionクラスに関する学習メモです。PerspectiveProjectionクラスとは、DisplayObjectインスタンスに対して、遠近法に基づく投影を行うクラスです。PerspectiveProjectionクラスは、下記3つのプロパティを持っています。fieldOfView遠近法の視野角を0より大きく180より小さいNumber型の数値で指定します。値が小さいとオブジェクトの遠近感が弱くなり、大きいと遠近感が強くなります。値が180に近づくほど歪みが強くなり、魚眼レンズのような効果になります。この値は、下記focalLengthプロパティの値と連動しています。focalLength遠近法の焦点距離をNumber型の数値で指定します。この値は、上記fieldOfViewプロパティの値と連動して動的に計算され設定されます。逆にfocalLengthの値を指定するとfieldOfViewプロパティの値も動的に計算され設定されます。point)をステージ左上隅を基準とした座標(Pointインスタンス)で指定します。DisplayObjectインスタンスのz座標を大きくするほど、この座標に近づいていきます。PerspectiveProjectionを使ったサンプルを作ってみました。NumericStepperでroot.transform.perspectiveProjectionのプロパティを変更できます。十字のマークの中心が消失点の座標で、ドラッグして変更することもできます。左の赤いSpriteはz座標を0に中央の緑と右の青のSpriteはz座標を100に指定しています。中央の緑のSpriteは、独自のPerspectiveProjectionインスタンスを生成しているので、rootのperspectiveProjectionの影響を受けないことが確認できます。Sample以下がソースになります。target_spは消失点を示すSprite、fov_nsはfieldOfView用のNumericStepper、fl_nsはfocalLength用のNumericStepper、pcx_nsはprojectionCenter.x用のNumericStepper、pcy_nsはprojectionCenter.y用のNumericStepperになります。}}感想としては、簡単な3D表現であれば十分にPerspectiveProjectionクラスで表現できると感じました。高度な表現には、Matrix3Dクラスなどの理解が必須だと思うので、少しづつ勉強していきたいと思います。