かっこいいと思ってカタカナ連発しました。すみません。
3d-coatにはスカルプトモデリング機能に加えて強力な3Dペイント機能があります。ちょっと前のPhotoshopについてるようなただのテクスチャペイントではなく、最近のゲームエンジンでよくみられるような、PBRと呼ばれる物理(フィジカル)ベースレンダリングの手法に対応していたり、オブジェクトのの凸凹によって自動で塗り方を変化させることができるため、自然な金属の劣化のような表現をごく簡単に作ることができます。(どうやら3dcの表示にもかの有名なUnrealengineが使われているようです。多分。違ってたらごめん。)
PBRでは一つのマテリアルに、アルベド(色),ラフネス(荒度),メタルネス(金属度),ノーマルマップ…をなどのテクスチャを主に、その他透明度や光度などのテクスチャを用いてリネンから錆びた金属までリアルに表現することができます。(ここら辺はわたしの適当な脳みそよりもgoogleさんに聞いた方がいいと思います…間違ってたらゴメーンネ★)
また、3d-coatではこれらのテクスチャーを3dペイントで同時に作成することができます。出力も様々な形式に対応しており、よく使われるようなスペキュラーマップの出力にも対応しています。これらの形式の違いは、テクスチャ出力の際に選ぶだけなのでペイントの際に意識する必要はほとんどありません。
PBRレンダリングをサポートしてるMMD用シェーダーはray-mmdがありますが、今のところfxファイルの設定に頭がついていかないので、MMD上までPBRマテリアルを持ってくるには至っていません…でも、ノーマルマップとカラー(と、スペキュラーマップ)だけを利用するのも大変価値があると思います。
まずはマテリアル分けとUV設定をbelender上で済ませた形状を、obj形式で出力し、3dc側にピクセルペイントから新規作成して読み込みます。
3dc側のインポートが大変曲者で、大量にあるマテリアルごとのテクスチャーサイズを大きく(2048px,20個とか)設定すると、インポート中にメモリをバカ食いしてOS諸共フリーズ、不正落ちします。
具体的には、16GB程度のメモリであれば一瞬で食いつくして無事死亡します。ついでにCPUリソースも100%張り付きでマウスカーソルもまともに動かせす、さっさと不正落ちしてくれるまで手に負えないレベルです。
恐ろしいです。とても恐ろしい…本件とはあまり関係ない事ですが、私のPCのCPUのOC設定が意図せず有効になっていたため、高負荷で画面ブラックアウト→復帰という心臓に悪い体験を何度かしました。マザーボードベンダーのOCアプリをアンインストールしてBIOS初期化、ファンコンもBIOSから設定するのみにしたところ治りましたが、きっと私とPCの寿命が縮んでしまいました。すっかりトラウマになり、画面端に温度/使用率モニターを常に表示していないと落ち着かないヤツを患いました。
さて、これを回避する方法も当然あります。海外コミュニティで見つけました。
必ず1~数個のテクスチャごと行ってください。欲をかいて一度に大量に設定すると元の木阿弥です。
無事に設定できたらあとは楽しくPBRペイントを行いましょう!
1枚目は最初にPBRペイントを理解できた時の塗り、2枚目はMMDモデルに使われているものと同じものです。形状はほとんど変わりがないはずです。
靴のシワや縫い目はノーマルマップで表現されています。2枚目の靴先の貼り合わせが逆なのが残念ポイントですね…。
なお、右足はメモリー使用率削減と、同じUVで同じテクスチャーを利用するので塗っていない状態のものです。
ちょっとキモチワルイ画像ですみません。今とは顔がだいぶ違いますが、テクスチャは一緒です。こっちの方がいい顔に見えるのは画角のせいでしょう。…多分。
形状はモーフを出力の際に適用して、唇の陰も塗れるように口を開けた形状で出力しました。形は変わってもUVは変わらないので。
PBRペイントにてテクスチャを作成しました。唇、鼻筋、下瞼にはテカリを持たせています。(が、MMD上では見えません。未だMMD用のスペキュラマップがうまく作れず…)また、凸部分に赤みを重ねたり(影響する角度と濃度を設定して、流し込みで一発です)、スクリーンショットでは見えづらいのですが、皮膚のノーマルマップも書き込みました。複数のレザーマテリアルのノーマルマップを倍率を変化させて重ね、凸凹を考慮して肌のキメがある程度変化が出るようにしてあります。肌のキメは近寄るとMMD上でも見えます(2枚目)NCHL2を利用した場合。
これはかなり一進一退を繰り返しました。10回くらい書き直したような気がします…最終的に出来上がった事だけ書きます。
マイクロ頂点ペイントに服を持っていき、シワを書き込みました。これはノーマルマップではなくポリゴンを細分化して形状を変形させています。襟も微妙に凹ませています。
しかし、ある程度ペイントが済んでいるモデルが別にありました。初めからペイントするのも面倒の極み、その上、適当に彫っただけのコートの胴の形状も気に入らず(ほぼこれが原因)、ふと閃いてシワを書き込んだモデルから、ハイライトと影のレイヤーカラー、それからノーマルマップ(レイヤー0ベース)を出力して入れてみたのが次の画像です。
ポリゴンの形状と異なる方向の違うシワのハイライトが入ったところで、違和感がない訳がなかった。
ハァー…(クソデカため息君)
と、ここでもう一つ閃いて、シワ用モデルから低解像度モデルを出力し、ズボンと袖を入れ替えてみました。(次の画像)
やったぜ。
形状がテクスチャのシワの書き込みと一致しました。そしてポリゴン数には変化がないはずです。これで無事服のテクスチャは出来上がりました。
入れ替えた形状は元の形状からウエイト転送ポチッで置き換え完了です。
今更なんですが、3dcは日本語(2バイト文字?)のあらゆるものが文字化けします。一番深刻なのがマテリアル名やオブジェクト名です。
インポートまでは普通に日本語で表示されていても、触ったとたんに文字化けします。
悲惨なのがテクスチャを出力する時で、出力されたファイル名のマテリアル名が判読できないばかりか拡張子のドットまで文字化けして拡張子を打ち直す必要があります。仕方ないのでファイルプレビューとにらめっこしながらマテリアル名を打ち直します。数十枚。しんどいです。
色々調べましたが解消方法は未だ分かりません。
マテリアル名はblender,mmd,3dcで共通の物を使うので、ある程度出来上がってから英名に置き換えるのもまたしんどいです。アルファベッドのマテリアル名ならこんな目に遭う事はないので3dcを使うなら英語マテリアル名を使うのが無難かと思います。
そういえば、髪テクスチャについて書くのを忘れていました。これもまた、遠回りで妙な事をしています。
髪テクスチャを書くなんてどう考えてもめんどくさく、どうやったらいいか今一つピンと来なかったので、Blenderにやって貰う事にしました。
Blenderには毛を表現する機能が付いています、ヘアーシミュレーションです。材質を設定でき、太さや量、長さやまとまり具合などを設定した上で、物理的に計算してくれます。
板ポリから毛が生えるように設定をし、毛一本一本透過した状態でレンダリングできました。これをまあまあ加工してMMDに持って行ったらファサッっとした毛先が表現…で…き…
ませんでした。
敗因は毛のUVと毛のポリゴンが先すぼまりになっている事でした。一応毛先は抜けているのですが、それ以上に毛先のUVが先細りになるため、圧縮されて濃くなるという感じです。また別の方法を考えないと…
それでもそこそこの見た目になっているため、とりあえず限定公開版の毛はこのテクスチャちょっと加工したものになっています。
次章、ウエイトペイント編1