Rosso Laboratory

Rosso Laboratory

主に鉄道模型シミュレーター(VRM)などの仮想鉄道アプリを扱うブログです。またHDR写真の記事も書いています。

表面材質設定実験(2)

前回「バンプマッピング」よりも「スペキュラ」の方が重要であるということを書いたが、Trainzのアセットに良いお手本が存在する。それがKenichiro氏の家屋である。


Kenichiro氏のアセットのテクスチャーだけを見ても「多分この人は実際にゲームなどのリアルタイムレンダリング3Dに関わったことのあるプロなんだろうなぁ」と思う訳だが、表面材質設定の使い方を細かく見ていくとその思いは確信へと変わる。

私は静止画3Dばかりだったのでリアルタイムレンダリング3Dでのテクニックというものは殆ど知らなかったが、Kenichiro氏の表面材質設定を再現してみると「なるほどリアルタイムレンダリングではこうやって表現するのか。静止画の場合とは全く違うなぁ」と納得するのである。これが私にとっては非常に面白い内容であったのだが、恐らくその内容をいきなり書いても何のことかサッパリわからないだろうと思うので、少し基本的な事から書いていこう。

---*---*---*---

ではまず、表面材質設定の基本となる3項目についてgmaxで確認しておく。


<gmaxのMaterialEditor画面>

1)アンビエント(周囲光・環境光)色
・これはシーン全体に影響を及ぼす環境光の色と混じって表示される色。環境光の色をそのまま出すならばグレースケールにして反応する強度とすることが出来る(gmaxの裏技では真っ白にしておくことを推奨している)

2)ディフューズ(拡散反射光)色
・これは物体自体の色。gmaxではモデルの表面に必ずテクスチャーを貼り付けなくてはならないので、この項目はグレースケールとして物体自体の明るさとなって現れる(gmaxの裏技では真っ白にしておくことを推奨している)

3)スペキュラ(鏡面反射光)色
・これは太陽光など光源の色と混じって表示される色。ハイライトや光沢の部分と考える方が解りやすい。これも光源の色をそのまま出すならばグレースケールにして反応する強度とすることが出来る。また、そのハイライト部を強く細くするとガラスやプラスチックのようなツヤのある表現になるし、強く広くすると鏡面ではない鈍く光る金属、また弱くするとツヤのない布のような表現となるので、他の2項目よりも設定項目が多い。

言葉では解りづらいので、具体的に上記のKenichiro氏の家屋で光源色等を極端に変更して見てみると、

赤がアンビエントの影響、建物テクスチャーがディフューズマップ、水色がスペキュラの影響で、瓦屋根部分の同一平面でスペキュラの影響が疎らに見えているのがバンプマップの影響となっている。

---*---*---*---

更に具体的に例を挙げてみよう。実験段階のころに作った拙作の門でスペキュラの強弱による違いを見てみる。


<左:gmaxデフォルト出力、右:MAX4.2プラグイン出力>

この門のテクスチャーはShadeでレイトレーシングを使って出力したものなので、結構リアルなテクスチャーになっているはずである。しかし、両者を比べれば違いは明らかで、左はスペキュラが弱いので曇った時のような感じで沈んだ色合いに見える。一方、右は単純にスペキュラを付加したので光の当たり具合はおかしいが、強いスペキュラの影響によって見た目のインパクトと存在感が非常に強くなる上に立体感もかなり現れてくる。

---*---*---*---

さて、ここまでで私が面白いと思った「静止画3DCG」と「リアルタイムレンダリング3DCG」における表現方法の違いが解った人は、恐らく「静止画3DCG」を作ったことのある人だけだろう。何故ならば「静止画3DCG」の表現方法は一切書いていないのだから。

・・・では、「静止画3DCG」の表現方法を付け加えつつ解説しよう。

静止画3DCGの場合はリアルタイムレンダリングとは違い、レンダリング計算実行を命じて初めてレンダリング画像を得られる。レンダリングの計算方法にはスキャンラインやラジオシティなど色々あるが、静止画で最も使われるのはレイトレーシングであろうと思われる。なお、一番高速なスキャンラインでもレンダリング時間に数秒、ラジオシティレイトレーシングなら数分から数時間掛かることもある。

レイトレーシングならば鏡面への映りこみも再現されるが、今回重要な点は「影」が再現できるという点である。つまり、静止画の場合ならば表示に時間が掛かるが影が計算によって再現され、それによってモデルは立体感を得ることが出来る。勿論静止画の方でもスペキュラの設定はするのだが、それはあくまでもモデルの光沢具合などの材質感のためであって、立体感を表現するためではない。・・・ここが違うのである。

---*---*---*---

確かDirect3D10からはリアルタイムレンダリングでもシャドウボリュームという方法で高速に影を付けられるはずだが、多分Trainzではまだ採用されていないだろう。また、Trainzのアセットでも一部影を付けられる種類のアセットもあるが、全てが対応している訳ではない。Kenichiro氏の家屋のような「Scenery」アセットは全く影には対応していないのである。そのような影によって立体感を全く与えられないアセットに対し、どのような方法で立体感を出すのか。答えは、

「影」が使えなければ「光」を使って立体感を出す。

ということである。私からするとこれは全くもって逆転の発想であり、これが「なるほど面白いなぁ」と思ったところである。先にも書いたが、静止画でもスペキュラは当然設定する。しかし、それは材質感のためなので立体感を出すために面の明るさの差、つまりは陰影というものをこれで表現しようなどということは今まで一度も考えたことすらなかった。

影ではなくハイライトで立体感を出すという方法は、平面よりも球や円筒などの曲面の方が更に立体感が際立つので、「電停登録作業完了」に掲載したように電停の手摺に適用してみたが、あれでは適用面数が多すぎて極端に処理速度が落ちる。

<適用面数が多くて失敗したパターン>

よって適用する面数は必要最低限に止めなくてはならないが、恐らくKenichiro氏はそれも踏まえた(屋根だけスペキュラを強調し壁面には適用していない)上で更にバンプマップを併用し、その必要最低限である平面的な瓦屋根に変化と立体感を与えている。

ここまで書けば、Kenichiro氏がリアルタイムレンダリング3DCGモデルのノウハウを持っていることを疑う者は居ないだろう。どう見ても素人が構成できる内容ではない。Kenichiro氏作以外のアセットでも良いものはたくさんあるのだが、ズバ抜けた存在感があるのはこの辺に理由があるのだろうと私は思っている。

---*---*---*---

余談ではあるが、このスペキュラをgmaxで出力するための情報をフォーラムで探していた時に、やはり私と同じようにKenichiro氏のようなスペキュラの出し方について質問していたアセットクリエイターがいた。彼の作品はKenichiro氏の作品と雰囲気がよく似ているし、彼のレイアウトにはKenichiro氏の作品が数多く使われていたから、Kenichiro氏の作品に大いに影響を受けているのだろうと思ってはいたが、やはり目標にもしていたようである。

彼の名はDinorius_Redunicus氏。最近だと牛シリーズが話題になっていたアセットクリエイターである。

彼の最近の作品を見てもスペキュラが使われていないところを見ると、結局のところgmaxでのやり方は解らなかったように見える(例の裏技の情報を教えてもらっていたが、それはバンプマッピングの再現のためであって自分が欲しているハイライトの情報とは違うって書いていたから多分出来なかったのだろう)が、彼が欲する情報は無意味にココにあったりする(笑)。

いや、長くなったから次回にしよう。まぁ英文じゃ書かないけど(笑)。