Alternativa3Dでウォークスルー #3 レンダーベイキング

2011年4月11日
前回はキャラクタ用コリジョンを作って部屋の中を歩き回るデモを作りました。その部屋の中の見た目がやわらかい感じになっていますが、あれはモデリングソフトでオブジェクトに落ちる影や光をテクスチャに焼きつけているからです。一般的にはレンダーベイキングって言うのかな。今回は3dsMax2010を使って前回のシーンのようなテクスチャに影をベイクしたものを書き出すまでの手順を書いておきます。丁度今作っているモデルがあるので説明にはそれを使って行きます。

使った物

モデリングソフトには3dsMax2010を使いました。Alternativa3D(A3D)の3dsMax用プラグインが出ているのでCOLLADAの書き出しにはそれを使います。このプラグインを入れると、A3D専用オブジェクト(Sprite3DとLOD)が生成できるようになって、オブジェクトごとにA3D用プロパティ(ソート形式や透明度等)を設定してDAEファイルにそれらを含めて書き出せるようになります。

1. モデルを用意する

まずは3dsMaxで適当にモデリング、ライティングします。
maxmodeling.jpg

一番重要なテクスチャまで適当になっちゃいましたが・・・。引き出しの取っ手の部分はA3Dプラグインによって作れるようになったSprite3Dオブジェクトです。これは常にカメラの方を向いてくれるPlaneのようなもので、Maxのビューポート上でも機能してくれます。

2. レンダリングして確認

実際どんな感じの見た目になるか、レンダリングして確認します。
maxrendering.jpg

レンダラーにはmental rayを使いました。ファイナルギャザー(FG)とグローバルイルミネーション(GI)を有効にしたので影がいい感じになってます。FGもGIもパラメータが多すぎてややこしいよ。取っ手部分はA3D用のSprite3Dにしているせいかレンダリングでは表示されないようです。花瓶の影が落ちていないのは後で説明します。

ただ、このままCOLLADAに書き出しても当然A3Dでは影は表示されないのでのっぺりとした見た目になってしまいます。そこで3dsMaxの「テクスチャレンダリング」機能を使って、光や影をテクスチャにベイクしてA3D上でもレンダリング結果に近い見た目にしていきます。

3. UVWを設定する

テクスチャレンダリングは全オブジェクトに設定したいんですが、まずは椅子のモデルだけにテクスチャレンダリングする手順を書いていきます。

テクスチャレンダリングをさせるには、そのモデルにテクスチャ座標が設定されている必要があるので、ベイクしたいオブジェクトに「UVW アンラップ」モディファイヤを適用しておきます。

modeledit.jpg

適用したらUVWアンラップのサブオブジェクトレベルを面にして全選択し、「編集」を押して「UVWを編集」ウィンドウを開きます。そして[マッピング]→[フラッテンマッピング]を実行します。
uvwedit.jpg

うまくいけば上のような感じになります。テクスチャをベイクする際に気を付ける事は、生成したテクスチャ座標の複数の面が重なっているとベイク結果がおかしくなってしまうので、上のように全ての面が重なっていない状態にする必要があります。例えばキューブの6面全てが同じイメージだからといって6面全てを重ねてしまうとまずい事になります。

4. テクスチャレンダリング

UVWの設定ができたら、[レンダリング]→[テクスチャ レンダリング]でウィンドウを開きます。

texturerender1.png

  1. テクスチャレンダリングによって生成される新しいベイク画像の保存先の基本パスをここで設定できる。必須ではないが設定しておくとベイクするオブジェクトが多い時に楽になる。
  2. ビューポートで選択されているオブジェクトがここに表示される。選択したオブジェクトにベイクしたいのでビューポートで椅子を選択しておく。
  3. ベイク画像を生成する際に使うマッピング座標。UVWアンラップを設定しているのでここでは「既存チャンネルを使用」を選ぶ。
  4. 今回は選択した椅子だけにベイクの設定をしたいので「選択オブジェクト」を選ぶ。

texturerender2.png

  1. 最初はこのボタンの上のリストに何もないはずなので、「追加」を押してウィンドウを開いて
  2. CompleteMapを選んで「要素を追加」する。
  3. ここで保存するベイク画像のファイル名と種類を決めておく。1のフォルダと同じならファイル名だけでいいし、フルパスにすれば違う場所にも保存できる。
  4. ベイク後に生成した画像をマテリアルのどこに適用するか。見た目のイメージを変更したいので「拡散反射光カラー」を選ぶ。
  5. ベイク画像の大きさを設定。
  6. 「シェルを新規作成~」を選び、「新規ベイクを作成」で「標準:(B)ブリン」を選ぶ。これでベイク後にシェルマテリアルが設定される。
  7. 後は「レンダリング」を押してベイク画像が生成されるのを待つ。

これが完成したベイク画像。ちょっとわかりにくいけど、影が焼きこまれて単色ではなくなっています。
bakedimage.jpg

これでテクスチャレンダリングの作業は終わりです。

5. シェルマテリアル

テクスチャレンダリングが終わった後、椅子のマテリアルをスポイトで取ってみるとシェルマテリアルが適用されている事がわかります。
shellmaterial.jpg

これは「テクスチャのレンダリング」ウィンドウの10で自動設定されたもので、ビューポート上に表示されるマテリアルとレンダリングに使われるマテリアルを切り替える事ができるマテリアルです。上の図の場合は、レンダリング時には元々貼ってあった「wood ( Arch & Design (mi) )」が使われて、ビューポート上の表示にはベイク済みの「baked_wood ( Standard )」が使われます。COLLADA書き出しをするとビューポート上の設定がそのまま使われるようで、このまま書き出せばベイクされたテクスチャが使われる事になります。

ここで椅子のテクスチャをベイク済みのものにするだけならベイク済みテクスチャを直接椅子に貼ってしまえばいいのですが、その状態で再度テクスチャレンダリングを実行すると、ベイク画像の上に更に新しい影がベイクされてしまいどんどん影が濃くなってしまいます。後でシーンのライティングやオブジェクトの位置を変更する可能性のある場合はシェルマテリアルを使っておいた方が安全かもしれません。

後は、椅子以外の全てのオブジェクトにもテクスチャレンダリングの作業をしていきます。

6. COLLADA書き出し

ベイク作業が終わったら、「OpenCOLLADA + A3D」で書き出します。DAEが3つもあって間違えそう・・・
exportdae.png

書き出しオプションはOpenCOLLADAと同じっぽいです。
opencollada.png

書き出し時にエラーが出る場合

7. A3DでCOLLADAを読み込み

実際にA3Dに読み込むとこんな感じです。(動かせるデモは部屋全体ができてからにします)
a3drender.jpg

テクスチャレンダリングによってオブジェクトの影がテクスチャに直接焼きこまれてしまうので、オブジェクトの位置を移動させたりすると当然おかしな事になってしまいます。なのでA3D上で動かす予定のモデルはしかたなく影を落とさない設定にしました。花瓶の影が落ちていないのはそのせいです。影がないせいでちょっと浮いた感じになってますが・・・。それと引き出しは開閉させたかったので、

  • 引き出しのテクスチャは自分だけ開けた状態でベイク
  • 床のテクスチャは引き出しを全部閉めた状態でベイク
としています。引き出し部分はなんとかこれで誤魔化せたけど、ものによってはどうしてもおかしくなってしまうし、テクスチャレンダリングは使いどころが難しいね。

トラックバック(0)

トラックバックURL: http://www.morocoshi.net/mt/mt-tb.cgi/39

コメントする