dskjal
広告
広告

関節のボーンとポリゴンフローに関するTIPS

カテゴリ:blender

目次

ボーンのローカル回転軸をそろえる

ボーンのローカル回転軸が統一されていない場合、ひじは X 軸で回転し、ひざは Z 軸で回転するというようなことが起こる。また回転軸がずれていると回転軸を指定した回転で自然な方向に曲がらないことがある。詳細はボーンのローカル座標軸設定を参照。

アーマチュアの『体積を維持(Preserve Volume)』オプションを使う

アーマチュアの『体積を維持(Preserve Volume)』にチェックを入れると、関節部分の沈み込みや回転時の体積減少を低減できる。前腕を2分割して回転させると前腕が痩せる問題はこれで解決できる。

これにはデュアルクォータニオンが使われている。デュアルクォータニオンの技術的な詳細についてはデュアルクォータニオン徹底解説を参照。

ただし大抵のゲームエンジンはデュアルクォータニオンに対応してないのでゲームエンジンで使用するモデルの場合は『体積を維持(Preserve Volume)』は使わない。

アーマチュアモディフィアの体積を維持オプション<br/>前腕を回転させた結果痩せてしまった前腕が回復している

アーマチュアモディフィアの体積を維持オプション
前腕を回転させた結果痩せてしまった前腕が回復している

関節の可動域の中間位置をレスト位置にする

可動範囲の中間位置を基本ポーズにするとメッシュの破綻が少ない。A ポーズや指を少し曲げた状態をレスト位置にしているモデルが存在するのはこのためだ。

全関節を可動域の中間にするとバイクにまたがるようなポーズになるが、このような姿勢をレスト位置にすることはまずない。

全関節を可動域の中間に設定したポーズ

全関節を可動域の中間に設定したポーズ

Pose Shape Keys アドオンを使う(3.1)

関節を曲げたときのポリゴンの補正にシェイプキーを使うと依存性の問題が発生する。シェイプキーで補正した後にウェイトやコンストレイントのパラメータを調整すると、シェイプキーも修正しなければならない。

Pose Shape Keys アドオンはウェイト調整後のメッシュを保存しているため、シェイプキー補正後でもウェイトやコンストレイントのパラメータを調整できる。

外部リンク

Rig with Shape Keys Like Never Before!

補助ボーン

補助ボーンを使う

動かさない補助ボーンは意味がない。動かさない補助ボーンはウェイトを適切に設定することで、削除できる。

ボーンの影響力のブレンド

補助ボーンに影響力(Influence)を弱めたチャイルドコンストレイント(Child of)や回転コピーを追加すれば、ボーンの動きに少しだけ追従する動きを実現できる。

動作デモ

動作デモ

少しだけ追従する補助ボーンは正座したときに関節がつぶれるのを防ぐ目的で、膝によく配置される。

膝の補助ボーン

膝の補助ボーン

補助ボーンを回転量に応じて動かす

関節の補助ボーンリグ

動作デモ

動作デモ

関節

シェイプキーを使ったポリゴンの補正

シェイプキーを使って関節のポリゴンを補正する場合は、曲がる側の関節部分の頂点のウェイトを上腕に多く振っておくとうまく動かしやすい。

曲げられる側の関節部分の頂点のウェイトを上腕に多く振っておく

曲げられる側の関節部分の頂点のウェイトを上腕に多く振っておく

左側が上腕ウェイト、右側が上腕と前腕とが 50:50 のウェイト

左側が上腕ウェイト、右側が上腕と前腕とが 50:50 のウェイト

.blend ファイルダウンロード(2.81)

ボーン変形の補助としてシェイプキーを使う

Blender でドライバーを使う

ひじの回転に合わせて上腕二頭筋が隆起する

ひじの回転に合わせて上腕二頭筋が隆起する

関節を曲げたときに丸くなりすぎる場合

肘や指を曲げたときに丸くなりすぎるときは関節位置を外側へずらすことで解消できる。ひざでこれをやると不自然になるので、ひざの場合はひざの裏側に寄せた位置に関節を配置する。

下の動画では左側が内側よりの関節位置で、右側が肘よりの関節位置だ。

関節位置のトレードオフ

関節位置を外側に配置すると丸みは低減できるが、頂点を配置できない関節の内側領域が広くなる欠点がある。この問題の解決方法は関節の可動域の中間位置をレスト位置にすることだ。

2重関節ボーン

関節位置の上下に2つ関節を配置することで、頂点のへこむ動きを相殺できる。正座ができることが要求されている場合は、膝を2重関節にすることが多い。

IK を設定するときは剛性(Stiffness)を設定して曲がりすぎないようにする。

補助ボーンの次のボーンにStiffness(剛性)を設定

補助ボーンの次のボーンにStiffness(剛性)を設定

Unity での設定はコンストレイントを使った二重関節を参照。

ボーンずらし

ボーンの親子関係は保持したまま接続を解除し、子ボーンを手前に配置する。こうすると回転軸が手前側に移動しポリゴンの沈み込みが目立たなくなる。

ずらしなし

ずらしなし

ずらしあり

ずらしあり

接続のみを解除するにはエディットモードで Connected のチェックを外す。

前腕

前腕のポリゴンを 90° ひねる

手をモデリングするとき、たいていは手のひらが下を向いた状態でモデリングされる。この状態の時、前腕はほとんど限界まで回転された状態だ。そこで前腕をあらかじめひねった状態でモデリングしておくと、前腕を逆回転させたときにポリゴンフローが自然になる。

