オブジェクトの表面に他のオブジェクトを変形

QiitaのBlender Advent Calendar 2021 の３日目として投稿します。
https://qiita.com/advent-calendar/2021/blender

BlenderのUV操作に便利な**[TexTools](https://github.com/SavMartin/TexTools-Blender/releases)**というアドオンがあり、
UV展開やベイク機能での利用の話題は度々見かけますし、私も非常に重宝しています。
そのアドオンの機能の一つで **UVテクスチャのようにオブジェクトを変形して貼り付ける**機能があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/930385a9-ce3f-4120-6870-597c1febefbe.png)
アドオンの紹介で軽く触れている記事はあるものの、細かい使い方を紹介しているものがなく
検索で見つけるのも難しいようなので記事にしてみます
TexTools 1.4.4 時点での機能になります
# UVMeshの作成
UVを元にした変形をするための形状を用意します
変形のベースになる形状は先にUV展開してあるものである必要があります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/c0a1b5e0-3a5c-72e8-0519-ed9ce8b7ff79.png)

ベース形状を選択した状態で　TexToolsのMeshTexture の項目にある **Create UV Mesh** のボタンを押すと
UVの形状と同じ形をした「UV_mesh (ベース形状の名前)」のメッシュが３Dビュー上の３Dカーソルの位置に作成されます
この形状はシェイプキーでベース形状とUV展開された形状の間を変形するようになっていて
TexToolsのラップのスライダの項目で変形度合いを制御できるようになっています。
![21113001.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/e903d1b9-dcb1-fcf2-d315-071285bda400.gif)
これだけではどう使うか分かりませんね　続けて設定をしていきます
# 変形対象の形状の指定
UV_Meshのすぐそばに　変形対象のオブジェクトを置いて
UV_Mesh　変形対象のオブジェクト　両方を選択した状態にします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/f40e2524-5071-69de-d5bc-88de1c35f42e.png)
ここで　Warpボタンを押すと
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/84f67ac0-419a-0701-3e00-6e66f3475bd6.png)
よく分からない形ですね
UV_mesh　の形状を**非表示**にしてみます
変形対象のオブジェクトが表面に張り付いていると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/b94044e5-1854-0ffd-4fb2-c77e200e27c3.png)
これは　変形対象のオブジェクトが**サーフェイス変形(SurfaceDeform)**のモディファイアでUV_meshの変形に合わせて変形されている状態になります。

ただ、ちょっと形が歪んでいますね。
これは　もっと滑らかな形状で綺麗な変形をさせるための設定のようで
ローポリゴンの角度の急な形状ではこうなるようです。
# 変形の再設定
変形後の形状が意図した感じと違った場合の
アドオンで自動設定されていたものを再設定してみます
まず　変形状態を解除するために　MeshTexture項目のラップの数値を0にします
次にUV_mesh形状についているSolidifyモディファイアをビューとレンダリングそれぞれで使用をオフにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/1e7c0e4e-38e6-8f8b-7c4d-c589e1f80a00.png)
その後　変形対象のオブジェクトを選択してモディファイアプロパティのSurfaceDeformの**バインド解除**の解除のボタンを押します
この**バインド**とは　サーフェイス変形で変形の基準になるメッシュの状態を記録させるためのものです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/b90930c3-bab8-7566-ada4-c9bd2037c3b6.png)
解除前のキャプチャではアドオンで設定されたUV_mesh形状のSolidifyモディファイアがオフになったために
記録されたものとポリゴン数が異なるのでエラーが表示されていますね

バインド解除ボタンを押した後に　ボタンは**バインド**の表示になるので　再度同じボタンを押しましょう。
最後に　ラップの数値を1.0に戻すと変形状態に戻ります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/3e73707f-159a-33df-aae6-4ebd76d71d9c.png)
# 張り付けるオブジェクトの調整
サーフェイス変形での変形は　ターゲットで指定したメッシュの頂点の移動を元に計算するものですが
変形対象のメッシュのターゲットのメッシュから外れた場所にある部分は余分になってしまいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/b0d1db28-2126-a763-387a-c7f6c12a7f92.png)
この範囲外のメッシュを削除するのが　トリム機能です。
UV_mesh形状と変形対象のメッシュを選択した状態でトリムボタンを押すと変形対象のメッシュにTrim UVという名前でブーリアンモディファイアが作成されます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/528d7a5f-b054-9648-f773-8a50ffa791b6.png)
アドオンの設定ミスなのか　ブーリアンの設定が「**差分**」になっているので「**交差**」に変更して
**Collapase Trim**ボタンを押すと　ブーリアンが適応されて余分な部分が削除されます。
メッシュを変更するので貼り付け形状はコピーするなどして残しておいた方がいいでしょう。

ちょっと面倒な設定が多いですが
何かの参考になればと思います。