IK向きのHumanoidボーン
人型にボーンが入ったモデルをインポートする場合においては、何が必要で、何が必要でないのかはしばしば混乱することがあります。このページでは、必要事項において知ることができます。
対応したファイル形式
VRChatなどの他のVRプラットフォームと互換性のある、リギングされたモデルがあれば、すぐに使えるはずです。アバターをインポートしてみてください。
念のため。.unitypackage
/ .vrm
/ .asset
/ .mesh
/ .prefab
は現在のところ サポートしていません。
サポートされている 人型(Humanoid) アバター のフォーマット:
- FBX
- GLTF
全体的なリグ/モデルの要件
- モデルはAポーズまたはTポーズであること。
- Orientation (forward facing) は正のZ軸に沿っている必要があります。反転したZも検出可能ですが、バグを含む可能性があります。
- これについて簡単なチェック方法: インポート設定で "Force T-pose "をチェックしてください。手が交差している場合は、Z(上下)軸に沿って180度回転させます。片方の手が前で、もう片方の手が後ろの場合、Z(上下)軸に沿って90度回転します。
日本向けの説明
- キセテネなどの衣装着せ替えツールを使用して服を着せかえている場合、同名のボーンが一つのアバターに複数入っていることがあります。
Neosにおいてはボーン名称を基準としてアバターを作成します。また、ボーン名称に "<NoIK>
" と入力しておくとIKの設定がスキップされます、服などを着せ変えている方は必ずエクスポートする前に基準となるボーン以外の名称を変更するか、"<NOIK>"の文字を追加してください。
- ボーン名の最初か最後に<NoIK>を追加すると、対応するボーンはImport処理から免除されます。
- これは、補助ボーンなど、間違って認識される可能性のあるボーンに便利です。これは、ボーンの子が検出されるのを防ぐものではありません。
全体的なリグ/モデルの要件
- モデルはAポーズまたはTポーズであること。
- Orientation (forward facing) は正のZ軸に沿っている必要があります。反転したZも検出可能ですが、バグを含む可能性があります。
- これについて簡単なチェック方法: インポート設定で "Force T-pose "をチェックしてください。手が交差している場合は、Z(上下)軸に沿って180度回転させます。片方の手が前で、もう片方の手が後ろの場合、Z(上下)軸に沿って90度回転します。
日本向けの説明
- キセテネなどの衣装着せ替えツールを使用して服を着せかえている場合、同名のボーンが一つのアバターに複数入っていることがあります。
Neosにおいてはボーン名称を基準としてアバターを作成します。また、ボーン名称に "<NoIK>
" と入力しておくとIKの設定がスキップされます、服などを着せ変えている方は必ずエクスポートする前に基準となるボーン以外の名称を変更するか、"<NOIK>"の文字を追加してください。
- ボーン名の最初か最後に<NoIK>を追加すると、対応するボーンはImport処理から免除されます。
- これは、補助ボーンなど、間違って認識される可能性のあるボーンに便利です。これは、ボーンの子が検出されるのを防ぐものではありません。
ボーンを無視する
NeosのIK判定で、ボーンを無視したい場合がありますが、可能です。ボーン名のどこかに、<NoIK>
(大文字小文字を区別しない)を追加するだけです。名前に<NoIK>
を含むボーンは、IKには使用されません。これは、IKボーンとして判定されてしまうツイストボーンや衣服/髪のボーンに利用できます。
ボーン名 | IKで利用できるか | メモ |
---|---|---|
Right Hand | ✅ | 右手と判定 |
<No_IK> Right Hand | ✅ | 右手と判定 |
<NoIK> Right Hand | ❌ | IKから除外 |
Right Hand <NoIK> | ❌ | IKから除外 |
Right Hand <noik> | ❌ | IKから除外 |
Right Hand <NOIK> | ❌ | IKから除外 |
ボーン(Bone) の必要条件について
モデルをインポートすると、Neosはパターンマッチングとヒューリスティックを使って、モデルのボーンのレイアウトを把握します。つまり、ボーンの名前はほとんど大文字小文字を区別せず、名前の周りに追加のデータを持つことができます。例えば、"hips"、"Hips"、"HIPS"、"cheese_hips "はすべてモデルのヒップボーンとして検出されます。ヒューリスティックはスペースにも寛容なので、"upper arm "や "upperarm "も "Upper Arm "ボーンとして正しくフラグが立てられます。
これは様々なリグをピックアップするのに非常に適していますが、参考までにこのフォーマットに従ってみてください。
体の各部位ごとに重要な情報をまとめた幅広いガイドを以下に紹介します。
これだけでは不十分な場合は、この二つを参考にしてください: 概要 / サンプルボーン/リグ設定のダウンロード
中央の 背骨・腰(Spine/Hips)
モデルのアーマチュアのルートは、そのHipでなければなりません。これは上を向いている単一のボーンでなければなりません。こういった名前である必要があります: hips, pelvis, root
腰から上に、こういった具合に鎖のようにつながっている必要があります: Hips -> Spine -> Chest -> Neck -> Head
腰のボーンに「Hip」という名前をつけてもうまくいきません。下の表の名前のいずれかに一致させる必要があります。
要約すると:
順番 | パーツ名 | 認識するほかの名前の一例 |
---|---|---|
1st | Hips | hips, pelvis, root |
2nd | Spine | spine, chest |
3rd | Chest | chest, upper chest, ribcage |
4th | Neck | neck |
5th | Head | head |
肩 / 腕 (Shoulder / Arm)
2本の腕を「胸(Chest)」ボーンに上から取り付け、モデルの両側に1本ずつ配置してください。腕がモデルのどちら側にあるかを示すために、"L" / "R"という文字を使います。これらは大文字小文字を区別しないので、「l」/「r」でも大丈夫です。
腕については次の順で並べてください: 肩(Shoulder) -> 上腕(Upper Arm) -> 下腕(Lower Arm) -> 手(Hand)
順番 | パーツ名 | 認識するほかの名前の一例 |
---|---|---|
1st | Shoulder | shoulder, clavicle, collar, collarbone |
2nd | Upper Arm | upperarm, upper arm, arm, bicep |
3rd | Lower Arm | fore arm, forearm, lower arm, lowerarm, elbow |
4th | Hand | hand, wrist, palm |
手
手は一見複雑に見えますが、その必要はありません。骨の名前について説明する前に、以下のことを覚えておいてください:
- 指について
- 各指には最低でも2つのセグメント(区切り)が必要です。
- 1本の指に最大4セグメントまで対応しています。
- 手として識別するには「最低3本の指」が必要です。
- 親指について
- 親指を識別できるものが必要です。
さらに、モデルに5本の指がある場合、位置を基準として検出を行い、ボーンの名前を把握します。このプロセスでは、リグを見て、どの指がどの指なのかを把握します。
これらのことを考慮しても、手動で指を設定したい場合もあるでしょう。そこで、他のセグメントと同様に、ここでは骨の名前についてのコメントを紹介します。
指の順番について: <fingername>1 -> <fingername>2 -> <fingername>3 -> <fingername>4
それぞれの指の名前については次の通りです:
- 親指 - Thumb
- 人差し指 - Index
- 中指 - Middle
- 薬指 - Ring
- 小指 - Pinky
表にまとめると次の通りです:
指の番号 | 指の名前 | 認識するほかの名前 | ボーン構造の一例 |
---|---|---|---|
1 | Thumb | thumb1.L -> thumb2.L -> thumb3.L -> thumb4.L
| |
2 | Index | point, pointer | index1.L -> index2.L -> index3.L -> index4.L
|
3 | Middle | middle1.L -> middle2.L -> middle3.L -> middle4.L
| |
4 | Ring | ring1.L -> ring2.L -> ring3.L -> ring4.L
| |
5 | Pinky | little | pinky1.L -> pinky2.L -> pinky3.L -> pinky4.L
|
指の識別
Neosは、以下のコードを使って、あなたの指が何であるかを探そうとします。:
public static FingerType? NameToFingerType(List<string> names) { if (names.Contains("thumb") || names.Contains("th") || names.Contains("thm") || names.Contains("thmb")) return FingerType.Thumb; else if (names.Contains("index") || names.Contains("point") || names.Contains("in") || names.Contains("ind")) return FingerType.Index; else if (names.Contains("middle") || names.Contains("mid") || names.Contains("mi")) return FingerType.Middle; else if (names.Contains("ring") || names.Contains("ri") || names.Contains("rin")) return FingerType.Ring; else if (names.Contains("pinky") || names.Contains("little") || names.Contains("pi") || names.Contains("pin") || names.Contains("pnk")) return FingerType.Pinky; return null; }
ご覧の通り、非常に柔軟で、自由度の高いものです。
脚
脚は他のものに比べてシンプルです。それぞれの脚はHip boneに接続する必要があります。腕がモデルのどちら側にあるかを示すのに使用したのと同様に、「L」と「R」の文字を使います。これらは大文字と小文字を区別しませんので、「l」と「r」を使用しても大丈夫です。
順番 | パーツ名 | 認識するほかの名前の一例 |
---|---|---|
1st | Upper Leg | upper leg, upleg, thigh, upperleg, hipL, hipR |
2nd | Lower Leg | leg, calf, knee, shin |
3rd | Foot | foot, ankle |
4th | Toes | toe, toes, ball, toebase, toes |
Heads
頭はシンプルですが、いくつか参考情報がありますので、お役立てください:
- アイトラッキングには、2つの目の骨が必要です。
- 使用する場合の目の名前は「EyeL」と「EyeR」です。
- 顎を使った会話アニメーションを使用する場合には、顎のボーンが必要になります。
- 顎の名前: "Jaw"
Visemesは、モデルのリグとは関係ないので、別の場所で扱っています。
追記: Visemeについては、vrcでセットアップされるものと同様のものが入っていれば自動的にセットアップされます。名称基準でセットアップされます。 この関係で、VRoidなどのアバターの場合、RRを誤認識することがあります。VRoidのアバターの場合はセットアップ後一度Visemeについて確認してみることをお勧めします。
総まとめ
ここでは、例のリグの概要を写真でご紹介します。より詳細なメモは上記を参照してください:
リグのサンプル
Blenderのリグのサンプルはこちらです: Google Driveからダウンロード.
対応しているツール
- Mixamoのリグはちゃんと機能します