EvergineにおけるJolt Physics

産業シミュレーションとPhysical AIへの第一歩

EvergineのJolt Physicsでシミュレートされた、倉庫内でパレットを運ぶフォークリフト

Evergineは、デスクトップ、Web、モバイル、XRで動作するデジタルツイン、トレーニングツール、プロセス可視化といった産業用3Dアプリケーションを構築するために生まれました。そうしたアプリケーションには、単に見せるだけでなく、それがどのように振る舞うかをシミュレートすることがますます求められています。そこで有用であるためには、物理演算が信頼できるものでなければなりません。

そのため、Evergineの物理演算を、最新のマルチコア物理エンジンである**Jolt Physics上に再構築しました。これは、長年にわたり活用してきたBulletを置き換えるものであり、Evergineをより強力なシミュレーションプラットフォームにするためのロードマップの第一歩です。次はMuJoCoの導入により、エンジンはPhysical AI**への対応力をさらに高めます。

概要:

この記事の内容

シミュレーションが重要な理由

産業界において、現実世界の環境を変更するには多大なコストがかかります。倉庫のレイアウト変更、新しい生産ラインの立ち上げ、重機のオペレーター訓練には、いずれも時間と費用がかかり、時には安全面のリスクも伴います。シミュレーションを活用すれば、失敗してもコストがかからない仮想コピー上で事前に試行できます。

これらすべてが依存するのは、押す、持ち上げる、落とす、運転するといった操作に対して、現実と同じように反応することです。物理演算が信頼できなければ、シミュレーションは意思決定に役立ちません。

今後の方向性

Evergineの物理演算の改善は、単発の機能ではありません。これは2つのステップからなるロードマップであり、どちらも同じ方向、すなわちPhysical AIを指しています。

図:Jolt PhysicsとMuJoCo、EvergineをPhysical AI向けに強化する2つのステップ

  1. Jolt Physics、現在利用可能。 Evergineがサポートするすべてのプラットフォームで、インタラクティブな産業シーン向けの高速で安定したリアルタイムエンジンです。
  2. MuJoCo、進行中。 ロボット工学研究者向けのリファレンスエンジンであり、実際の関節、アクチュエータ、接触を持つロボットをシミュレーションします。

Physical AI、つまり物理世界を知覚し行動するAIは、今日最も需要の高い分野の一つであり、そのシステムの訓練と検証をシミュレーションに依存しています。このロードマップの各ステップにより、Evergineはその対応力を高めます。

この記事はJoltについてです。MuJoCoについては最後に改めて触れます。

Joltを選んだ理由

Jolt Physics ロゴ

Jolt Physicsは、Jorrit Rouwe氏によって作成され、寛容なMITライセンスの下で公開されているオープンソースの物理エンジンです。最新のマルチコアCPU向けにゼロから設計され、大規模で非常に活発なコミュニティを持ち、要求の厳しい著名な商用作品でその実力を証明してきました。そのソースコードとアーキテクチャドキュメントは公開されているため、ソルバーが何を行うかを正確に把握できます。

Bulletは長年にわたりEvergineの物理エンジンであり、現在も評価の高いライブラリです。しかし、その開発は減速しており(最新リリースである3.25は2022年のものです)、一方でJoltは活発に開発が続けられ、機能が追加され続けています。私たちにとって、この切り替えは将来を見据えたものであり、共に成長していきたいエンジンを選んだのです。

Evergine開発者にとっての変更点は次のとおりです。

Bullet(以前)Jolt(現在)
パッケージEvergine.Bullet、個別にインストールEvergine.Frameworkに内蔵
マルチコアステップはシングルスレッドで実行されましたステップはCPUコア全体に分散されます
決定性保証されませんオプション:同じシーンは毎回同じ結果を返します
ビークル車輪型ビークルエンジンとギアボックスを備えた車輪型および無限軌道型ビークル
キャラクターキネマティックキャラクターコントローラー段差を登り、動くプラットフォームに乗り、オブジェクトを押します
ソフトボディ利用不可布、加圧およびボリューム型ソフトボディ
開発最新リリースは2022年活発に開発中

