3次元空間における
- ※1
- 実は,
多くのフィルタも内部的に行列演算を行っている。もちろん, 3次元は関わりなく, 変換の計算をしているのは画像のピクセルごとのカラー情報だ。しかし, ユーザーは内部的な処理まで知る必要はない。どのパラメータを動かせば, どういう結果になるのかさえ捉えられればよい。Matrix3Dクラスについても同じである。
DisplayObjectインスタンスのもつMatrix3Dオブジェクトを操作する
DisplayObjectインスタンスの3次元空間における座標変換の情報をもつMatrix3Dオブジェクトは,
DisplayObjectインスタンスに平行移動や回転あるいは伸縮の変換を加えるには,
Matrix3Dオブジェクト.prependTranslation(移動x座標値, 移動y座標値, 移動z座標値)
Matrix3Dオブジェクト.prependRotation(回転度数値, 回転軸)
Matrix3Dオブジェクト.prependScale(水平伸縮率, 垂直伸縮率, 奥行き伸縮率)
それでは,
// タイムライン: メイン
// タイムラインにMovieClipインスタンスmy_mcを配置
var myMatrix3D:Matrix3D = my_mc.transform.matrix3D;
myMatrix3D.prependRotation(45, Vector3D.Y_AXIS);
ところが,
TypeError: Error #1009: nullのオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。
実際,
DisplayObjectインスタンスにMatrix3Dオブジェクトを与えるには,
// タイムライン: メイン
// タイムラインにMovieClipインスタンスmy_mcを配置
my_mc.z = 0; // z座標を操作
var myMatrix3D:Matrix3D = my_mc.transform.matrix3D;
trace(myMatrix3D); // 出力: [object Matrix3D]
myMatrix3D.prependRotation(45, Vector3D.Y_AXIS);
これで,