note.x

Away3D 3.5.3 for FP10

Away3DのFlashPlayer10版が大きく仕様変更して、MatrixAway3Dクラスが廃止。ビルトインクラスのMatrix3Dに置き換わった。なので、Object3Dのtransformプロパティの各要素を直接書き換えたりするような実装してる場合はMatrixAway3Dに関わる部分を変更しないとビルドできない。MatrixAway3DとMatrix3Dの各要素は下記の対応づけ。

MatrixAway3D

MatrixAway3D.sxx MatrixAway3D.sxy MatrixAway3D.sxz MatrixAway3D.tx
MatrixAway3D.syx MatrixAway3D.syy MatrixAway3D.syz MatrixAway3D.ty
MatrixAway3D.szx MatrixAway3D.szy MatrixAway3D.szz MatrixAway3D.tz
MatrixAway3D.swx MatrixAway3D.swy MatrixAway3D.swz MatrixAway3D.tw

ビルトインMatrix3D

Matrix3D.rawData[0] Matrix3D.rawData[4] Matrix3D.rawData[8] Matrix3D.rawData[12]
Matrix3D.rawData[1] Matrix3D.rawData[5] Matrix3D.rawData[9] Matrix3D.rawData[13]
Matrix3D.rawData[2] Matrix3D.rawData[6] Matrix3D.rawData[10] Matrix3D.rawData[14]
Matrix3D.rawData[3] Matrix3D.rawData[7] Matrix3D.rawData[11] Matrix3D.rawData[15]

値を読み取るだけなら、

var tx:Number = Object3D.transform.tx;

という記述を、

var tx:Number = Object3D.transform.rawData[12];

に置き換えることで対処できる。

要素の値を変更する場合、MatrixAway3Dの要領で

Object3D.transform.rawData[12] = 100;

なんて感じで直接代入しても変更が反映されないので、

var vec: Vector.<Number> = Object3D.transform.rawData;
vec[12] = 100;
Object3D.transform.rawData = vec;

と、Matrix3Dの仕様に準ずる。

また、MatrixAway3Dで実装されていたメソッドの

  • quaternion2matrix
  • compare

と、ゲッター/セッターとして定義されていた

  • forward
  • up
  • right

は、Matrix3DUtilsという新クラスが引き継いでる。
forward, up, rightについては読み取り専用でそれぞれ

  • getForward
  • getUp
  • getRight

というメソッドに変更になった。

あと、ベクトルについても主要な部分はNumber3DからVector3Dへ移行してる。
まだ一部でNumber3Dが使われている部分があるけど、最終的にはなくなるみたいなのでNumber3Dは忘れてよさげ。Number3Dに実装されてたgetAngleメソッドは、新クラスVector3DUtilsが引き継いでる。

今回の仕様変更がどの程度影響してるのか分からんけど、じわじわと高速化してきてうれしげ。新機能いらないから洗練してほしい。

2010/09/16追記
とか言ってるうちに、FP10版3.5.4にアップデート。
ArrayをVectorに置き換えたりという地味な最適化を目的としたものみたいだ。


TRACKBACK

  1. [...] This post was mentioned on Twitter by axcel_rss, clockmaker_bot. clockmaker_bot said: [B!]Away3D 3.5.3の仕様変更について http://htn.to/v4EnGT [...]

Trackback URL : http://blog.r3c7.net/as3-software-rendering/524/trackback/

Leave a Reply