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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1966閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/08/12 16:16

編集2020/08/13 19:10

前提・実現したいこと

有料の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なのかなんなのか不明と言った状況です。

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

C#

1 hip_trans = animator.GetBoneTransform(HumanBodyBones.Hips); 2 spine_trans = animator.GetBoneTransform(HumanBodyBones.Spine); 3 Debug.Log(animator); 4 Debug.Log(hip_trans); 5 Debug.Log(spine_trans);

のログが、

C#

1Bear_ PBR (UnityEngine.Animator) 2Null 3Null

でした。ボーンが取得できない(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つのパターンどちらでもアニメーションが正しく動かなかったです(熊の姿勢が変だったり、アニメーションが正しく動かなかったです)。
イメージ説明

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

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/12 20:53

Bongo

総合スコア10811

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/08/13 19:15

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

2020/08/14 00: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 02:53

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問