質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.10%

キャラクタオブジェクトがHumanoidかどうか確かめる方法

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 600

score 336

前提・実現したいこと

有料のSmartRig Bipedというアセットを購入したのですが、
そのアセットはHumanoidのキャラクタモデルでないと対応していないとのことで、
他で購入したキャラクタモデルのアセットを適用させることを試みているのですが、
そのキャラクタモデルには、既にAnimatorコンポーネントがセットされているプレハブ版と、FBX版があり、
プレハブ版のほうで適用を試みているのですが、エラーが発生し、そもそもこれはHumanoidなのかどうかということを知りたいのですが、
どのようにすれば確認できますか?
ご教示お願いします。

試したこと

FBXの方であれば、インポート時にRigでHumanoidを設定してインポートできることは知っています。
もし、解決しなかったら、FBXの方で試すしかないとは思っているのですが、
まずは、プレハブのほうで確認できたらと思います。
プレハブの方で試してみたい理由は、既にAnimatorコンポーネントがアタッチされていたり、LODの設定がされていたりと、
いろいろと設定が施されているためです。
「Humanoid 確認」などで検索すると、インポート時にHumanoidにセットする方法は見つかるのですが、
既にセットし終わったモデルに対しては、Rigが何に設定されているか確認する方法が見つかりませんでした。

ちなみに、当該モデルの[Animator]パネルの[Base Layer]において、
設定から[IK Pass]にチェックを入れることができたのですが、
「[IK Pass]にチェックを入れられるのは、Humanoidのみ」ということはないですか?
アセットのドキュメントを読むと、明言はしていないのですが、[IK Pass]にチェックを入れられるのは、
Humanoidのみというように受け取れるようなことが書かれていました(勘違いかもしれません)。

また、当該モデルというのは、動物の熊のアセットなのですが、アニメーションによっては、
直立で立ったりもできるので、Humanoidなのかなんなのか不明と言った状況です。

また、有料アセットなのでコードを記載するのは望ましくないですが、ごく一部の
エラーが起こった箇所付近で取ったログ周辺のコードを記載させていただきますと、

        hip_trans = animator.GetBoneTransform(HumanBodyBones.Hips);
        spine_trans = animator.GetBoneTransform(HumanBodyBones.Spine);
        Debug.Log(animator);
        Debug.Log(hip_trans);
        Debug.Log(spine_trans);


のログが、

Bear_ PBR (UnityEngine.Animator)
Null
Null


でした。ボーンが取得できない(Null)のエラーかと思うのですが、これはHumanoidでないからなのでしょうか?

当該モデルの熊オブジェクトの構造は以下です。
子オブジェクトのインスペクタをいろいろと見たのですが、なにがボーンに該当するのか、Humanoidなのかどうかといったことなどがわかりませんでした。
イメージ説明

追記

FBXファイルをHumanoidに設定することで、SmartRig Bipedのアセットが機能することが確認できました。
イメージ説明

アニメーションもHumanoidに設定することを試みました。
RigをHumanoidに設定し、下記2つのパターンを設定して、[Apply]で適用してみました。

[Avatar Definition][Create From This Model]
[Avatar Definition][Copy From Other Avatar]


[Copy From Other Avatar]に設定した際は、[Source]に上記画像の赤線で囲ったAvatarをセットしました。
しかし、2つのパターンどちらでもアニメーションが正しく動かなかったです(熊の姿勢が変だったり、アニメーションが正しく動かなかったです)。
イメージ説明

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

ヒエラルキーの「root」以下がボーンの役割をするオブジェクト群だろうと思いますが、名前がなんだかHumanoidっぽくないので望みは薄そうですね...
animatorisHumanはどうなっているでしょうか?

あるいはAvatar欄の「BearAvatar」と表示されている部分をクリックすると、プロジェクト中の該当するアバターアセットが強調表示されるはずですが、それを選択してインスペクターに情報を表示させるとどうなっているでしょうか。もしHumanoidかつ編集可能なら「Configure Avatar」ボタンが表示され、そうでなければ何も情報が表示されずまっさらかと思います。

「IK Pass」にチェックを入れられるかどうかではおそらく判断できないかと思います。ちょっと試した限りではAnimator Controller側はアバターがHumanoidかGenericかを気にしていない様子で、GenericアバターをセットしたAnimatorにIK PassをオンにしたAnimator Controllerをセットすることもできました。ですが一緒にアタッチしたスクリプトにOnAnimatorIKメッセージは送られず、IKで手や頭を操作することはできませんでした。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/08/14 04:15

    ご回答ありがとうございます。
    animatorのisHumanで確認できるのですね、ご教示ありがとうございます。
    確認したところ、Falseだったので、プレハブは諦めてFBXモデルの方で調整しました。
    そして、FBXモデルをHumanoidに設定して、SmartRig Bipedのアセットが機能することが確認できました。
    ありがとうございます。
    また、さらに質問ですみませんが、
    アセットに用意されているアニメーションも全てGenericだったのですが、
    これらもHumanoidに設定することは可能ですか?
    試したところ、うまくアニメーションが動かなかったです。
    詳細は質問の追記に記載いたしました。

    キャンセル

  • 2020/08/14 09:12

    うーん、すみませんがそういったことは試したことがなくて、可能かどうかは不確かですね...
    Animation Converter(https://assetstore.unity.com/packages/tools/animation/animation-converter-107688 )なんていうHumanoid、Generic、Legacyアニメーションの相互変換ができるらしいアセットも見つかりましたが、今回のように元々人型でないものをHumanoidにマッピングするなんてことが可能なのか怪しいですね。

    熊をむりやり人間にしようとするよりも、むしろ熊は熊のままでIK機能を持たせる方針の方が見込みがあるかもしれません。Unityのロードマップ(https://unity3d.com/unity/roadmap )には開発中の機能として「Animation Generic IK」なんて項目がありますが、現時点で青色表示になっていないということは当分は機能追加されないでしょうし、アセットストアを探した方がよさそうです。
    検索してみたところ、Final IK(https://assetstore.unity.com/packages/tools/animation/final-ik-14290 )は少々値段が高いですがけっこう高機能そうですね。デモムービーでは6脚のクモ型メカが砂丘の上を歩いていたり(https://www.youtube.com/watch?v=-z_l7Jdz8Bohttp://www.root-motion.com/finalikdox/html/page5.html )、四足獣が山の地形に沿って走っていたり(https://www.youtube.com/watch?v=bNZzjrJDnUwhttp://www.root-motion.com/finalikdox/html/page9.html#quadruped )と、なかなか面白そうでした。

    キャンセル

  • 2020/08/14 11:53

    ご回答ありがとうございます。
    いろいろいじってみて、SmartRig Bipedのスクリプトコンポーネントを非アクティブにしたら、Humanoidでも正常なアニメーションが再生されたのですが、さらにいじったら、今度はHumanoidでも正常なアニメーションが再現できなくなってしまいました。
    もしかしたら、再現できなくなってしまいましたが、やり方によってはモデルとアニメーションは共にHumanoidに変換して、正常にアニメーションさせることは可能なのかなと思いました。
    ただ、確実にわかったことはSmartRig Bipedのスクリプトコンポーネントがオンになると、アニメーションがおかしくなるので、GenericなモデルとSmartRig Bipedは相性が悪いみたいです。
    Bongo様のおっしゃる通り、熊は熊のままでIK機能を持たせる方針の方がよさそうですね。
    Animation Generic IKなんていうものがロードマップにあるのですね、拝見しました。
    Final IKのご教示もありがとうございます。
    ご回答いただきありがとうございました。
    とても勉強になりました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.10%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る