例えば肌の色、ほほの色、頭皮の色など、Bodyのテクスチャを作るとなっても単色でというわけにはいかない。しかし細かく塗りこむのは厳しいうえ、いったん塗った色を変えるのも結構厄介。
そういう部分をもう少しうまくやる方法がないか模索し、複数のテクスチャを重ねるというやり方を知ったのでメモっておく。
また今回はセルルックなので注意。
方法1と方法2のメリットデメリット。方法1は頂点ペイントの分だけ手間が増えるが、色を重ねないので直感的。方法2は手間は省けるが、Mixの仕方で色味が変わるのが厄介。個人的には方法1がおすすめ
テクスチャを合成 方法1頂点ペイントを使用
今回は肌のベーステクスチャと唇テクスチャをひとつのオブジェクトに割り当てるという事例
①オブジェクトを選択してVertexPaintモードに
黒と白で塗り分ける。今回は唇を黒に。後で調整するので大雑把に塗った。
ここの塗り方で境界をぼかして合成するか、境界がはっきりなるよう合成するかどうかが変わってくる
ObjectDataPropertiesのColorAttributesで名前をつけておくとわかりやすい
②ベースの肌テクスチャを準備(なくても可)。例ではとりあえず単色の画像を使う
③唇のテクスチャを準備
これも別になくてもよいが今回はペイントしたテクスチャを使用
④ノードを組む
一番上のColorAttributeノードに①で作ったものを割り当て、MixColorノードのFactorに接続
頂点を黒く塗ったほうがA、白がBなので、2つのテクスチャをわりあてる。今回であれば唇のテクスチャをA、肌をB
ただ見て分かるように別に画像を準備する必要はない。直にABの部分で色指定してもOK。というより最初にここで調整してからテクスチャを作ったほうが能率が良いかもしれない・
描写を確認し、テクスチャなり頂点ペイントなりを修正する。
方法2 本のシェーディングを例に、ひとつのオブジェクトに複数のテクスチャを割り当てる
方法1と似ているが、頂点ペイントでなくテクスチャペイントを使う方法。
今回は漫画本のセットを例にやっていく
①背表紙、表紙、その他の3つの領域がある。前の2箇所にそれぞれテクスチャAとBを割り当てる。
そのことを考慮してシームを入れ、展開する。
画像の前面の部分が背表紙だが、今回3分割にしているのは利用する画像が小さいため。
UVの並びはとりあえず大雑把でよいが、背表紙と表紙とその他で分ける。今回展開した四角を重ねているのはテクスチャが小さいため
②とりあえず背表紙用のテクスチャ画像を割り当ててみる
割り当てた段階ではこんな感じでずれている
Mappingノードの値を利用していい感じなるように調整する。
ノードの値はShiftキーを押しながらドラッグすると微調整が可能。
こんな感じで背表紙を調整する。
③次は表紙の部分に表紙用のテクスチャをを割り当てたい。
そのための下準備としてテクスチャペイントモードに移動。
新規にスロットを増やして、真っ白か真っ黒のテクスチャを作成する。今回は真っ黒にする
そしたらShaderEditorに移る。さっき背表紙で割り当てていたやつをとりあえず外して、新しく作った真っ黒テクスチャを割り当てる
見た目はこうなる。
そしたら再度テクスチャペイントモードに戻る。
今回は表紙の部分を真っ白に塗るため、TabキーでEditModeで該当する面を選択し、Shift + H でそれだけを表示させる。
Tabでテクスチャペイントモードに戻り白で塗る。
終わったらEditモードに、Alt + H で非表示を戻す。
こんな感じ。表紙だけ白。
④ShaderEditorに移動する。
MixColorノードを出す。
今塗った白黒のテクスチャはFactorにつなげ、Aのスロットに背表紙を接続する。
Bの箇所はとりあえず適当な色にして表示を確認してみる。
背表紙がちゃんと表示され、Bの赤も表示されている。ここに表紙のテクスチャを割り当てる。
そしたらMappingNodeで位置・角度・サイズを調整する。
これで複数テクスチャの利用は一応できた。
⑥せっかくなのでベイクする。
ShaderEditorに新しくImageTextureNodeを出し、新規にベイク用の画像を作成。
特に接続はしないが、このノードが選択された状態にしておく(白枠が出ている)
レンダリングエンジンをCyclesにする。
そうするとRenderPropertiesの中にBakeという箇所があるので、今回は色だけでいいのでBakeTypeをDiffuseにして、その下のInfluenceもColorだけ選択してBakeする。
うまくばこんな感じでベイクされるので、SaveAsで名前をつけて保存する。保存しておかないと、消えてしまうので注意。
問題ないか、接続してみる。
その他の部分は何もしていないが、必要があれば色を塗たりして処理する。
テクスチャを合成する方法2
前提としてUV展開はすましておくこと!(テクスチャペイントモードの画面は左右に分かれているが、口の中のような入り組んだ箇所を右画面で塗るのは難儀。UV展開をしておけば、左の画面を使って楽に塗ることができる)
基本となる肌の色テクスチャを作成
これは特に変わったところはなく
①TexturePaintモードを開く。
②プラスアイコンから、BaseColorで新しくテクスチャAを作成。
③テクスチャを保存しておく(別に塗り終えてからでもいい。忘れないように注意)。
④シェーダーエディターを開き、テクスチャAをのImageTextureノードをMixColor(Color -Mixcolor)のAにつなぐ。
またMixcolorノードはScreenにしておき、さらにそれをBaseColorにつなぐ。
⑤テクスチャペイントモードに戻り、塗るか塗りつぶし機能でテクスチャAを肌の色で塗る。それがちゃんと表示されるか確認。
上に重ねるテクスチャを作成
基本の作業は同じだが、テクスチャを作成でBaseColorを選択し、表示される下記設定の画面でColorの箇所をクリックする。
表示される色のピッカーのAlphaの箇所を0にする。
これテクスチャを作成し、下の画像のように透過テクスチャになっているか確認する。
今回はほほを塗ってみた。
注意点、塗った箇所を再度透過にしたい場合はBrushSettingのBlend設定をEraseAlphaに変更して塗る。
一枚しかテクスチャを使わないときは Subtractを使うが、透過テクスチャの場合はEraseAlphaなので注意
塗れたらシェーダーエディターに移動する。
背景透過になっているテクスチャBをImageTexutreに設置し、それをMixColorノードのBに接続する。
さらにそのImageTextureのAlphaをFactorの箇所に接続する(これをやらないとちゃんと描写されないので注意)。
ほほがテクスチャBになっていればOK。
これはMixcolorを重ねていけばさらに複数のテクスチャを合成することができる。
ただあまり増えすぎても逆に管理が面倒くさくなるので、この方法でやる場合はやはり2,3枚に留めておいた方が無難だろう。
コメント