基于Water Physics在Unreal Engine中实现水系统模拟与物体漂浮状态模拟
结果展示
实验版本:Unreal Engine 5.6.1
使用插件:Water(Experimental) / Water Extras(Experimental) / Water Advanced(Experimental) / Buoyancy(Experimental) / Water Physics

一、Water Physics Plugin简述

Water Physics | Fab
二、实验过程
1. 下载安装并启用Water(Experimental) 、Water Advanced(Experimental) 、 Water Physics三个插件,然后重新启动虚幻引擎编辑器;
2. 在项目设置(project setting)的Plugins下找到Water Advanced(Experimental),然后勾选use Default Shallow Water Subsystem,即可实现与水系统的互动,如产生波纹和观察到水系统的垂直立面等;
3. 导入自定义船体模型(静态网格体),将其Physics参数组中的Simulate Physics勾选上,将Collision参数组中的Generate Overlap Events勾选上,然后打开静态网格体的编辑器并将设置其Collision为BOX Simplified Collision;

4. 在Place Actors中搜索Water Physics - UE4 Water Body放置于场景中,然后在Water Body的细节面板(Details)中在Water Bodies参数组添加交互水体实例即可(可以采用Pick Actor from Scene的方式)。

注意事项:
通过多次实验发现,Water Physics下用于碰撞检测的不同三角网包围面片生成方式会影响物体在水系统上的漂浮效果。当三角网生成越精细、数量越多且越贴合原静态网格体模型,则该物体在水系统中的漂浮状态越不明显,直观上看浮力较弱;反之,三角网生成数量越少、越简略(如BOX Simplified Collision等),则物体在水系统中的漂浮状态越明显,直观上看浮力较强。
采用26DOP Simplified Collision生成的精密贴合三角网,在水系统中只管看起来并没有漂浮而是沉入水底,但仔细观察会发现其实与水底有较小的距离。
三、实验额外收获
- 添加static mesh component并以其为根组件的继承自Actor的蓝图,其Advanced参数组的First Person Primitive Type参数是与第一人称角色控制器相关的一个设置,其核心作用是区分该模型在自身视角和其他角色视角中的显示与交互逻辑,避免第一人称视角下的视觉穿帮或碰撞问题。该设置通常配合
First Person Character控制器使用,确保模型在第一人称视角下的位置、旋转与相机同步(如随鼠标移动而转动),同时不影响角色的整体碰撞体积(由胶囊体碰撞组件控制); - 船体控制移动方法详见参考资料4。
参考资料
- [UE5教程]水系统教程——UE5 水、海洋、湖泊和河流
- UE5教程:利用官方插件制作能与角色交互的水
- Dynamic Water Physics – Tutorial – Video
- Dynamic Water Physics – Tutorial – M.I
- [UE5.5] NinjaLIVE + Oceanology制作大型船舶浮力和水交互

