肘の補正

 肘の変形の資料
 http://kitasite.net/b/musmob/elbow/
 https://www.youtube.com/watch?v=qJRCP67NG9c#t=2m46s

 ・間接の外側が尖る
 ・間接の内側の肉は、前腕が上腕(肩)の方へ押しやる

 単純に2本のボーンで曲げるとこうなる。

 クォータニオン補間を使っても、肘の関節はきれいに曲がらないことがわかる。

 間接の外側と内側に補正ボーンを追加するという一般的な方法を試してみる(今回はリニア補間で)。
 まず、単純にボーンの距離に応じてウェイトを割り当ててみる。

 間接の外側はまあまあ良くなったが、やや膨らんでいる。
 内側がひどいことになっているので、後で考える。

外側の補正ボーン

 肘を尖らせるために、補正ボーンのZスケールを135%に伸ばす。
 さらに膨らみを抑えるようにウェイトを割り当てると、こうなる。

 膨らむ部分は、反対側のボーンのウェイトを割り当てると収まる。

内側の補正ボーン

 内側のめり込みを抑えるために補正ボーンのウェイトを減らしたら、補正ボーンの意味がなくなってしまう。
 ウェイトを割り当てたまま見栄えを良くするには……。

 まずポイントが内側に行きすぎているので、補正ボーンのZスケールを150%に伸ばす。

 そしてポイントが斜めに広がっているので、補正ボーンのその方向のスケールを縮める(この場合はYスケールを10%)。

 こうなる。

エクスプレッションの設定

 これらのボーンの変形を自動化するため、エクスプレッションを設定する。
 回転値については、単純に前腕の半分にするだけなので省略。

●外側の補正ボーンのスケール
 前腕が90°になったらZスケールを135%に伸ばすので、倍率は 0.35÷90=0.0039。

Zスケール = 前腕の回転値 × 0.0039 + 1.0

●内側の補正ボーンのスケール
 前腕が90°になったらZスケールを150%にするので、倍率は 0.5÷90=0.0056
 前腕が90°になったらYスケールを10%にするので、倍率は 0.1÷90=0.0011

Zスケール = 前腕の回転値 × 0.0056 + 1.0
Yスケール = 前腕の回転値 × 0.0011

 となる。

 実際は、ウェイトの塗り方で倍率は変わってくる。
 いろんな値を入力して適当な所を探る。

肉の盛り上がり

 前腕が90°を超えると、前腕と上腕に挟まれた肉が押し合って横に広がる。
 これをボーンでやるのはややこしすぎるので、モーフを作って、回転に合わせて発生させればいいだろう。

〈補足〉指の間接について

 指の関節を上面に持っていくと曲げたときに角が立つ、という情報が少し前にネット上に広まった。
 だがこれは曲げたときに指が短くなる。

 セグメントとウェイトを適切に割り当てれば、間接を真ん中にしても角は立つ。