2009 年 12 月 のアーカイブ

Math.random()のべき乗で取得する値の波をつくる

2009 年 12 月 31 日 木曜日

ぶるぶる振動するジッターエフェクトを作っていて、たまに大きな波を起こしたいと思いまして。
小さな波の中に低確率で大きな波を持たせる方法。

var sp:Sp = new Sp();
addChild(sp);

function update(e:Event):void
{
	sp.x = 200 * Math.pow(Math.random(),10);
	sp.y = 100;
}

Math.random()関数を10回繰り返す。べき乗されるごとに確立は1/2になっていく、のかな?

値によって何パターンか処理を分岐させる場合はswitchとかだけど、取得した乱数の値をそのまま使用する場合にはお手頃。

タイムライン上に配置したビットマップ

2009 年 12 月 21 日 月曜日

タイムライン上に配置したビットマップはShapeとして書き出されることを今知った。CS3ですが。

素材だけタイムラインに置いてクラス側で制御、わざわざ各素材をシンボル化するのが面倒だからgetChildAt()とかで操作しようとしてエラー。
どうなっているのかと表示リストを出力してみたら[Object Shape]が返ってきた。しかも複数のビットマップも書き出し後は単一シェイプとして書き出されていた。

ということで、個別にMovieClipとしてシンボル化するか、クラス側で生成って結論。かな?
CS3のライブラリパネルは使い心地がちょっと、、なのであまり数を増やしたくないというのがそもそもの発端。

[PV3D]Max3DSクラスで読込んだモデリングにマテリアル(テクスチャ)とシェードを当てる

2009 年 12 月 8 日 火曜日

これはかなりハマったのでメモ。

Max3DSクラスで拡張子.3dsのモデリングを読込み、ビットマップテクスチャとシェードを適用させたかったんですけど、通常通り読み込み時にShadedMaterialを渡すとレンダリング時にエラーが出てしまう。。

いろいろ試してみた結果、後から(読込み完了後かな)replaceMaterialByName()で画像を差し替えることで解決。


private function setModel(src:String):void
{
var texture:BitmapMaterial = new BitmapMaterial(new Bitmap(new Image(0,0)).bitmapData);

var shader:GouraudShader = new GouraudShader(_light, 0xFFFFFF, 0x000000, 20);
var shaded:ShadedMaterial = new ShadedMaterial(texture, shader);
_model = new Max3DS();

/**
* ここでShadedMaterialを当てるとエラー
**/
_model.load(src, new MaterialsList( { all: texture} ));

_model.addEventListener(FileLoadEvent.LOAD_COMPLETE, function():void
{

/**
* このタイミングでShadedMaterialを差し替えるとOK。
**/
_model.replaceMaterialByName({shaded,"all"})

_scene.addChild(_model);
_renderer.renderScene(_scene, _camera, _viewport);
});
}

ShadedMaterialというか、シェード関連を当てるとエラーになった。現象を把握できるほどPV3Dの知識ないので追求はしないにょ。

ちなみに解決までの足取りはこっちにいろいろ書かせていただきました。

http://www.flash-jp.com/modules/newbb/viewtopic.php?topic_id=9155&post_id=44091&order=0&viewmode=flat&pid=0&forum=6#forumpost44091