Vidroシーンファイルを書き出してVidroで3D描画

 先日より、独自XModel形式から、Vidro用シーンファイルへの書き出しに着手しました。XModelからの3Dレンダラ用データの書き出しは機会を見てやってみたいと思っていました。

動機

  • 現在の資源を活用する条件下で、オフライン3Dレンダラを活用し、GIなどを駆使したリアルタイムでは容易ではない映像を作れる環境の模索
  • モデルの都合、透過つまり、テクスチャによるのパンチアウトが扱えるオフライン3Dレンダラや、想定通りの挙動を実現したフロントエンドが欲しい
  • スキニングの適用を容易にしたい

作成したツール「XModel2012」(仮)の概要

  • 使用フレームワーク: WPF + XNA Game Studio 4.0
  • 非リアルタイム3DレンダラとしてVidroの実行ファイルを呼び出します。
  • XNAはリアルタイム3D描画を担当(Vidro書き出しの視点でいえば、プレビュー3D画面)
  • 開発背景: 独自のXModel形式で3Dモデルを管理/描画しています。

ツールのスクリーンショット

  • 左側は、Vidro描画結果の出力画像を表示しています。
  • 右側は、XNAを使ったリアルタイム描画です。

ツールの内容

  • オフライン3DレンダラとしてVidroを使うことにした
    • Vidroは専用シーンファイル*.vdrで記述されたシーンを読み込むことができる。物体形状はいくつかの一般的な3D形式を用いる。
  • ボーンアニメーションによるスキニング結果をメッシュに適用するため、編集時モデル(XModelドキュメント)のスキニング済みクローンを作れる機能を追加した。
    • リアルタイム描画時は、ランタイムモデルでスキニングする。
  • 物体形状には、Vidroが対応するMetasequoia (*.mqo)形式を選択して、変形済み編集時モデルをMQO形式で書き出すようにした。
    • もともとMetasequoia + Keynoteでモデルを作業して、XModelにエクスポートしていること、MQOファイルの生成が易しいことから。
  • 材質は、mqoにも書き出すが、vdr側にも書き出し、vdr側を利用されるようにした。
  • vdr用にテクスチャ(RGBA)のアルファ値から、透明度画像、アルファ(不透明度)画像を書き出すようにした。
  • XModelの構成要素をいくつか追加した(XModel2012仕様)
  • vdrに「カメラ」「点光源」「環境光(空/地)→SkyLight用テクスチャ」を書き出すようにした。
  • ツールでXModelファイルをロード後、カメラ調整、ライト調整、ボーンアニメーション再生などの操作をできるようにした。
  • 「Render」: 現在状態をvdrシーンファイルに書き出し、Vidroをプロセスで起動して描画を非同期で待ち、結果の画像ファイルをツール内で確認できるようにした。
  • 「Render Range」: アニメーションの複数のフレームを連続で「Render」できるようにした。
  • いくつかのXModel周りの調整を進めた。

 まだまだ調整が必要ですが、限定的なツール環境下で「アニメーション適用済みのプリレンダリング3Dシーンの画像や動画の作成しやすい環境」に一歩前進と言えそうです。