Fake3D / lighting & debug

2010.05.08 | fake3d, flash

前回のFlashビルトイン3Dを使った3Dエンジンの続きです。
名前が長いので「fake3d」とします。

[ demo ]

今回はデバッグがてらpv3dで作成されたclockmaker.jp/blogのカスタムフラットシェーディングサンプルをfake3dで動かしてみました。それと前回ちらっと書いたDebugツールの紹介です。

papervisionで書いたものとほぼ同じように書けるようにしているので移植も簡単です。
基本はpv3dと同じく、fake3dのBasicViewを継承してつくっていきます。
参考にdocumentClassのsourceを。

sourceをみてもらったら分かるのですが、
var cube:Cube3D = new Cube3D(f0_, f1_, f2_, f3_, f4_, f5_);
みたいな感じで、それぞれの面のDisplayObjectをそのまま渡しています。
fake3dではライティングはそれらのDisplayObjectに対してfilterを適用しているので、そういった手間が必要ありません。
ライティングは cube.light = light; のように3Dオブジェクトにlightオブジェクトの参照を渡すと有効になります。

materialに関しての違いで、
pv3dであれば、今回のような一種類のテクスチャを複数のcubeに適用するコンテンツをつくる場合はmaterialの描画にbitmapDataを使用しているので、一つのmaterialをつくってそれを複数のオブジェクトに適用すればよいのですが、fake3dの場合それぞれの面はそれぞれのDisplayObjectをそのまま使用しているので、面ごとにそれぞれのDisplayObjectを作成する必要があります。
これは表現するコンテンツによって使い勝手や動作速度に影響するところだなぁと感じています。
こういう作りだからいいところもあり、悪いところもある。
メモリの使用量などもろもろ比較する必要があるなと。

さて次はDebugツールについてです。
サンプルのコンテンツを表示中に何かキーボードを押すと、Debugツールが表示されます。

パラメータの確認と変更用のデバッガ。
三面図を表示するデバッガ。
画面上にベクトルなどを表示するRayデバッガ。
の3種類をひとまず用意しています。

パラメータのデバッガは、

var pramDebugger:Stage3DDebug = new Stage3DDebug();
pramDebugger.addDisplay3d(light, -500, 500);
this.addChild(pramDebugger);

みたいな感じで使います。
オブジェクト渡すと、それらのプロパティを操作・確認できるスライダが表示されます。
(lightのx,zはマウス位置に連動して変化するので、操作できるのはy座標のみ)

三面図表示は、

debugViewPanel = new ViewPanelDisplay();
debugViewPanel.addObj(camera, 0xffff00);
debugViewPanel.addObj(light, 0x00ffff);
debugViewPanel.start();
this.addChild(debugViewPanel);

それぞれのオブジェクトの位置と、Rayデバッガで設定したベクトルを表示します。

Rayデバッガは、

Debug.init(this, debugViewPanel);//初期化
rayDebugPanel = Debug.createLayer();
this.addChild(rayDebugPanel);

というような感じで初期化して、描画部分で

Debug.drawRay(target:Vertex3D, ray:Vector3D, color:uint=0xff0000);

のように指定します。
unity3dのDebug.DrawRayとほぼ同じ使い方です。

drawRayで指定したものは、三面図にも自動で表示されます。
なにかと確認するのに便利、、、というかデバッグ気分を盛り上げるためのツールです。

サンプルはデバッガ出しすぎて分かりにくいですね。絶賛デバッグ中。
デバッガ表示状態だと動作が遅くなるので要注意です。

pv3dのコードを移植してみて、いろいろと足りない部分がまだまだあるなぁと痛感。
時間をみつけて進めなければ。

ちなみに自分の環境 mac chrome flash 10,1,53,22 だと60fpsでるんですが、
win chrome flash 10.0.45.2だと30〜40fpsくらい。mac safariが一番遅い、、環境でかなりかわりますね。
flash 10.1が速くなってる!?

comment

Please Leave a Reply

TrackBack URL :

pagetop