より高速で応答性の高いアプリケーション

Evergineにおける物理演算は、機械のシミュレーションだけに留まりません。ほとんどのインタラクティブアプリケーションは、誰も気づかないうちに毎フレーム物理演算に依存しています。コライダーはユーザーが指している対象をアプリケーションに伝え、レイキャストはオブジェクトを選択し、衝突イベントはアクションをトリガーします。これは、手やコントローラーがボタンを押したり、オブジェクトを掴んだり、メニュー内を移動したりするXRアプリケーションや、ユーザーが3Dモデルを選択して操作するデスクトップアプリケーションにも当てはまります。

Joltを使用することで、これらすべてがより高速かつ応答性が高くなります。衝突検出とレイキャストにかかる時間が短縮され、接触がより安定し、作業がCPUコア全体に分散されるため、多数のオブジェクトがあるシーンでもインタラクションが即座に応答します。Evergine MRTK、当社のMixed Reality Toolkitで構築されたアプリケーションは、直接的な恩恵を受けます。そのボタン、スライダー、メニュー、ハンドインタラクションはすべてコライダー上に構築されており、より速く、よりスムーズに反応するようになりました。

新しい物理演算サンプル

産業環境での新しい物理演算を示すために、倉庫内でフォークリフトがラックからパレットを持ち上げて運ぶという新しいサンプルを作成しました。

EvergineとJolt Physicsで構築された新しい物理演算サンプル

このシーンでは、実世界のスケールと質量を持つシミュレーション対応のアセットを使用しています。フォークリフトは3.4トンの車両で、エンジンと実際のステアリングを備え、マストとフォークはモーターで駆動され、パレットと箱は実際の倉庫と同じ重量です。ドアには柔らかいストリップカーテンが掛かっています。すべての物理演算は、物理演算コードなしでEvergine Studioから設定されています。

運転席からラックを見たビュー

ドライバーカメラ。ラック、パレット、箱はすべてシミュレーションの一部です

ブラウザで試す ことができ、 GitHubでソースコードを閲覧 できます。3Dモデルは NVIDIA SimReady から提供され、 CC BY 4.0 の下でライセンスされています。

Evergine物理演算の新機能

エンジンの変更に加えて、物理演算APIはよりシンプルな名前で再設計され、シミュレーションできる内容が大幅に増えました。以下が主なハイライトです。

ビークル

ビークルは、エンジン、ギアボックス、ステアリング、ブレーキ、各ホイールのサスペンションというコントローラーを備えた単一のボディです。これにより、高速時でも安定し、シミュレーションコストも低く抑えられます。車輪型ビークルに加えて、ブルドーザーやショベルカーなどの機械向けに、無限軌道型ビークルコントローラーが新たに追加されました。

今回のリリースで新たに追加された無限軌道型ビークル

キャラクターとラグドール

新しいキャラクターコントローラーは、段差を歩いて登り、斜面を進み、動くプラットフォームに乗り、歩いてぶつかったオブジェクトを押します。これは、プラントのウォークスルーやトレーニングシナリオでの人物に必要な機能です。

段差を登るキャラクターコントローラー

ラグドールを使用すると、シミュレーションがフィギュアの制御を引き継ぎます。キャラクターはアニメーションに従って歩き、任意の瞬間に転倒して物理的に反応し、それまでの勢いを維持できます。

アニメーションからラグドールに移行するフィギュア

ソフトボディと布

ソフトボディは完全に新しくなりました。布はドレープして折り畳まれ、風船は着地時に押し潰され、クッションは変形して元に戻ります。任意のメッシュをソフトボディにすることができ、その一部を固定したり、ポール上のバナーや新しい物理演算サンプルのストリップカーテンのように、別のオブジェクトに固定したりできます。

布、加圧およびボリューム型ソフトボディ

Studioで設計

これらはすべてEvergine Studioのインスペクターで設定し、エディターを離れることなくPlay Modeでテストできます。詳細はEvergine Studioの新機能をご覧ください。期待通りに動作しない場合、デバッグレンダリングが物理形状やジョイントをシーン上に描画します。

