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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

Q&A

解決済

1回答

2205閲覧

【Unity】3dで人間の関節の角度調整方法がわかりません

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

0グッド

0クリップ

投稿2017/08/04 23:46

Unityで人間の関節を任意の角度にしてスクリプトから操作して歩かせたいのですが、オブジェクトの回転方法で最適なものがわかりません。
また回転角度の固定(ある角度で止めておく)こともわかりません。
私は以下のようなことをしたいのですが、joint方法や関節の回転方法が調べても、試してもわからなかったので質問しました。

(http://developer.wonderpla.net/entry/blog/engineer/GeneticAlgorithm/)
(https://www.youtube.com/watch?v=QE3SSKBdI00&t=29s)

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

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

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

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

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

guest

回答1

0

ベストアンサー

これは結構いろんな方法がありそうで、そのうえ人間のモーションとなると、検索してもスキンメッシュアニメーションの情報ばかりがひっかかって難しそうですね...

ご質問者さんの挙げられた1つ目のサイトで紹介されているパターンでは、ジョイントは使わずに各部位のパラメーターとして与えるオイラー角に制限を持たせているようですね。
膝のようなほぼ1方向にしか回転しない関節はHingeJointを使って、さらにデフォルトの状態だと重力に負けてくずおれるでしょうから、Use SpringをオンにしSpringに大きな値を入れて強力な角度拘束を働かせ、関節の回転はTarget Positionをスクリプトから操作するというのはどうでしょう。

参考図

自由度の大きい関節は複数のHingeJointを組み合わせるか、ConfigurableJointを使うとかでしょうか?
ただ、ちょっと試した感じではTarget Positionの操作による回転では(Rigidbodyのrotation操作でも同じく)ジョイントのLimits設定を無視するようなので、角度制限を持たせるには結局スクリプト上でLimitsを参照し、角度をClampで範囲内におさめるなどの工夫が必要そうです。

それにしても二足歩行はかなりやっかいですね。ご質問者さんの挙げられたサイトを真似て、HingeJointを使った二足歩行に挑戦したものの、まともに立たせることすらできませんでした...

実行例1

重心のズレを検知して上半身を傾けたり、傾いた方向に足を出させるような機構を実装してちゃんと歩けるようにしてからでないと、GA等で動きを最適化しようにも、そもそも成績を評価できなさそうです。
この辺はUnity向けの情報にこだわらず、もっと一般的な歩行シミュレーションだとか、二足歩行ロボットの制御に関する論文を探すのがいいのではないでしょうか。

※インチキですが、体幹部分のFreeze RotationをXYZ全部オンにしたら、足を適当に動かすだけでもある程度前進してくれました。これはこれで使い道があるかもしれません。

実行例2

投稿2017/08/06 12:34

編集2017/08/06 12:38
Bongo

総合スコア10807

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

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

退会済みユーザー

退会済みユーザー

2017/08/08 12:49

返信遅くなり、申し訳ないです わかりやすい解説ありがとうございます とても参考になりました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問