はじめに
今回は3DCGで1つのモデルに2つ以上のUVとテクスチャを設定するメリットについてまとめます。
・UV = 3Dモデルに画像を割り当てるための展開図
・テクスチャ = 3Dモデルの "面" に色情報を割り当てるための画像
↓この「UV」と「テクスチャ」の情報があることで初めて3Dモデルに画像の色が入ります。

より詳しく知りたい方は私が描いた本などをご覧ください。(宣伝)
UV情報は2つ以上持たせれる
UVマップは1つのモデルに2つ以上生成できます。
Blenderの場合は「+」ボタンで追加するだけです。

UVを調整。
すると1形状に2つのUVを保存できます。

↓このような挙動です。

以上がUV情報は2つ以上持たせれるの解説です。
2つ以上のUVとテクスチャを使うメリット
2つ以上のUVとテクスチャは部分的に画像の解像度を上げたいときに便利です。
↓例えばこちらの写真立てのようなモデルに使えます。


解像度を一部で極端に上げる以外にも…
一部の要素を後から編集しやすくするという点で使えます。
追加した色情報だけUVスクロールさせるなどができます。
…あとはアイデア次第。
複数UV+テクスチャを使うと写真の所だげ画像の解像度を上げれたりします。
ノーマルマップなどの付加情報の部分は小さいままにできるのがポイント。

普通にやると全体のUV構成に合わせてある程度UVは小さくなります。
この小さいところにしか画像を入れれないです。

ところが複数UVを使うと…
部分的に色だけ高解像度にできたりします。


ノーマルマップの「マテリアル」と「画像」が分かれてないことがポイント。
普通に写真部分を別形状にして処理すると…
「別マテリアル」と「ノーマルマップ」という余計な情報が増えます。
このように必要な部分だけ解像度を上げれるのが2UV+テクスチャの強みです。

2UVで指定した画像はファイルが分かれてます。
なのでユーザーに「これを操作してほしい」みたいな意思表示も行いやすくなります。


これはモデルデータと写真データ以外を「Data」ファイルにまとめた事例。
この構造にすることでユーザーが写真を差し替えるのに「Tx_PhotoColor」を操作すればいいことが分かりやすくなる。
以上が2つ以上のUVとテクスチャを使うメリットの解説です。
2UV+テクスチャを使うためにレイヤー効果を覚える
2UV+テクスチャは置き換える部分の色を適切に設定しないと動きません。

2UV+テクスチャは画像が相互に影響を及ぼします。
一見何もないようなUVでも…
「限りなく点に近いUV」として必ず画像の色を参照していて影響が出ます。
なのでその置き換え部分の色設定が重要になります。

この重なった部分で「置き換える」部分の色を適切に指定することで初めて動きます。

適切な設定が行われてないと、色の表示が崩れます。
↓こちらはオーバーレイ合成なのに「50%グレー」を使用した事例。

この色の崩れ問題は「レイヤー効果を適切に理解する」と解決します。
たとえばBlenderのシェーダー加算は「スクリーンに近い挙動」をします。

細かいことを省きますが…
スクリーンは黒色を透明にします。

レイヤー効果に関する “細かい事” を知りたい方はこちらをご覧ください。
なので「土台の色」か「合成する色」が黒だと効果が消えて透明になります。
↓これは黒にスクリーン合成した結果、上の画像が通常表示と変わらない挙動になった例。

なので「テクスチャを置き換えたい部分」をレイヤー効果に合わせた適切な色に設定。

色は「色相・明度・彩度」を使い直接明度を調整します。
Kritaの場合はHSV/HSL補正。

これできれいに合成できます。

Unityのスタンダードシェーダーの場合は置き換え場所を「50%グレー」にします。

Unityのスタンダードシェーダーにある2UV画像の合成処理は「オーバーレイ処理」です。

オーバーレイは「50%グレー」の部分で透明になります。

これでUnityのスタンダードシェーダーでも色だけ別の画像に置き換えたりできます。

50%グレーを作るために一度明度を「0」に設定。

そして明度に「50」を入力。
これで完全な50%グレーが作れます。

他にも「lilToon」という有名なシェーダーでもこのテクニックは使えます。
↓lilToonの合成モードと透明にする方法はこちらで解説。
以上が2UV+テクスチャを使うためにレイヤー効果を覚えるの解説です。
「通常合成」でも画像を混ぜれるが余計なデータが増える
lilToonには通常合成という機能があります。

これは文字通り「通常」の合成効果です。
何も起きません。

lilToonは不透明度を変えれます。

不透明度を「0.5」にする = 不透明度50%設定と同じです。

↓こんな感じで透明度が変わります。

そしてlilToonには「マスク」機能があります。
マスク = 白黒画像で不透明度情報を設定する方法。

これを使えば「通常合成」でも画像を綺麗に混ぜれます。

ただし… このマスクを使うための画像データが必要になります。
余計なデータが増えるので「合成モード」を覚えてマスクなしにした方が綺麗です。

最軽量の合成モードは「加算」
合成モードを選べる場合は加算(Add)の使用をおすすめします。
lilToonはこの合成モードが選べます。


多くの場合で合成モードは選べません。
なので置き換えたい所の色を「0の黒、50%の灰、100%の白」の3つに変更。
挙動を見たり試行錯誤しながらレイヤー効果を特定して使う流れになります。
この “軽さ” は計算式としてやることの多さで選びました。
↓画像合成の計算式は下記。(画像1=A、画像2=B)
【通常(透明度あり)】
(1 - 不透明度)×A+不透明度×B
【加算】
A+B
【スクリーン】
A+B - A×B ÷ 255(Bit数)
【乗算】
A×B ÷ 255(Bit数)
加算の「A+B」は圧倒的にシンプルですね。

昨今のマシンスペック向上を考えると “誤差の範囲” です。
正直、どれでも良いですが…
それだと迷いが出ます。
なので迷ったら「加算」と判断してください。
加算を使う場合、置き換え部分の色は「黒色」になります。
黒色はユーザー心理的にも分かりやすいので「加算」がおすすめ。

以上が最軽量は「加算」の解説です。
まとめ
今回は3DCGで1モデルに2つ以上のUVとテクスチャを設定するメリットについてまとめました。
・3Dモデルは1つの形状に2つ以上のUVを設定可能
・UVを2つ設定するとシェーダー次第では1形状に2枚の画像を割り当てれる
・画像を2枚割り当てた場合は俗にいう「レイヤー効果」を使って合成される
・レイヤー効果を理解して適切な配色を行えば2枚の画像から一部の影響を消したりできる
・このレイヤー効果が使われるかはシェーダー次第なので調べたり試行錯誤する
・これを使うと一部だけのテクスチャ解像度を上げれる
また、ほかにも3DCGについて解説してます。
ぜひ、こちらをご覧ください。
コメント