Unityの「Humanoid」を活用しつつ、揺れ骨など独自ジョイントを制御するには。QualiArtsによる「CEDEC2024」講演の補足記事が公開

2024.10.08
ニュースUnity
この記事をシェア!
Twitter Facebook LINE B!
Twitter Facebook LINE B!

この記事の3行まとめ

  • QualiArts、『CEDEC2024 UnityのHumanoidと共存するキャラクタジョイント制御と制作ワークフロー』と題した記事を公開
  • 「CEDEC2024」での同名の講演内容および、割愛された部分を補足解説した記事
  • Unityの「Humanoid」のメリットを生かしつつ、揺れ骨や補助骨などのジョイントを制御する手法について紹介している

QualiArtsは、『CEDEC2024 UnityのHumanoidと共存するキャラクタジョイント制御と制作ワークフロー』と題した記事を、同社の技術ブログ「QualiArts engineer blog」にて公開しました。

同記事は、2024年8月21日(水)から23日(金)にかけて開催された「CEDEC2024」で行われた、同名の講演を補足した記事。講演本編の内容および、時間の都合により割愛された内容を記載しています。

「CEDEC2024」の講演スライド資料は、Speaker Deckで公開されている(画像はSpeaker Deckより引用)

Unityには、人型キャラクターを動かすための「Humanoid」と呼ばれる機能が備わっています。これにより、リターゲットやIKといった、キャラクターを汎用的に扱うシステムが整っています。

しかし、補助骨(補助ボーン)「揺れもの」のボーンなど独自のジョイントを導入する際には、Humanoid特有の挙動と相性が悪いことがあり、パフォーマンス的に最適でない選択をしなくてはならないことがあるそう。

記事ではHumanoidのメリットを生かしつつ、表現力やパフォーマンスを損なわないジョイント制御手法について解説しています。

Humanoidでは、ジョイントの回転を人体の動きに即したパラメータに正規化し、その値で制御する。これにより、手首のひねりを肘に伝達したり、手首の位置に合わせて肩や肘を動かしたりといった挙動が可能(画像はブログ記事より引用)

キャラクターの制御において、カットシーンとスクリプト操作の場面で求められる要件が異なります。

どちらの要件も満たすため、「UnityのTimelineと親和性が高いアニメーション再生」「キャラクター・衣装の変更に対応した基本ボーンの補正」「計算コストを抑えた独自ボーンの制御」といったシステムが必要になり、これらを実装する手法について説明されています。

「UnityのTimelineと親和性が高いアニメーション再生」については、Timelineとの親和性が高い「Animation C# Jobs」を用いてジョイントを制御。アニメーションやスクリプトにミックスやブレンドなどを行う「Playable API」を使って出力しています。

Playable APIのツリー構造(PlayableGraph)。アニメーションのブレンド後に追加のジョイント制御を行うことで、ゲーム性や再生方式によらない汎用のキャラクタ制御システムとして動作する(画像はブログ記事より引用)

「キャラクター・衣装の変更に対応した基本ボーンの補正」では、とくに衣装ごとのボリューム差に着目。たとえば衣装のスカートのボリュームが大きいときは、汎用モーションにおいて手が埋まってしまうなどの問題が発生します。

ボリュームの大きなスカートに手が埋まった様子(画像はブログ記事より引用)

対策として、衣装の概形に沿うコライダーを生成し、コライダーに基づいてポーズ補正処理を追加。これにより、同じモーションを使用しても埋まりをある程度回避できるようになっています。

コライダーにより、手の埋まりを回避(画像はブログ記事より引用)

ただし、IKおよびFKの切り替え処理が行われるため、コライダーに触れた瞬間にカクつきが起こることも。そこで、衝突を完全に避ける「不可侵領域」のコライダーのほか、ローパスフィルターのような役割を持つ「減衰領域」のコライダーを作成しています。

減衰領域での「布に手があたって沈むような挙動」を挟むことにより、カクつきの抑制が実現できたと述べています。

(画像はブログ記事より引用)

「計算コストを抑えた独自ボーンの制御」としては、足を曲げたときのスカートのジョイントの暴れを防止します。

実装手法としては、足の回転値を取得した後、ステレオ投影法で軸ごとに分解。前後と左右の曲げに合わせてスカートのジョイントを連動して動かす処理を行うことで、動きの破綻が抑えられ、豊かな表現ができたとのこと。

(画像はブログ記事より引用)

記事ではほかにも、「肘を曲げた際の出っ張った部分」などリアリティを表現するための補助骨作成や、揺れもののボーン制御の高速化/汎用化テクニック、MayaとUnity間のワークフローなど、さまざまな角度からジョイント制御などの解説をしています。

詳細は、QualiArts engineer blogをご確認ください。

『CEDEC2024 UnityのHumanoidと共存するキャラクタジョイント制御と制作ワークフロー』QualiArts engineer blog

関連記事

「Unity 6」で登場する「VFX Graph」新機能について、Unity Japanが解説動画を公開
2024.10.01
ゲームプログラミングにおけるデザインガイド、ユニティ・テクノロジーズ・ジャパンが日本語版の電子書籍を無料公開
2024.09.30
Unity公式によるアーティスト向け2Dゲーム開発ガイド、日本語版電子書籍が無料公開中
2024.09.25
「Unity 6」の全世界リリース日が10/17に決定。リアルタイムシネマティックデモ『Time Ghost』も初披露
2024.09.19
Unity Technologies、ゲーム領域の「Unity Runtime Fee」の導入撤回など料金体系の改定を発表。Unity Personalは適用範囲が拡大した一方、Pro/Enterpriseは値上げへ
2024.09.13
Unityで開発しているゲームで「スパイク」が起きてしまったら?ロジカルビートが対処方法をブログで解説
2024.09.09

注目記事ランキング

2024.10.02 - 2024.10.09
VIEW MORE

連載・特集ピックアップ

イベントカレンダー

VIEW MORE

今日の用語

Aスタンス
エースタンス 人型の3Dモデル作成の際に基本姿勢としてよく用いられるポーズの1つ。Aポーズとも呼ばれる。 直立した状態で、腕を斜め下に開いて垂らし、手のひらを内側に向ける姿勢。人がリラックスしている状態に近いため、自然に近い状態でのモデリングが可能になり、ポーズ変形時のテクスチャの伸びも少ない。
VIEW MORE

Twitterで最新情報を
チェック!