2023年3月1日

Webでの物理サポート

Evergineは、.NETテクノロジーを使用して開発されたクロスプラットフォームのグラフィックスエンジンです。エンジンをWebプラットフォームに対応させるため、私たちのチームは.NET 6やBlazorなどの最新テクノロジーを活用してきました。これにより、エンジンをWebAssembly(WASM)にコンパイルし、ブラウザでネイティブ実行することが可能になりました。

EvergineでWebGLを用いてレンダリングする際、EmscriptenとそのEGLエミュレーションは、プロセスを円滑にする強力なツールです。つまり、既存のOpenGL統合で使用しているのと同じコードを利用できるため、保守すべきコードが少なくなります。

次に、物理演算について詳しく見ていきましょう。Evergineは、メインの物理エンジンとしてBullet Physicsを使用しています。Bullet Physicsは、Erwin Coumans氏によってメンテナンスされている優れたオープンソースライブラリであり、グラフィックス業界で広く使用されています。

 

EvergineでBulletを使用するには、C++ライブラリを当社のC#エンジンで利用する必要があります。そこでBulletSharpPInvokeの出番です。これは、PInvokeを使用してBulletライブラリへのネイティブ呼び出しを行うC#ラッパーを提供します。このラッパーは、Evergineがサポートするすべてのプラットフォーム(Windows、Android、Webなど)で同じコードベースを使用できるようにするために不可欠です。

最後に、サポートする各プラットフォーム向けにBulletライブラリをビルドする必要があります。Webプラットフォームの場合、提供されているCMakeスクリプトをEmscriptenツールチェーンを使用するように調整し、最終的なBullet WASMライブラリを生成しました。その結果、Webプラットフォームを含む、Evergineがサポートするすべてのプラットフォームで同じ物理ライブラリを使用できるようになりました。

結論として、Bullet Physicsを使用し、EvergineのWebプラットフォームで動作するように適応させることで、よりインタラクティブなWebアプリケーションをユーザーに提供できます。EvergineがWebXRをサポートするようになった今、これは特にエキサイティングであり、より没入感のあるWeb体験を可能にします。全体として、これはEvergineをプロジェクトに使用する開発者に利益をもたらす、印象的な技術的偉業です。

David avila
著者
David Ávila
Plain Concepts Research