note.x

新しくなったCube.as

Rev.115でCubeクラスが新しくなって、今までのCubeクラスに相当するものはOldCubeクラスに名称変更になった。かなり忘れそうなのでメモっとく。

OldCubeは名前が変わっただけで、これまでと同様の扱い方でオッケー。

new OldCube( MaterialObject3D, width, depth, height, segmentsS, segmentsT, segmentsH, initObject )

obj_OldCube.swf(要:FlashPlayer9)

新Cubeクラスは、マテリアルオブジェクトをMaterialsListで渡す必要あり。

var materials:MaterialsList = new MaterialsList(
{
front: Material1,
back: Material2,
right: Material3,
left: Material4,
top: Material5,
bottom: Material6
});

new OldCube( MaterialsList, width, depth, height, segmentsS, segmentsT, segmentsH, initObject )

これで各面ごとに異なるマテリアルが割り当てできる。以前取り上げたパッチがオフィシャルに吸収されたと。

obj_NewCube.swf(要:FlashPlayer9)

オフィシャルリリース版には反映されてない変更内容なので、今後まだ変わるのかも。


BitmapColorMaterialってどうなのよ

PV3D1.5から追加されたマテリアルクラスの一つBitmapColorMaterial。
単色オンリーのBitmapMaterialって感じで今一つ存在意義が良くわかんない、速かったりするの?という、Aquiouxさんのエントリー「Papervision3D 1.5 のマテリアル:閃光的網站・弛緩複合体」を読んで全く同意だったんで、速度比較してみた。

・ColorMaterialを使ったもの

・BitmapColorMaterialを使ったもの
(要:FlashPlayer9)

圧倒的にColorMaterialが速い。体感的にはColorMaterialのほうがBitmapMaterialより速いと感じていたので予想通りの結果。ますます使いどころがわからん。オブジェクトの表面にリアルタイムに色塗ったり絵描いたりするようなもの作る時に使うのかなぁ。

テストの副産物として、BitmapColorMaterialにalphaのパラメータが反映されないバグを見つけた。
BitmapColorMaterial.as 23行目

bitmap = new BitmapData(BITMAP_WIDTH,BITMAP_HEIGHT,fillAlpha > 1,0×00000000);
fillColor = color;
fillAlpha = alpha;

これを以下に書き換える

fillColor = color;
fillAlpha = alpha;
bitmap = new BitmapData(BITMAP_WIDTH,BITMAP_HEIGHT,fillAlpha < 1,0x00000000);