[Papervision3D]3Dオブジェクトにalphaプロパティを追加
Papervision3Dで
3Dオブジェクトにalphaプロパティが無くて「透明→不透明」の演出が出来ない。
「MovieMaterial」は処理が重いのでNG
そこでPapervision3Dを少しいじってみました。いまのところ「BitmapMaterial」かつ「Plane」の
3Dオブジェクトだけつくりました。
下記のコードを追加すれば「alpha」プロパティが追加されて
不透明度を操作することが出来ます。しかも軽い
ただ、BitmapDataのクローンを作成するので少しリソース食います
でかい画像をテクスチャにするときは使えない。
ファイル名:Plane.as
public var cmf=new ColorMatrixFilter([1,0,0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0]); private var _alpha:Number=1; public function reset_alpha(){ cmf=new ColorMatrixFilter([1,0,0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, _alpha, 0]); this.material.texture.applyFilter(this.material.bmpd, this.material.bmpd.rect, new Point(0, 0), cmf); } public function set alpha(v:Number):void{ if(!this.visible)return; _alpha=((v<0)?0:v); cmf=new ColorMatrixFilter([1,0,0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, _alpha, 0]); this.material.texture.applyFilter(this.material.bmpd, this.material.bmpd.rect, new Point(0, 0), cmf); } public function get alpha(){ return _alpha; } public function dipose_bmpd(){ this.material.bmpd.dispose(); }
ファイル名:BitmapMaterial.as
変数を宣言 public var bmpd:BitmapData; コンストラクタの該当部分を下記のようにする if( asset ){ texture = asset; this.bmpd=asset.clone(); }