Alternativa3Dを試してみる Part.08 : ワンダフルクエスト3D

osamXさんが nengafl |争奪10万円 FORK合戦! (wonderfl のコンテスト)に投稿されたワンダフルクエストがおもしろかったので、folkして3Dに移植してみました。

今回の3DはPapervision3Dではなく、Alternativa (オルタナティヴァ)というライブラリを使っています。当ブログでも幾度か紹介していますが、今回のデモでようやくメリットが発揮できた感がありました。

Papervision3Dが苦手とする3D

Papervision3Dは「床」が存在したり複数の3Dオブジェクトが近い位置に配置されている場合に、ポリゴン処理が苦手なケースがあります。

  • ポリゴンが重なったときの前後の判断処理
  • クリッピングによるポリゴン欠け

前者はQuadrantRenderEngineで、後者はFrustumClippingで解消できるのですが、それらの解決策を適用すると計算量が増え再生速度が落ち込む懸念点があります。Alternativa3Dではこの点が優れており、特にスクリプトで設定せずともディフォルトの状態でこの問題が発生しませんし、Papervision3Dほどの速度低下が発生しません(体感的には十分実用レベル)。それにAlternativa3Dはディフォルトでマテリアルが歪まないようにもなっており(Papervision3Dではpreciseを有効にする)、容易に3Dオブジェクトを正確に表示できる点がメリットだったりします。

以前に、PV3Dで飛行船:SpringCamera3Dを試してみるというデモを投稿したことがありますが、このデモも「床」が存在するためFrustumClippingの採用で処理速度の最適化に苦戦した記憶があります。床はX軸方向に傾けますが、そうすることで視点の近接に位置したポリゴンで奥行きの計算でクリッピング判定が怪しくなり(△の3頂点の単純な平均値を求めている?)、本来表示しなくてはならない△もクリッピングの対象となるケースがあります。(…と考えているのですが、ちょっと自信がないです。間違っていたらすみません)

Papervision3Dは△のZソートがベースで、Alternativa3Dは必要に応じて△を再分割するように設計されていますが、そのあたりが大きいのかと思います。

wonderflでAlternativa3Dのデモが増えている

最近、@narutohyper (@丸林商店)さんが非常に有益なAlternativa3Dのデモをwonderflに投稿されています。Alternativa3Dのデモやソースコードは少なく学習コストが高めでしたが、これを機に学習しやすくなると思います。もしこれからAlternativa3Dにも挑戦しようという方は、ぜひ参考にしてみてはいかがでしょうか。

応用例

Tips系(基礎)

Tips系(応用)

ブログ内のAlternativa3Dの関連記事

投稿者 : 池田 泰延

BookMark

ブックマークはこちらからどうぞ。

このエントリーをはてなブックマークに追加

Comment/Trackback %件