海外の人がTinyEyeというアドオンというかBlenderのファイルを配布してくれている。思い通りに目を作れるとても便利なファイル。
これを使って作った眼をゲームエンジンに持っていくためテクスチャにベイクしたかったが、どうやればいいかよくわからなかったので、いろいろ試したときのメモ。
テクスチャにベイクした方法
マテリアルごとにオブジェクトを分割する
デフォルトの状態だと一つの目玉オブジェクトに二つのマテリアルが割り当てられている感じになっている。
まず全選択してEditModeに移り、Mesh – Separate ―ByMaterialを実行する。
アウトライナーで見ると虹彩(目の模様)の部分と網膜(球体)の部分に分離している(オブジェクトAとBとして扱う)。
シェイプキーやモディファイアを実行しておく
オブジェクトモードに戻り、ObjectDataProperty – ShapeKeysを開く。そして下矢印アイコンを開き、その中にある ApplyAllShapeKeysを実行する。
これをオブジェクトAB両方で行う。
同じ要領でModhifierPropertyの箇所を開く。
サブディビジョンサーフェスモディファイアが未適用状態なのでApplyしておく。これもオブジェクトAB両方で(レベルの値は各自調整しよう)
UVMapを作成
オブジェクトを選択し、ObjectDataPropertyのUVMapsの箇所を開く。
プラスアイコンから新しくUVMapを制作し、そちらを選択状態(背景灰色)にしておく(カメラアイコンは押さなくてよい!)。これをAB両方で。
UV展開
それがすんだら両方のオブジェクトを選択し、UVEditor画面(左右で画面が分割される。左が展開図、右が立体)に移り、シームを入れたり消したりしながらUnwrapしていく。
角膜の方のオブジェクトの虹彩との境界にある頂点をループ選択し、MarkSeamでシームを入れる。
と同時に不要そうなシームはClearSeamで消しておく(どれが邪魔かは何とも言えないのでUnwrapしながら調整する)
そして左画面にベイク先となるテクスチャを準備する。Image -Newでサイズやら名前を付けていく。
注意点として、色を透明にしておくこと(ColorのAlphaをゼロにする)
最終的な左画面はこんな感じ(一番大きなアイランドが虹彩の色部分。)
ShaderEditorでの準備
オブジェクトモードに戻り、シェーダーエディター画面を出す。
そこにShift +A – Texture – ImageTextureノードを出し、UV展開の時に作成した背景透明画像を割り当てる。(ノードを繋ぐ必要はない)
そしてそのImageTextureノードをアクティブ状態(白枠がついた状態)にしておく。
これを網膜と虹彩両方のオブジェクトで行う。
注意点、網膜オブジェクト(球体の方)のSpecularの値はゼロにしておくこと。でないと角膜の部分が透明にならないので注意。
ベイク
網膜虹彩両方のオブジェクトをまとめて選択する。
RenderPropertyを開き、RenderEngineをCyclesに変更する。
ベイク速度が遅いと感じるときはサンプル数などをいじって調整する。
で下にあるBakeの項目に移動し、BakeTypeを今回はベースの色テクスチャを作りたいのでDiffuseに変更する。
Contributionsの部分もColorだけにしておき、Bakeボタンでベイクを実行。
確認してみる
虹彩オブジェクト
まず虹彩オブジェクトを選択し、シェーダーエディターを開く。
そしてベイクした画像を繋いでみる。
それだけだとこんな感じで表示がおかしくなる。
ObjectDataPropertyのUVMapsの箇所から新しく作ったUVをアクティブにする(カメラアイコンをオンにする)
うまく表示されればベイクはOK。
網膜オブジェクトのチェック
網膜オブジェクトの場合はまず、ちゃんと角膜の部分が透明になっているかが重要。
ベイクされた画像を確認し、角膜のアイランドが透明になっているか確認する。
角膜が透明になっていればベイクはOKなので、同じ要領でUVMapsの部分に移動し、新しく作った方のカメラマークをオンにする。
シェーダーエディターでベイクしたテクスチャを、PrincipleBSDFノードを介して繋ぐ。
PrincipleBSDFのAlphaで角膜の透明度を設定する(注意点として網膜全体が透明になってしまうので場合によっては角膜部分を別オブジェクトにしてしまうのもありかもしれない)
Roughnessを調整することでツルツルした質感が出せる。
さらに反射の度合いをSpecularで調整するとだいたい下のようになる。
必要があれば網膜と虹彩のオブジェクトをJoinする。
コメント