新しいインバースダイナミクスの力センサーツールを使って、環境を理解する高度なロボットのシミュレーションを行うことができます。完全に刷新された Physics Debugger でダイナミクスを探求しましょう。パフォーマンスが向上した補間処理とバッチクエリもぜひご活用ください。
Physics Debugger は、物理エンジンの内部動作を理解したり、プロジェクトで観察される特定の動作を理解するために不可欠なツールです。優れたデバッガーは、説得力のある、現代的で豊かな物理学をオーサリングするための重要なツールです。そんな思いから、ユーザーインターフェース(UI)を全面的に見直し、面白い機能を追加しました。
より多くの情報を同じスペースに収めるため、プロパティをタブにグループ化し、新たに追加したプロパティで展開しました。
以前は、Rigidbody と ArticulationBody の両コンポーネントには、インスペクターに折りたたむことのできる「Info」セクションがあり、これを展開すると現在の線速度などの追加情報を表示することができました。しかし広げると、エディター全体の性能が大きく低下してしまいます。また、従来は異なる物体のパラメーターを比較する場合、2 つのインスペクターパネルを開く必要があり、煩雑でした。これらの問題を解決するために、すべてのプロパティを Physics Debugger ウィンドウの「Info」タブに移動し、選択したオブジェクトごとにプロパティを表示することで、簡単に並べて比較できるようにしました。
接触点を可視化し、接触点の法線と離隔距離を表示することができるようになりました。
Physics.Raycast や Physics.CastSphere などの物理クエリは、通常カスタムのキャラクターコントローラや乗り物のコントローラのような、カスタムな物理動作に組み込まれています。目に見えませんし、デバッグするのも厄介なものです。そのために、今回のリリースでは、物理クエリの視覚化をオプションで提供しています。
これまで Unity には、オブジェクトの集合とそれらに加わる力が与えられたときに、その軌道を計算するフォワードダイナミクスと呼ばれるものだけをサポートするツールがありました。これは非常に便利なのですが、私たちはロボット工学のツールボックスを拡張したかったのです。そこで、Unity 2022.1 では、インバースダイナミクスに対応しました。オブジェクトと目的の軌道が与えられたとき、その軌道を描くにはどのような力がかかるかをシミュレートして計算するのです。
この機能はイテレーションを回しつつ構築していくため、複数のリリースにまたがって成果物をご提供していくことになるかと思います。Unity 2022.1 では、ArticulationBody に今かかっている合力のうち、目的の軌道に沿って動かすための外力を加える前に打ち消すべき成分を計算する一連の関数が公開されています。さらに、ソルバーが加える衝撃を打ち消すために必要な関節力など、興味深いコンセプトが今後のリリースで公開される予定です。ぜひお試しいただき、ご意見をフォーラム でお聞かせください。
具体的には、以下の新機能が加わりました。
補間・外挿
Rigidbody は補間と外挿を使い分けることで、比較的低い周波数でシミュレーションを行いながら、滑らかな動きを表現することができます。内部的には、更新のたびにトランスフォームポーズを計算することで実装されています。補間の場合、シミュレーションされたポーズのうち最後の 2 つは、このフレームの新しいトランスフォームポーズを計算するために使用されます。外挿の場合、最後にシミュレーションされたポーズと速度が代わりに使用されます。ただし、軽量化のために、これらのポーズを物理エンジンに伝えることはしていません。ポーズは、物理以外のシステム(グラフィックスやアニメーションなど)にのみ提示されます。そのため、たとえばレイキャストでは、補間されたポーズの物体は検出されません。
物理システムがトランスフォームの変更を検知しないようにするため、ポーズ書き込みの直前に、更新するごとに Physics.SyncTransforms() を呼び出し、その後、内部メソッドを呼び出して物理システムのためにすべてのトランスフォームの更新をクリアする仕組みになっていました。そのため、2 種類の問題が発生しました。
これらの問題に対処するため、補間コードを更新し、各フレームのすべてのトランスフォームを同期させる必要がないようにしました。この変更によりパフォーマンスも向上したので、新しい補間コードは以前より高速に実行されます(シーンの複雑さにもよりますが)。
フォーラムでのフィードバックへの対応
フォーラムには、物理システム関連技術のさまざまな実験的プレビューを議論するセクションがあり、今回のリリースで実装された変更のいくつかは、そこから派生したものです。
皆さんが新しい Inverse Dynamics API と刷新された Physics Debugger を使ってどのようなものを作成するか、楽しみにしています。最新の Unity 2022.1 ビルドを今すぐダウンロードし、ロボット工学フォーラムと物理システムプレビューのフォーラムでの会話にもぜひご参加ください。