『Blender でアニメ絵キャラクターを作ろう! 後編 トゥーンレンダリングの巻』を読みながらトゥーンレンダリングを学習しております。この本、620 ページもあって分厚いんですけど、それは丁寧に解説されていることの証左であり、むしろ初心者に優しい一冊だと思います。それでもなおよくわからない点はあるわけで、そういうところを自分で調べてセルフ解説しよう、という記事になります。
使用している Blender のバージョンは 4.5.4 LTS です。
[p.184] 前髪の 6 つの面を選択できない?
書籍のほうには「ウェイトペイントモードにして、面のマスクを有効にして、前髪の 6 つの面を選択せよ」ということが書かれていますが、Blender のバージョンが違うせいか?そのままでは面を選択できません。私の場合は一旦編集モードに戻る必要がありました。手順は次のとおりです。
※ ウェイトペイントモードの状態から:
- ビューポート左上の [ペイントマスク] を有効にする。
- Tab キーで Hair の編集モードに切り替える。
- Hair の編集モードで面選択モード (3 キー) にして、前髪の 6 つの面を選択する。
- Tab キーでウェイトペイントモードに戻る。
[p.188] 自動正規化は有効?無効?
Step 03 のスカートのウェイト設定では、「自動正規化の有効・無効は各自の判断で」と書かれています。自動正規化を有効にすると、Skirt* ボーンの周辺のウェイトを 0.5 などで塗っても赤く表示される (ウェイト 1.0) 場合があるので、混乱するかもしれません。ですので、ここは無効のほうがいいかなと思いました。
[p.195] ウェイトペイントのグラデーションツールのショートカット
Blender 3.6 までは Alt + 左ドラッグだったみたいですが、バージョン 4 からは「Shift + A を 1 回押して、放してから左ドラッグ」に変更されました。ウェイトペイント時に「Shift + A」を押すとマウスカーソルの十字がちょっと太くなるので、その状態で左ドラッグすればグラデーションをかけられます。キャンセルは右クリックです。
[p.204] ウェイトペイントのチェック用スクリプト
ウェイトペイントの章 (第 2 章) の最後で、赤い太字で「ボーンに追従してこない頂点がないか、必ず確認してください」と念を押されます。そこで、ウェイトが設定されていない頂点がないかを調べるための Python スクリプトを作ってみました (そのようなアドオンはすでにあると思いますが…あとバグがあったらすみません)。
https://gist.github.com/mijinco0/887ddd446bbc46d195f477166381d99e
このスクリプトを適当なファイル名で保存し、メインメニュー > [スクリプト作成] でスクリプト作成パネルを開き、[開く] ボタンでこのファイルを開いて実行します。
すべてのコレクションのすべてのオブジェクトのすべての頂点についてウェイトを CSV ファイルにダンプし、どのボーンのウェイトも乗っていない頂点があったら「_WeightZero_」と出力します。
[p.241] シームはまだ入れない
p.241 の Step 05 はちょっと混乱してしまいました。ここのページではまだシームは入れずに、写真やサンプルデータを参考にしながら辺を選択する作業に専念します (Step 05 の最初にそのように書かれてはいるのですが、中段、下段のパラグラフに「シームを入れる」と書かれているので、実際にシームを入れながら読み進めてしまいました…)。
[p.242] 「対称にスナップ」は何をやっている?
Step 06 の「対称にスナップ」が何をやっているのかよくわからなかったので、調べてみました。
図 1 のように X-Y 平面上に元は 2 平米の正方形だった四角形があって、右上の点だけ X、Y それぞれ +1 メートルだけずれた位置にあるとします。説明のために元の点を p、ずらした点を p’、p と Y 軸で対象な点を q とすると、pp’ 間の距離はルート 2 で 1.41 メートルくらいになります。