実際はある程度モデリングした後に 90° ひねることが多い。これはプロポーショナルエディットを使えば簡単にできる。この後で最終的な修正を入れる。

プロポーショナルエディットで腕をひねる

プロポーショナルエディットで腕をひねる

なぜ前腕可動域の中間をレストポーズにしないのか

ボーン可動域の中間をレストポーズにするのがセオリーだ。前腕の場合は、手のひらを前面に向けた状態だ。しかしそのポーズをレストポーズにすることはほとんどない。

手のひらを前に向けたレストポーズ

手のひらを前に向けたレストポーズ

手のひらを前面に向けた状態は腕をおろしたポーズで問題になる。手のひらを前に向けた状態で、腕を下げひじを 90° 曲げると手の平は上を向く。この状態で手を下に向けようとすると、前腕を 180° 回転させる必要がある。それに対し手のひらを下に向けたレストポーズならば 90° の回転で済む。

腕をおろしてひじを 90° 曲げた状態

腕をおろしてひじを 90° 曲げた状態

前腕のボーンを分割する

前腕を一本のボーンで表現すると、手を180度反転させるときに手首がねじれてしまう。人間は手を180度反転させるとき、腕をひねっているのであって手首を回転させているわけではない。

前腕のボーンを分割する

前腕のボーンを分割する

Blender だけで使うなら、Bendy Bones を使えばボーンを分割する必要はない。

外部リンク

肘関節が痩せるのを防止するTwistBone設定(Blender&Unity)

前腕に補助ボーンを仕込む

ゲームエンジン等にエクスポートして使う場合、前腕を分割したくない。その場合は、前腕に位置に補助ボーンを配置する。この補助ボーンは前腕の子にする。そして回転コピーコンストレイントで手のローカルY軸回転をコピーする。ゲームエンジン側でも回転コピーコンストレイントを設定する。

前腕の位置に配置された補助ボーン

前腕の位置に配置された補助ボーン

前腕のねじれの問題

前腕をねじると前腕が痩せてしまう。これはアーマチュアモディフィアの「体積の維持」オプションを使えば解消できる。ゲームエンジンでもデュアルクォータニオンを使ってスキニングすれば、似た結果が得られる。

頂点の位置にボーンを置く

関節の曲がる側のポリゴンを少なくしたときは、伸びる側のポリゴンの分割数が増えている場所にボーンを置く。そうしないとポリゴンがきれいに移動しない。

メッシュ

天球体を作る

天球状にポリゴンを張ると輪郭部分の分割数が実際のポリゴン数よりも多く見える。これは関節の伸ばされる部分や球状の部位でよく使われる。以下の場所で天球体がよく利用される。

左:天球体右:UV球

左:天球体右:UV球

グリッドを天球状に変換するのは簡単だ。ポリゴンラインをひとつ飛ばしに選択して半グリッド移動する。後は三角化(trianglate)するだけだ。

グリッドを天球状に変換

グリッドを天球状に変換

ポリゴンベルトを作る

肩や股関節は3軸で回転するので、変形させたい場所にベルト状にポリゴンを作る。このベルト状のポリゴンは分割しないほうがいいのだが、尻の場合は大きく引き伸ばされるのでいくつか分割を入れる。また腕を肩以上に上げないときは肩も分割できる。

正面図

正面図

背面図

背面図

.blend ファイルダウンロード

外部リンク

遊戲模型佈線對動作變形之影響(2-2)-肩膀篇――肩のエッジループの解説

関節の曲がる側のポリゴンを少なく、伸びる側のポリゴンを多くする

Loop cuts for animation

そもそも関節の曲がる側がへこむのはそこに頂点があるからだ。なので曲がる側に頂点を配置しなければへこむことはなくなる。

関節の曲がる側にポリゴンを配置しない

関節の曲がる側にポリゴンを配置しない

これは尻も同じで、尻の分割数を多くして、鼠径部のポリゴンを減らす。

ベベルを使った分割

伸びる側の分割は辺を選択してべベルを使えば楽にできる。べベル中にホイールスクロールでべベル数を変更できる。曲がる側は頂点を選択して GG で辺に沿って頂点を移動。

伸びる側の分割

伸びる側の分割

斜め配置の例

肘側の頂点が移動するのを見越して、関節ポリゴンを斜め配置する方法がある。VRoid がこの方法を採用している(2022年現在)。

上面図。赤のラインが関節ポリゴン

上面図。赤のラインが関節ポリゴン

正面図

正面図

上面図。曲げた状態

上面図。曲げた状態

外部リンク


メッシュの貫通が前提の場合

メッシュの貫通が前提の場合は、曲がる側の間隔を狭くすることで、沈み込みを低減できる。

曲がる側の間隔を狭くする

曲がる側の間隔を狭くする

曲げたときにできる影はシェーディングで対処する。

貫通させたことでできる影

貫通させたことでできる影

外部リンク

Optimizing topology for a game Character: Creating a humanoid game character for animation

Limb Topology

GUILTY GEAR Xrd開発スタッフが送るスキニングのためのモデリング TIPS

指のトポロジーを解説しているページ(英語)

【クラウディア】ができるまで③ モデリング 体 前編

補助ボーン覚書

スキニング考察

遊戲模型佈線對動作變形之影響(1)-手肘膝蓋篇

関連記事

ウェイトペイントのTips

Blender 記事の目次


広告
広告

カテゴリ