Difference between revisions of "Humanoid Rig Requirements for IK/ja"
(Updating to match new version of source page) |
|||
Line 303: | Line 303: | ||
[[File:HumanoidRigOverallHierarchy.png|250px|Example overall rig hierarchy shown in blender]] | [[File:HumanoidRigOverallHierarchy.png|250px|Example overall rig hierarchy shown in blender]] | ||
+ | <div class="mw-translate-fuzzy"> | ||
= リグのサンプル = | = リグのサンプル = | ||
Blenderのリグのサンプルはこちらです: [https://drive.google.com/drive/folders/1jlNeTwg2ZKSv1wD7HMifZ-RtTTN6mGMw Google Driveからダウンロード]. | Blenderのリグのサンプルはこちらです: [https://drive.google.com/drive/folders/1jlNeTwg2ZKSv1wD7HMifZ-RtTTN6mGMw Google Driveからダウンロード]. | ||
+ | </div> | ||
== 対応しているツール == | == 対応しているツール == |
Revision as of 13:52, 6 March 2023
人型にボーンが入ったモデルをインポートする場合においては、何が必要で、何が必要でないのかはしばしば混乱することがあります。このページでは、必要事項において知ることができます。
対応したファイル形式
VRChatなどの他のVRプラットフォームと互換性のある、リギングされたモデルがあれば、すぐに使えるはずです。アバターをインポートしてみてください。
念のため。.unitypackage
/ .asset
/ .mesh
/ .prefab
は現在のところ サポートしていません。
サポートされている 人型(Humanoid) アバター のフォーマット:
- FBX
- GLTF
- VRM(後ろに.glbと追記することでインポートできます)。UniVRMが一定以下のバージョンかつ、VRM0で出力している場合はGLTFの基準に沿っていないため正常にインポートできません
全体的なリグ/モデルの要件
日本向けの説明
- キセテネなどの衣装着せ替えツールを使用して服を着せかえている場合、同名のボーンが一つのアバターに複数入っていることがあります。
Neosにおいてはボーン名称を基準としてアバターを作成します。また、ボーン名称に "<NoIK>
" と入力しておくとIKの設定がスキップされます、服などを着せ変えている方は必ずエクスポートする前に基準となるボーン以外の名称を変更するか、"<NOIK>"の文字を追加してください。
- ボーン名の最初か最後に<NoIK>を追加すると、対応するボーンはImport処理から免除されます。
- これは、補助ボーンなど、間違って認識される可能性のあるボーンに便利です。これは、ボーンの子が検出されるのを防ぐものではありません。
全体的なリグ/モデルの要件
- モデルはAポーズまたはTポーズであること。
- Orientation (forward facing) は正のZ軸に沿っている必要があります。
- 反転したZも検出可能ですが、バグを含む可能性があります。
- これについて簡単なチェック方法: インポート設定で "Force T-pose "をチェックしてください。手が交差している場合は、Z(上下)軸に沿って180度回転させます。片方の手が前で、もう片方の手が後ろの場合、Z(上下)軸に沿って90度回転します。
ボーンを無視する
NeosのIK判定で、ボーンを無視したい場合がありますが、可能です。ボーン名のどこかに、<NoIK>
(大文字小文字を区別しない)を追加するだけです。名前に<NoIK>
を含むボーンは、IKには使用されません。これは、IKボーンとして判定されてしまうツイストボーンや衣服/髪のボーンに利用できます。
ボーン名 | IKで利用できるか? | 説明 |
---|---|---|
Right Hand | ✅ | Right Handと判定 |
<No_IK> Right Hand | ✅ | Right Handと判定 |
<NoIK> Right Hand | ❌ | IKから除外 |
Right Hand <NoIK> | ❌ | IKから除外 |
Right Hand <noik> | ❌ | IKから除外 |
Right Hand <NOIK> | ❌ | IKから除外 |
bo<nOiK>ne | ❌ | IKから除外 |
ある日、公園に行くと、公園には<noik>があった。 | ❌ | IKから除外 |
ボーン(Bone) の必要条件について
モデルをインポートすると、Neosはパターンマッチングとヒューリスティックを使って、モデルのボーンのレイアウトを把握します。つまり、ボーンの名前はほとんど大文字小文字を区別せず、名前の周りに追加のデータを持つことができます。例えば、"hips"、"Hips"、"HIPS"、"cheese_hips "はすべてモデルのヒップボーンとして検出されます。ヒューリスティックはスペースにも寛容なので、"upper arm "や "upperarm "も "Upper Arm "ボーンとして正しくフラグが立てられます。
これは様々なリグをピックアップするのに非常に適していますが、参考までにこのフォーマットに従ってみてください。
体の各部位ごとに重要な情報をまとめた幅広いガイドを以下に紹介します。
これだけでは不十分な場合は、この二つを参考にしてください: 概要 / サンプルボーン/リグ設定のダウンロード
中央の 背骨・腰(Spine/Hips)
モデルのアーマチュアのルートは、上を向いている単一のボーンでなければなりません。以下のような名前である必要があります。
腰から上に、こういった具合に鎖のようにつながっている必要があります: Hips -> Spine -> Chest -> Neck -> Head
要約すると:
順番 | パーツ名 | 認識する名前の一例 | 認識しない名前 (これにしてはいけません)❌ |
---|---|---|---|
1st | Hips | hips, pelvis, root | hip |
2nd | Spine | spine, chest | |
3rd | Chest | chest, upper chest, ribcage, spine1, spine2 | |
4th | Neck | neck | |
5th | Head | head |
Upper Chest
多くのアバターには、背骨の中央に余分なBoneがあり、"Upper Chest"や"Spine2"と呼ばれます。
- Hips
- Spine
- Chest (Spine1とも表記されます)
- Upper Chest (Spine2とも表記されます)
- Neck
- Head
これらは必須ではありませんが、まだサポートされています。この、"背骨の中央"ボーンは、IKで無視されます。
肩 / 腕 (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セグメントまでサポートされています:
- Metacarpal
- Proximal
- Intermediate
- Distal
- 手として識別するには「最低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 |
趾行
Neos は趾行の脚をネイティブにはサポートしていません。多くのコミュニティメンバーが趾行脚をサポートするシステムを作っています。その一例が [1] にあります。
Heads
頭はシンプルですが、いくつか参考情報がありますので、お役立てください。
目
Neosはアバターの目の動きを自動でセットアップし、互換性のあるヘッドセットでアイトラッキングできます。これは、目に次のような名前を付けると機能します。
パーツ | 対応する名称(大文字小文字を区別しない) |
---|---|
左目 | LeftEye, Left Eye, Eye.L, Eye_L |
右目 | RightEye, Right Eye, Eye.R, Eye_R |
顎
顎ベースのアニメーションは、Blendshape/Viseme supportのためNeosではあまり一般的ではありません。それでも顎の骨を使いたい場合は、ボーンに"Jaw"という名前を付けることを推奨します。
Visemes(口形素)
Visemesは、モデルのリグとは関係ないので、別の場所で扱っています。
追記: Visemeについては、vrcでセットアップされるものと同様のものが入っていれば自動的にセットアップされます。名称基準でセットアップされます。 この関係で、VRoidなどのアバターの場合、RRを誤認識することがあります。VRoidのアバターの場合はセットアップ後一度Visemeについて確認してみることをお勧めします。
総まとめ
ここでは、例のリグの概要を写真でご紹介します。より詳細なメモは上記を参照してください:
リグのサンプル
Blenderのリグのサンプルはこちらです: Google Driveからダウンロード.
対応しているツール
- Mixamoのリグはちゃんと機能します
- Mixamoで生成されたリグは、何も変更せずにうまく機能します。
- Ready Player Meで生成されたリグは、何も変更せずにうまく機能します。
- ただし、Ready Player Me outfitsにはいくつかの問題点があります。