Away3Dが、2.2.5にマイナーバージョンアップ。svnリポジトリの trunk から落とせる。
最近あまり情報を追いかけてなかったので、細かいバージョンアップ内容はわかんないけど、バグフィックスが主なようですな。
そんな中で追加されたクラスが、RoundedCube 。角丸直方体というか、ベベルをかけたキューブが生成できる。
RoundedCube Test(要:FlashPlayer9)
import away3d.primitives.RoundedCube;
-- 中略 --
var btMat:BitmapFileMaterial = new BitmapFileMaterial("fuga.jpg");
var rcube:RoundedCube = new RoundedCube({width:200, height:200, depth:200, radius:32, subdivision:2, material:btMat });
scene.addChild(rcube);
てな感じで使う模様。radiusで角丸の半径を指定、subdivision で面の分割数を指定。subdivision の数値を高くすれば角丸がなめらかになる反面、ポリゴン数が増えて負荷も上がる。Sphereとかと同じ。
faces プロパティを使って、6面個別のマテリアル指定も可能。
rcube3 = new RoundedCube({
width:200, height:200, depth:200, radius:32,
faces:{ left:cMat1, right:cMat2, bottom:cMat3, top:cMat4, front:cMat5, back:cMat6 }
});
が、front と back が同じマテリアルになってしまうというバグ発覚。
RoundedCube.as の415行目を、
addFace(createFace(v1,v0,v2, (_cubeMaterials.front == null)? _material : _cubeMaterials.front, uv1, uv0, uv2 )); ↓ addFace(createFace(v1,v0,v2, (_cubeMaterials.front == null)? _material : _cubeMaterials.back, uv1, uv0, uv2 ));
に、修正するとよかです。
また、width、height、depth、radius、subdivision 等のプロパティは動的に値を変化させられるんだけども、毎フレーム数値を変えたりすると激重かつ、描画がおかしくなるので、ひとまずは一度定義したら変えない、もしくは頂点動かしたほうが無難っぽい。
あと、「awaybuilder」っていうクラス群が trunk 内に突如出現。よく調べてないけど、ヘルパクラスいっぱーいって感じかなぁ?
