2010年9月12日日曜日

FLARManager ver1.0系の説明書

前回(Sixwish.jp Blog: FLARManager チュートリアル翻訳)の翻訳以降、ほとんど手を入れていなかったのですが、FLARManager ver1.0がリリースされたので、再度調整したものを公開しました。

取り敢えず二箇所で公開されています。

FLARManger
http://sixwish.jp/FLARManager/

FLARManger support library
http://artoolworks.jp/FLARManager/

もう少し書き足したいのですが、それについてはおいおい継ぎ足す……予定?

ちなみに、FLARManagerですが、NyIDマーカーへの対応とかを予定しているとかとか。
恐らく、Flare*Trackerとの関係が詰め切れればでるんじゃないかなーと。

2010年9月6日月曜日

PV3D : QuadrantRenderEngineのメモリリーク

FLARToolKitでは、Papervision3Dに入っているレンダリングエンジンのうち、LazyRenderEngineを使っているのですが、とある理由から、QuadrantRenderEngineを使ってやりたいという話になり、組み込んでみたわけですが……何気にメモリリークしている事が判明orz

使っていると、延々とメモリを食い続けるというね……
正直PV3Dから原因を突き止めるには時間が無く、別の手段も検討しつつウェブを巡っていたのですが、公式フォーラムに原因が載っていた……ついでに解決策も……誰か反映しておいてくれよ……マジで。

ということで、直し方を説明。
おかしいのは、org.papervision3d.materialsパッケージ内の BitmapMaterial.as です。

修正箇所は下記。

まずは、59行目。

-- 編集前 --
59 : public var uvMatrices:Dictionary = new Dictionary();
-- 編集後 --
59 : public var uvMatrices:Dictionary = new Dictionary(true);

続いて 97行目付近。

-- 編集前 --
97 : public function resetMapping():void
98 : {
99 :     uvMatrices = new Dictionary();
100: }
-- 編集後 --
97 : public function resetMapping():void
98 : {
99 :     for ( var obj:* in uvMatrices ) {
100:         uvMatrices[obj] = null;
101:     }
102: }

最後が 733行目付近。

-- 編集前 --
733: public function resetUVS():void
734: {
735:     uvMatrices = new Dictionary();
736: }
-- 編集後 --
735: public function resetUVS():void
736: {
737:     for ( var obj:* in uvMatrices ) {
738:         uvMatrices[obj] = null;
739:     }
740: }

このあたりを直せばいいらしい。

FLARToolKit内に含まれるPV3Dにはこの修正を入れておいたけれど……本家で直してパッケージ出して欲しいわ……