HoudiniのCOPでUVパスを元にテクスチャを入れ替える 1


どうも、篠島です。前回はUVパスの吐き出し方を説明したので、今回はUVパスを使ってコンポジット時にテクスチャを入れ替える方法を説明したいと思います。今回は実際の操作の仕方ではなく、大まかな概念を説明します。

3

 

まず初めに、テクスチャを入れ替えるには以下のパスが必要になります。

  • UVパス
  • ライティングのパス

ライティングのパスは何かと言うと、オブジェクトの色などを無視したライトだけの情報を記録したパスという事です。

前の記事でパスをライトごとに出力と言うのがありますが、これはオブジェクトの色が反映されてしまっているために純粋なライティングのパスとは言えません。Diffuseの色が豚の肌色になっています。ライトは白なのでライティングのパスは白黒の情報にならなくてはなりません。

diff1
メインライトのDiffuseパス

 

残念ながらHoudiniにデフォルトでライティング情報のみを記録したパスは出力できません。なので色々と工夫してライティングのパスを作る必要があります。Houdiniでライティングのパスを作るには以下の2つパスが必要です。

  • Diffuse Color パス (ライティング情報なしのベタ塗り。オブジェクトの色の事)
  • Diffuse パス (ライティングとオブジェクトの色が合わさった物)

Diffuseは下のように計算されます。オブジェクトの色とライティングを掛けあわせたものがDiffuseになります。と言うことは、Diffuse から オブジェクトの色を割って上げればライティングの情報が作れるという事になります。

1

これを図で分かりやすく表したのが下になります。
純粋なライティングだけの情報は白黒で表されているのがわかるかと思います。

calc

 

さて、ライティングのパスの作り方がわかったのでテクスチャを入れ替える説明をします。テクスチャを入れ替えるということは、要はオブジェクトの色を入れ替えているという事になります。と言うことは上の式にテクスチャを入れ替えた物を代入すると下のように表すことができます。
テクスチャにライティング情報を掛け合わせることでDiffuseができました。そのDiffuseにReflectionなどの他の要素を追加していくことで元の質感を再現します。

2

 

Diffuseを上のように求めなくても、単純にDiffuseシェーダーをオブジェクトにアサインしてライティングを求めることもできますが、グローバルイルミネーションなどがあると複雑になってくるので個人的には上記の手法が良いと思っています。