とても苦労したのですが、Blenderでノーマルマップを庭子の服のシワとしてベイクすることができました。うれしかったので報告書いておきます。
正攻法ベイク練習
まずはBlenderでノーマルマップを作成(ベイク)する方法を参考に、Blenderでの正攻法を練習しました。
こんな感じにとりあえずできる。しかし・・・、庭この服にシワをベイクしようとするとなぜかうまくいかないのです。
庭子ハッピにスカルプチャでシワを作る
やりたいことは「この庭子のハッピにノーマルマップでシワテクスチャをつけたい」です。ハッピには5個のマテリアル(過去ゴミやメモも含めて)があります。テクスチャのシワはハイポリゴンモデルをスカルプチャで削り出します。
元の4000ポリゴン happi-low をオブジェクトモード:SHIFT-Dで複製し、複製先をhappi-hiとします。モhappi-hiにディファイアでマルチレゾリューションを適用して、「細分化」ボタンを三回おして26万ポリゴンにまでハイポリ化しました。マルチレゾリューションはCtrl-Aで適用しておきます。
ぱっと見でわかるように腰のところを削りすぎて細くなりすぎてます(実際庭子の体がはみ出ます)が、ノーマルマップ作るためだけのhappi-hiなので問題ありません。
こんな感じで作りました。スカルプチャーは初めてでしたが、なんとなく感覚でOKと感じました。ペンタブも使わず、マウスのみでざっくりです。スカルプチャーモードで使ったツールは「ドロー(加算・減算)」、「スムース」だけです。「クロス」もありましたが難しそうでした。いずれ使ってみたいところです。
グーグル画像検索で「ドレープ ブラウス」などと入力すると素敵な例がいっぱい出てきます。気に入ったシワを参考にシワを削り出せば良いでしょう。ドロー加算で山をつくり、ドロー減算で谷を作り、失敗したと思ったらスムースで平らにします。ドローをマウスでなぞって入れた筆の出入りのところも少しスムースにすると良い感じです。
胸からした、背中は上からしたにざっくりシワをつけました。胸から脇は横に細かいシワを、袖のあたりは斜めにねじりぎみのシワを入れたイメージです。
まずは正攻法ベイク
で先に練習したように
- ベイク用マテリアル追加
- シェーダーノードにベイク用テクスチャノードを追加
- 複製して変形させた平面→元の平面の順に[Shift]キーを押しながら選択し、レンダープロパティから、Render Engineを「Cycles」に変更します。
- Bakeボタンを押す(Selected to Activeをチェックon/offは両方やりました)
とやってみましたがどうしてもうまく行きません。
- オブジェクトのすべてのマテリアルノードに焼き付けるイメージテクスチャを入れておく必要がある。
- すべてのマテリアルノードでイメージテクスチャノードがアクティブの状態である必要がある。
が注意点のようです。この通り対応したつもりなのですが、庭子モデルではうまく行きませんでした。
TexToolsアドオンを使う
最初は正攻法を学びたかったのですが、あきらめました。【Blender2.9】ベイク作業を効率化!アドオン:TexToolsを使ってみようをみてTexToolsを使うことにします。使ったBlenderバージョンは3.4ですが問題無くできました。もともとテクスチャ編集で便利なので使っていたアドオンです。そのベイクモードを使います。
「編集」→プリファレンス→アドンから検索でtextoolsを探してonにしましょう。
TexToolsのバージョンは1.5でした。
「UV Editing」モードに移動します。Nキーおして右側サイドバー(左側がツールバーという名前のようです)表示し、TexToolsタブを表示します。通常は「UVレイアウト」使うのですが、ここでは「Baking」をクリックして表示します。
- AA:「4x」 … アンチエイリアシングは最高に
- CS: 「リニア」 … 色空間は通常リニアのようです
ベイクするのは今回はノーマルマップなので、いっぱいある中で「Tangent Normal」を選びます。
「happi-low」を選択しましょう。(アウトラインモードから選択でもOKです)
警告がでています。「Need high and low: use suffixes as _hp, _lp」とのこと。
いはまもとの低ポリゴンモデル「happi-low」、スカルプチャでシワをつけた高ポリゴンもでる「happi-hi」と言う名前になっているので処理できません、という意味です。TexToolsでは処理する低ポリゴンモデル、高ポリゴンモデルに名前指定があります。そのおかげで簡単操作を実現できているようです。
名前を変更します。
②「happi」と書いてるところにマウスを持って行く(クリック?)すると表示が下記のようになります。
③ケージ押し出しを適当にあげます。今回は「1」に設定しました。結果を見ながら変更してもいいでしょう。
④「Bake 1x」ボタンを押します!
このように「happi_normal_tangent」という名前のテクスチャが生成されて表示されます(うまく行かなかったらもう一度「Bake 1x」押してみてください)。上部のテクスチャ名含めて自動で変更してくれます。さすがTexToolsです。まだ保存されてないのですぐに保存しましょう!
なぜかデフォルトTGAになっていますが、PNGに変えてRGBにして保存しましょう。
happi_normal_tangent.pngを画像表示ソフトで表示すると下記のようになっているはずです。確認しておきましょう。
そして Shading モードで移動します。
happi_hpは非表示にして、happi_lpのみ表示して選択します。テクスチャを表示するマテリアルのシェーダーノードを表示しておきます。まだノーマルは接続されていません。
SHIFT-Aから「テクスチャ」→「画像テクスチャ」ノードを追加します。
その画像ノードには「happi\normal_tangent.png」を読み込みます。
次にSHIFT-Aから「ベクトル」→「ノーマルマップ」ノードを追加します。
カラー同士、ノーマル同士をつなぐと、きちんとhappi_lpにシワの陰影が表示されるはずです。
このノーマルを追加したマテリアルはそのままUnity、VRChatまで持って行けます。
UnityでFBXファイルを読み込んでテクスチャ展開したときにノーマルマップ・テクスチャがマークされてないと警告がでますが、Fix nowを押せば問題ありません。
やはりノーマルマップで服のシワがあるとクオリティ上がって、テンションもあがりますね!