Papervision3DとCollada(.dae)で3Dアニメ


最近では3Dのwebコンテンツも増えてきました。
そこでFlashで超有名な3DライブラリであるPapervision3D(以下PV3D)を使ってみたいと思ったりします。
PV3Dの「Hello World!」サンプルやソースは世の中にたっくさんあるので(私も参考にさせていただきました)ここであえて試す必要もないと思い、ちょっと進んでいきなりアニメーション付のモデルを表示することを目標にします。
 
 
■3Dのモデリング
3Dのアニメーションを行うには3Dのモデルが必要です。当たり前ですが・・・
PV3Dには最初からスクリプトで生成できる平面や球体といったプリミティブオブジェクトが存在します。
ただこれらを組み合わせるだけではなかなか期待通りのモデルは作れません。
そこで登場するのが3Dのモデリングソフトです。
ソフトウェアですので各メーカーから色々なものが出ています。
有名どころでいうと3ds MaxやLightwave 3Dなどがあります。
 
 
■どのソフトでモデリングするか?
どのソフトを選ぶべきか?という大きな大きな問題があります。
コンビニでも売っているようなお値打ち価格ならあまり悩まないのですが、高いものはウン十万円します。
また今回PV3Dで表示・再生する為には、モデリングしたデータをPV3Dで読み込み可能な形式で書き出せる必要があります。PV3Dはいくつかの種類のデータを読み込むことができるのですが、今回はわりと一般的な3Dデータのファイルフォーマットとして知られているColladaファイルで行うことにします。

ならばColladaファイルが書き出せるソフトならなんでも良いか?というと、そうでもありません;
私が試したところ(PV3Dのバージョンによる影響かもしれませんが)Colladaファイルで書き出しても期待通りに表示されない場合があります。これは各モデリングソフトのCollada書き出しがマチマチで、統一規格ではあるものの違いが出てしまう為と思われます。
以下は私がCollada書き出しを行った結果です。

  Swift 3D 5.0 Lightwave 3D 9 Ultimat Unwrap3D 2.0SE Blender
表示
アニメーション × ×

※ソフトウェアに対する知識が乏しい上での結果ですのであくまで参考程度とお考えください。
 
 
■Swift 3D 5.0
さすがPV3Dとの親和性をうたっているだけあってあっさり表示できました。
一緒に書き出されたテクスチャーが左右反転してしまうのはバグなのか設定ミスなのかは不明です。
モデリング自体は数値指定による厳密な操作が出来ませんので複雑なモデリングには不向きかもしれません。しかし3ds形式のモデルが読み込み可能なので、他のモデラーで作成した3ds形式のデータをColladaファイルで書き出しする為に使うのも手かもしれません。
残念ながらアニメーションには対応していないようです。バージョン6.0は未検証ですがPV3Dの2.0に対応したとのことです。

■Lightwave 3D 9
よく知られている3Dモデリングソフトです。プラグインも豊富でColladaファイルのエクスポーターも配布されています。ただ書き出したColladaファイルはPV3Dで上手く表示できませんでした。アニメーションには対応していないようです。

■Ultimat Unwrap3D 2.0SE
Yellp Soupさんのブログで紹介されており、私も実際に試してみました。ソフトは外国製の為すべて英語ですがPV3Dと親和性の高いColladaファイルを書き出すことができます。またサポート体制が非常に良く、私が翻訳サイトを利用しながら質問した内容について、速対応済みのプラグインを幾度か用意していただきました。
アニメーションにも対応している点や価格が5000円程ということもありColladaファイル書き出しに重宝しそうです。

■Blender
本格的な3Dモデリングソフトでありながら、なんと無料です。
しかもアニメーション付のColladaファイルが書き出せます。(プラグインの設定などに若干難アリ)
ただ、私の設定ミスの為かモデルの1部分でもマテリアルにテクスチャーを指定すると、その他マテリアルがテクスチャーではない場合、PV3Dで上手く表示されませんでした。
 
 
模索した結果、というかYellp Soupさんのブログの影響をモロに受けてLightwave 3D+ Ultimat Unwrap3D 2.0SEでやってみることにしました。
制作の流れとしては…
Lightwave 3DのModelerでモデリング▼
→.lwoで保存
Lightwave 3DのLayoutでアニメーション▼
→.x(DirectX)で書き出し
Ultimat Unwrap3D 2.0SEで読み込み▼
→.dae(Collada)で保存
PV3Dで再生。

Ultimat Unwrap3Dは当初のプラグインでは左手系に対応していませんでしたが、サポートに問い合わせしたところ、DirectXのインポーター及びColladaのエクスポーターのプラグインに左手系への変換機能(Flip handednessにチェック)を実装していただくことができました。
 
 
■サンプル
以下がボーンアニメーションしている(第一歩を踏み出している)サンプルです。
画面をドラッグするとカメラのアングルを変更できます。

Get Adobe Flash player