読者です 読者をやめる 読者になる 読者になる

Metasequoiaでシャドウマッピング

製作環境

問題点・シャドウマッピングが必要になった背景

Metasequoia

f:id:cignoir:20141029044419p:plain:w500
作りたいものは左のような陰影の付いたイメージだったので、初めはPhongというシェーダを使って陰影を計算すればいいと思っていました。
右は陰影がないため自分で塗ったイメージがそのまま反映されています。陰影はシェーダにまかせていたのでほとんど自分では陰影を塗っていません。
ペイントスキルが貧弱なため非常にチープな仕上がりです。

CLIPSTUDIO COORDINATE / ACTION

f:id:cignoir:20141029044431p:plain:w500
左は幽霊かな?
Metasequoiaで作ったモデルをCLIPSTUDIOに持ってきたときに、同じPhongシェーダでもかなり印象が変わってしまった上にCLIPSTUDIOではライティングの設定がまともに出来ないことがわかりました。

「自分の好みの陰影を付けるには……そうだ、シャドウマッピングで陰影をテクスチャに焼いて一貫してConstantシェーダを使おう。」

以上が今回シャドウマッピングが必要になった背景です。

シャドウマッピングとは

リアルタイムに影を計算・描画するコストが非常に大きいため、あらかじめ影の影響を計算してテクスチャに焼き込む技法
これには以下のようなメリットがある。

  • リアルタイムに陰影を計算しなくてよいため描画負荷を低減できる
  • 陰影計算のクオリティがレンダラーの性能に左右されなくなる
  • 光と影の影響を機械的に厳密に計算することによってリアルなテクスチャを作成することができる

手順

1. 材質設定

シャドウマップを生成したい材質のシェーダを「Phong」にして頂点カラーのチェックをはずします。
f:id:cignoir:20141029054627p:plain:w300

2. オブジェクトと材質の選択

シャドウマップを生成したいオブジェクトと材質を選択状態にしておきます。
f:id:cignoir:20141029055005p:plain:w300

3. 陰影の頂点カラー化

[頂点色] -> [陰影の頂点カラー化] を選択します。
f:id:cignoir:20141029054813p:plain:w500

すると上図の一番右のダイアログが表示されるので、「現在のオブジェクト・材質」「Constant + 頂点カラー」を選択して [OK]ボタンを押します。

※階層化されたオブジェクトの場合、親オブジェクトだけ選択してもうまく出力できないことに注意。

4. テクスチャへ変換

[テクスチャへ変換]ボタンを押すとファイル保存用のダイアログが開くので任意に設定をして保存します。
f:id:cignoir:20141029055616p:plain:w300

※陰影の適用範囲と保存する範囲は適宜読み替えて設定してください。

5. テクスチャ作成

下の画像のようなシャドウマップが生成されるため、あとは調整して任意のペイントソフトで加工してください。
f:id:cignoir:20141029055818p:plain:w300

↓ 元のテクスチャにわかりやすいように青で陰影を乗算してみたもの
f:id:cignoir:20141029060054p:plain:w300
「Constant + 頂点色なし」ですがちゃんと陰影が付いています。

直接光と環境光(Ambient Light) について

アンビエント・オクルージョン(AO・環境遮蔽)

Metasequoiaの光源設定は直接光を表現しています。
直接光だけではなく環境光によって出来る陰影をマッピングすることによってさらにリアリティを高めることが出来ます。
Metasequoia上では「遮蔽計算」という機能によってAOを再現出来ます。

遮蔽計算

遮蔽計算してみたものです。細部のリアルな陰影を確認出来ます。
眼球はかなり窪ませてあるのでAOを適用するとかなり暗くなっちゃいますね。
f:id:cignoir:20141029060247p:plain:w300

また、環境光による陰影なので直接光と違って背後が真っ暗になりません。
遮蔽計算後、テクスチャへ変換することによって直接光と同じようにファイルに保存することができます。
f:id:cignoir:20141029060648p:plain:w300

下着のAO

可視状態のオブジェクトが遮蔽物となるため、下着のAOを計算したい場合はその上に着ている衣服が見えない状態で計算する必要があります。

完成

任意のペイントソフトで陰影を調整して完成です。
以下は「Constant + 頂点色なし」の表示です。
テクスチャに陰影を焼いているのでアプリケーションが違っても同じような陰影が表示されていることを確認出来ます。

CLIPSTUDIO

f:id:cignoir:20141029064511p:plain:w300