Verge3D物理系统指南

Verge3D附带了一个物理引擎,可以让您模拟像真实世界一样的物理特性。这个功能对于创建3D游戏和AR/VR应用特别有用。

我们使用开源的物理引擎Bullet作为物理系统后端,它的web版本被称为 ammo.js

内容

物理系统入门

在使用物理系统之前,必须将物理模块添加到应用中。您可以在应用管理器中创建新应用时启用该模块。

默认情况下,Verge3D使用物理引擎的所谓WebAssembly版本。与常规版本相比,此版本具有显著的性能提升,但不适用于Internet Explorer 11和更早的Safari浏览器(版本10或更低版本)。如果您需要您的应用在这些浏览器中得到支持,请在应用创建对话框中同时启用PhysicsIE11模块。

或者,您可以将物理模块添加到现有的应用中。为此,将文件ammo.wasm.jsammo.wasm.wasmverge3d/build文件夹复制到应用文件夹,并添加这行代码

<script src="ammo.wasm.js"></script>

到应用的 .htmlv3d.js 脚本的上方。

使用拼图

请在 物理拼图章节中熟悉这些拼图。

一般性建议

创造第一人称角色

第一人称角色模式不仅适用于射击游戏和RPG游戏,也适用于任何需要调查大型环境的应用。例如,建筑可视化应用,电子学习软件,交互式参观指南,虚拟博物馆,文化设施模拟,甚至是3D虚拟卖场等。此外,您可以在VR应用中融入第一人称角色,使它更加真实和有趣!

实现FPS模式有很多可能的方法,但对于Verge3D初级用户,我们建议您遵循这篇简短的指南,以更快地实现效果。

创建一个胶囊形状对象代表角色。调整它的高度和宽度,使其看起来更逼真。确保正确设置对象的中心。

在拼图中,为角色指定dynamic capsule的body,并禁用其旋转自由度。通过这样,允许角色移动,但不允许旋转。同时,在胶囊上应用disable deactivation

由于角色需要在地板(+墙壁)或地面上行走,使用相应的create physics body拼图来创建这样的体。

下一步是配置摄影机。摄影机不会分配任何物理特征,因为我们只需要它作为“眼睛”即可。设置First-Person控件,但不要分配任何碰撞材质(我们将使用物理引擎提供的全功能碰撞检测,而不是基本的地板/墙壁模拟)。此外,取消选中Allow Panning,并将Movement Speed值设置为零:

现在需要把摄影机附加在角色的“头”上了。不需要为头部创建模型,在场景中添加一个名为“Head”的空对象,并将其设置为胶囊模型的上部的子物体。这样“Head”就会随着角色移动。

通过使用附加的“Head”对象,您可以在运行时将摄影机与角色连接或分离。若要连接摄影机,请使用 parentsnap to object 拼图:

通过使用附加的“Head”对象,您可以在运行时将摄影机与角色连接或分离。若要连接摄影机,请使用 parentsnap to object 拼图:

若要分离摄影机,请在使用parent拼图时将to object字段留空。

角色创建好了!现在是时候让它在场景中移动了。在最基本的情况下,我们需要在用户按下向上箭头键时向前移动。为此,将linear velocity矢量应用于角色,该矢量是从摄影机水平方向计算的。要使模拟稳健,应始终使用 on simulation link 拼图。

要在移动设备上移动您的角色,您需要额外的“controller”元素。您可以使用摄影机父级的3D对象创建它们,也可以使用 HTML元素.

若要在VR模式下移动角色,可以使用 get controller property(获取控制器属性)get gamepad property(获取游戏手柄属性) 拼图来获得VR控制器按钮与轴的状态。

模拟车辆物理

逼真的车辆物理模拟在交互式汽车定制器或赛车游戏等应用中很实用。查看Verge3D的官方案例 Arcade Racing 游戏,看一看如何在您的应用中也实现这一功能。

遇到问题?

欢迎您随时在 论坛上提问!您还可以加入中文用户社区QQ群(171678760),在线寻求帮助。