Diving into the Depths
因为项目需要,使用了UE4.26自带的水插件,通过观看官方视频进行学习并写下学习笔记,特此分享。
视频链接:https://www.bilibili.com/video/BV11Q4y197Rn
Intro and Basics
如果创建的海洋与地形的衔接过于生硬,可以将falloff setting中的falloff mode从angle改成width。
在河流中可以通过water当中的
depth 深度
river width 宽度
velocity 流速
来调整河流的样子。
Controlling Water
Common properties and features
Terrain:决定地形中样条的影响程度和下沉度。
Rendering中有water material和underwater post process material
分别用来调整水的材质和摄像机进入水下后的后期处理材质。
Wave Attenuation Water Depth波衰减水深:衡量了波浪靠近海岸的时候抚平海浪所需要的数值。它会根据水面到水底的深度来调整浪花的大小。
Wave source当中可以调节波浪的数量,波长的上限和下限,即波的大小。以及振幅的上限和下限,即波在纵向的位移大小。
Dominant Wind Angle主风向设置
Direction Angular Spread方向角展度
如果减少方向角展读的数值所有的浪花就都会向同一个方向运动(大型海啸)
Steepness用来调整陡度
How it works beneath the surface
it’s using landmass, which is a plugin been used to change the landscape and height map by using blueprint and spline.
如果把一个ocean actor或类似的组件拉到场景当中的时候,会在背景中生成两个附加的actor。
一个是Landscape_WaterBrushManager,用来生成水体网格体。原理是这个actor在关卡当中捕捉场景信息,然后将信息传输到即将生成的水体网格体上。它要捕捉地形的高度图,以及一些其它数据,然后根据这些数据生成渲染目标。(可以在render targets当中看见,所有的都是它自己生成的)然后再使用渲染目标中存储的信息。
另一个是WaterMeshActor。Water Mesh, which is the actual water surface itself.因为WaterBodyOcean不是水面,它只告诉WaterBrushManager它在干什么以及它想干什么。接着,WaterBrushManager告诉WaterMeshActor如何对自己渲染。因此WaterMeshActor才是真正的水面。这是一种程序性网格体,它是因各种水体,包括河流等等而生成的。如果把视图模式改成笔刷线框,可以看见蓝色的网格体就是WaterMeshActor。它能自动辨别河流流向和湖的位置。它把所有的东西都包裹在内,从而成为一个庞大统一的网格体。这就是水体之间无缝衔接的原因。这种结合是material层面上的结合。
如果想要调整远处的水,可以在WaterMeshActor当中的FarDistance来进行调整。
WaterMeshActor不止是一个巨大的网格体,实际上它可以分成若干水体。网格体本身也有LOD设置,它在远处简化自己。
可以通过r.Water_WaterMesh.ShowTileBounds 1来显示水的网格体。它将网格体划分成小方块,从而控制水体。
Single Layer Water Material
水表面的材质基于两样东西,一样是真实材质,也就是编辑器当中的材质,可以从water内容当中的material文件夹当中。WaterSurface文件夹。
Water_Material就是默认的水材质。(可以把它贴在一个mesh上面看看,挺有趣的)
这个材质的着色模型用的是单层水面(Single Layer Water),这项功能提供了大量额外的着色效果。
如果将着色模型设置成单层水面的话,就会新产生一个结点(Single Layer Water Material)。
水材质的混合模型是不透明或者已遮罩的。如果使用已遮罩,才可以在水中开一个洞。
但是我们一般是选择不透明。因为视图当中的水的表面看起来像是半透明的,但是其实是材质根据水底生成的一个不透明的表面涂层。这样就避免了波浪之间的排序问题。
Going Deeper
Far Water
WaterMeshActor当中的Far Distance,可以调整材质和距离
Buoyancy component
BP_BuoyancyExample,浮力组件。能让物体在水中漂浮。
如果将这个组件放到河流中,它就能识别河的流速和流向来自己移动。
Making things float via WPO
如果只想做一个漂浮的视觉效果,而不是真正在漂浮,可以使用材质来进行制作。制作方法见视频24min。
Floating debris with Niagara
25min
Holes in the surface
如果想在水面上创建一个建筑,然后可以抵达水面以下,有一个
Water Body Exclusion Volume