てな状況で点 p’ を選択し、ビューポートのメニューから [メッシュ] > [対称にスナップ] を実行してみると、何も変わりません (図 2(a))。これはしきい値が 0.05 m に設定されていて pp’ 間の距離よりも小さいからです。
そこで、オペレーターパネルの [しきい値] を 1.5 m に変更すると、今度は図 2(b) のようになりました。係数が 0.5 に設定されているので、点 p’、q がそれぞれ妥協して
- 点 p’ は pp’ の中間の点
- 点 q は p’ の移動先と Y 軸で対称な点
にスナップしたということだと思います。

そこで今度は係数を 0 にしてみます。結果は図 3(a) のようになりました。これは「[方向] が「-x → +x」に設定されており、スナップの基準が -x 側の点 q にあり、その重みが 0 なので、点 q が譲歩して点 p’ に合わせた」という解釈になるかと思います。
逆に係数を 1 にしてみると、結果は予想通り、図 3(b) のようになりました。今度は点 p’ が譲歩して点 q に合わせたので、元の正方形に戻りました。
[方向] を逆 (+x → -x) にしてみた場合の結果もこれまた予想通りです。
- 係数 1 なら (見た目のうえでは) 図 3(a) に一致 (図 3(c))
- 係数 0 なら (見た目のうえでは) 図 3(b) に一致 (図 3(d))

[p.241,242] Step 05,06 まとめ
というわけで p.241 からの Step 05 と 06 でやることをまとめると、次のようになるかと思います。
- 正面視点 (1 キー) で見て Hair の右半分のうち、シームを入れる予定の辺を辺選択モードですべて選択する (p.241 右下の写真、あるいは図 4 参照)。
- [メッシュ] > [対称にスナップ] を実行する。
- オペレーターパネルを次のように設定する。
- {方向}: -x → +x または +x → -x (X 軸方向ならどっちでもいい)
- {しきい値}: 0.05 m (必要に応じて変更する。あまり大きな値にすると無関係な頂点を巻き込んでしまうと思われる)
- {係数}: 0 または 1
けっきょく左右どちらの頂点に合わせるかというだけの話であり、基本的に横髪、後ろ髪は左右対称に作ったはずなので、今回の場合、オペレーターパネルの設定をいろいろ変えても結果はそれほど変わらないものと思われます。

[p.244] UV 展開してみたら、謎の切れ端が発生
本書の前編『モデリングの巻』を見ながら同じようにモデルを作ったつもりだったんですけど、実際に UV 展開してみると、辺と辺がおかしなところでつながっていたり、面を張るのを忘れていたりと、ポカが次々と露呈するので呆れております。な中で特に手を焼いたところを書き残しておきます。
UV 展開された絵を眺めていたら、ごく小さなメッシュの欠片を見つけてしまいました (図 5)。アパートの自室で G を見かけてしまって、それを認めたくないような、嫌な気分…。でもまあ現実に見てしまったものは仕方がないので、「UV の選択を同期」をオンにして場所を特定したら、左側頭部の髪の房の付け根あたりの、チリ共和国みたいに細長い三角形でした。

不思議なことに右側頭部側の対称な三角形はちゃんと Hair 本体の一部として展開されていました。いったい何がちがうんだ?と頂点が二重になっていないかとか、頂点の座標が左右対称じゃないのかとか、シームを入れ忘れたのかとか、それこそ穴のあくほど眺めていろいろ調べたけれど、怪しい点は発見できず。
で、解決できずに 2 日間ほど悶々と過ごしたのち、ようやくわかったのは「となりの面を張り忘れてた」ってことでした。このへんは Hair の内側なので目視しづらいんですよね…それまでは Alt + Z で半透明にして確認してましたが、それだと面が張られているかどうかはわかりづらいです。
図 6(左) のように Hair の表面の一部を選択して H キーで隠した状態で中を覗いたら、一目瞭然でした (図 6(中))。そりゃあとなり合う面がなかったらはぐれるしかないよなあ、ってことで図 6(右) のように面を張って、隠してた部分を Alt + H で元に戻して (これをやると p.240 Step 03 で非表示にした部分まで表示されてしまうので、そこはもう一回 Step 03 をやりました)、再度 UV 展開を実行したら、ようやくいい感じになりました (図 7)。