はじめに

物理演算はEvergine.Framework.Physics名前空間にあります。シーンにPhysicsManagerを登録し、任意のエンティティにボディとコライダーを追加します。

using Evergine.Framework.Physics;

public class MyScene : Scene
{
    public override void RegisterManagers()
    {
        base.RegisterManagers();

        // One physics world per scene
        this.Managers.AddManager(new PhysicsManager());
    }

    protected override void CreateScene()
    {
        // A 20 kg box that falls and collides (add a mesh and a material to see it)
        var box = new Entity("box")
            .AddComponent(new Transform3D() { Position = new Vector3(0f, 3f, 0f) })
            .AddComponent(new RigidBody() { Mass = 20f })
            .AddComponent(new BoxCollider());

        this.Managers.EntityManager.Add(box);
    }
}

Evergineドキュメントの物理セクションでは、各コンポーネントについて動画や例を交えて詳しく解説しています。

Bulletからのアップグレード

プロジェクトが以前の物理演算を使用している場合、移行が必要です。Evergine.Bulletパッケージは不要になり、各コンポーネントの名前が新しくなりました。RigidBody3DはRigidBodyに、BoxCollider3DはBoxColliderに、HingeJoint3DはHingeConstraintに、といった具合です。

機械的な作業を行うために、C#コード、プロジェクトファイル、シーン、プレハブを更新する移行ツールを構築しました。デフォルトではドライランとして実行され、変更するすべてのファイルのバックアップを作成し、人間の判断が必要な箇所をすべてレポートします。Bulletからの移行ガイド(Evergineドキュメントの物理セクション内)には、同等性の完全なリストと推奨プロセスが記載されています。

次なる展望:MuJoCoとPhysical AI

JoltはEvergineに堅牢なリアルタイム基盤を提供します。私たちが既に取り組んでいる次のステップは、**MuJoCo**の統合です。

MuJoCoロゴ

MuJoCo(Multi-Joint dynamics with Contactの略)は、ロボット工学、バイオメカニクス、機械学習研究のために作られた物理エンジンです。2021年からGoogle DeepMindによってメンテナンスされ、2022年からApache 2.0ライセンスの下でオープンソース化されています。MuJoCoはロボットをジョイントで直接記述するため、アームがバラバラになることなく、その動力学が正確に計算されます。ロボットは、実際のハードウェアの質量、慣性、関節制限、アクチュエータを持つモデルファイルで定義され、その形式で既に多数の実在ロボットのカタログが利用可能です。これが、MuJoCoがロボット工学研究における標準シミュレータの一つとなった理由です。

MuJoCoをEvergineに導入することで、実際のロボットモデルを産業シーンに配置し、Evergineでレンダリングされた実機同様の動きをあらゆるプラットフォームで確認できるようになります。

MuJoCoにより、EvergineのエンジンはPhysical AIにとってさらに強力になります。Physical AIとは、ロボットアームや自律移動ロボット、自動運転フォークリフトに至るまで、物理世界を認識、理解し、行動するAIシステムです。これは今日、最も需要が高く、最も急速に成長している分野の一つです。これらのシステムは、展開されるずっと前にシミュレーションで訓練・検証されます。シミュレータは現実よりもはるかに速く、安全に何千ものシナリオを実行できるからです。そのためには、信頼できる物理演算と、現実に近い環境が必要です。Joltによる信頼性の高い産業シーン、MuJoCoによる正確なロボット、そしてあらゆるデバイスでのEvergineのレンダリングは、まさにそれを実現します。

ぜひお試しいただき、ご意見をお聞かせください

Jolt PhysicsはEvergineの2026年11月リリースに含まれています。Evergineをアップデートし、シーンを開いて、押したり、持ち上げたり、運んだりする対象を追加してみてください。

皆様が構築されるもの、そして次にどのようなシミュレーションを実行したいかについて、ぜひお聞かせください。

David Ávila
著者
David Ávila
Plain Concepts Research