Simple Level of Detail – pv3d

Papervision3DでLevel of Detail(LOD)のテスト。
LODとは視点からの距離に応じて描画する3Dオブジェクトの頂点数(ポリゴン数)を増減させるテクニックのこと。

—-> Simple Level of Detail Demo <—-
カーソルキーの上下で操作してみてください。
ドキュメントクラスのソースコードも上げておきます。

pv3d 2.0 GreatWhiteには、
org.papervision3d.objects.special.SimpleLevelOfDetail
というクラスがあるので今回はこれを使います。
Papervision LOD – SimpleLevelOfDetailのサンプルソースはSimpleとは言いづらいものだったので、
これをSimpleに書き直し。機能だけを見るための最低限のテストです。

LevelOfDetailクラスの使い方はとても簡単で、コンストラクタは

objectsにディテールの違うマテリアルを入れておきます。

materialsはWireframeMaterialでもBitmapFileMaterialでもなんでも。
unshiftなので、配列の先頭に近いほど高精度のモデルが入ってます。
このfor文だと8段階のLODになります。
minDepth、maxDepthはそのまま。それぞれ最小深度、最大深度を表します。
この範囲でモデルのディテールが変わっていきます。
最後のdistancesはどの深度でディテールを切り替えるかを指定します。例えば、

この場合、深度1000未満ならobjects[0]、1000以上1500未満ならobjects[1]、、、という具合です。
あとはこのSimpleLevelOfDetailインスタンスをsceneにaddChild。

ひさびさにpv3d触りました。
BasicViewを使えば短くシンプルに書けますね。
今回は地味なデモだったけど、エフェクト系のやつも今度作ってみよう。

あわせて読む:

コメントを残す

メールアドレスが公開されることはありません。