IK向きのHumanoidボーン

From Neos Wiki
Jump to navigation Jump to search
This page is a translated version of the page Humanoid Rig Requirements for IK and the translation is 100% complete.
Other languages:
English • ‎čeština • ‎日本語 • ‎한국어

人型にボーンが入ったモデルをインポートする場合においては、何が必要で、何が必要でないのかはしばしば混乱することがあります。このページでは、必要事項において知ることができます。

対応したファイル形式

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)

モデルのアーマチュアのルートは、上を向いている単一のボーンでなければなりません。以下のような名前である必要があります。

Example hip/central spine layout

腰から上に、こういった具合に鎖のようにつながっている必要があります: 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"と呼ばれます。

  1. Hips
  2. Spine
  3. Chest (Spine1とも表記されます)
  4. Upper Chest (Spine2とも表記されます)
  5. Neck
  6. Head

これらは必須ではありませんが、まだサポートされています。この、"背骨の中央"ボーンは、IKで無視されます。

肩 / 腕 (Shoulder / Arm)

2本の腕を「胸(Chest)」ボーンに上から取り付け、モデルの両側に1本ずつ配置してください。腕がモデルのどちら側にあるかを示すために、"L" / "R"という文字を使います。これらは大文字小文字を区別しないので、「l」/「r」でも大丈夫です。

腕については次の順で並べてください: 肩(Shoulder) -> 上腕(Upper Arm) -> 下腕(Lower Arm) -> 手(Hand)

Example arm rig layout
順番 パーツ名 認識するほかの名前の一例
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

Example fingers rig layout

手は一見複雑に見えますが、その必要はありません。骨の名前について説明する前に、以下のことを覚えておいてください:

  • 指について
    • 各指には最低でも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」を使用しても大丈夫です。

Example leg rig layout
順番 パーツ名 認識するほかの名前の一例
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について確認してみることをお勧めします。

Example head rig layout

総まとめ

ここでは、例のリグの概要を写真でご紹介します。より詳細なメモは上記を参照してください:

Example overall rig Example overall rig hierarchy shown in blender

リグのサンプル

Blenderのリグのサンプルはこちらです: Google Driveからダウンロード.

対応しているツール

  • Mixamoのリグはちゃんと機能します
  • Mixamoで生成されたリグは、何も変更せずにうまく機能します。
  • Ready Player Meで生成されたリグは、何も変更せずにうまく機能します。