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 的用武之地。它提供了一个 C# 封装,通过 PInvoke 对 Bullet 库进行原生调用。这个封装至关重要,因为它允许您在 Evergine 支持的每个平台(Windows、Android、Web 等)上使用相同的代码库。

最后,您需要为要支持的每个平台构建 Bullet 库。对于 Web 平台,我们调整了提供的 CMake 脚本,以使用 Emscripten 工具链生成最终的 Bullet WASM 库。因此,现在可以在 Evergine 支持的每个平台上使用相同的物理库,包括 Web 平台。

总之,通过使用 Bullet Physics 并使其适配 Evergine 的 Web 平台,您可以为用户提供更具交互性的 Web 应用程序。鉴于 Evergine 现已支持 WebXR,可实现更沉浸式的 Web 体验,这一点尤其令人兴奋。总体而言,这是一项令人印象深刻的技术成就,将使使用 Evergine 进行项目开发的开发者受益。

David avila
作者
David Ávila
Plain Concepts Research