【博物纳新】Unity海洋场景构建
【博物纳新】是UWA重磅推出的全新栏⽬,旨在为开发者推荐新颖、易⽤、有趣的开源项⽬,帮助⼤家在项⽬研发之余发现世界上的热门项⽬、前沿技术或者令⼈惊叹的视觉效果,并探索将其应⽤到⾃⼰项⽬的可⾏性。很多时候,我们并不知道⾃⼰想要什么,直到某⼀天我们遇到了它。
心情烦躁怎么缓解更多精彩内容请关注:
导读
这个项⽬是基于Unity社区中⼀个经典Ocean shader多次改进后海洋场景,海平⾯实现了浮⼒、波浪、风、⽓泡、交互泡沫、焦散以及其他的⼀些光的反射折射效果。本⽂重点介绍海平⾯场景的构建,其他效果的实现不作重点介绍。
普通效果
与岛屿交互
出国留学的好处>兔子手绘
开启风效果,并设置较⼤风同音字组词
使⽤⽅法
项⽬作者将重要参数可视化,在Inspector⾯板中进⾏修改。如果不太明⽩该参数的模拟的效果,可点击参数末尾的“?”按钮,会有详细的解释。
例如:Waves Settings 中的参数,由上⽽下依次可已设置波浪⼤⼩、波浪波动⼤⼩、流速、波浪密度。
Ocean Object属性⾯板
教育学研究
并在其中预置了⼀些参数集作为可选场景,⼤家也可以保存⾃⼰修改后的参数集,添加可选场景。
可选场景列表
实验原理/⽅法
浮⼒效果在Buoyancy中实现;
海平⾯的效果在Ocean.cs中实现,其中SetupOffscreenRendering、RenderReflectionAndRefraction
等函数⽤于⼀些光影效果的实现,本⽂不做重点介绍,有兴趣的读者可以下载源代码研究。
开启折射反射效果
不开启折射反射效果
看待英语作者采⽤绘制Mesh作为海平⾯、采⽤LOD技术进⾏优化。
作者将海平⾯区域划分为如图所⽰的11*11块⽅形区域,采⽤5级LOD、最外层加载⼀个铜钱形状Mesh来填充最外围的场景。
海平⾯分割图
所有Mesh全部⽣成在名为Ocean的Object下,部分⽣成的Mesh列表如下:
Mesh列表
船体永远位于5*5Mesh区域内,LOD级别为LOD_0,绘制最为精细的细节与效果。其余部分采取较低级别LOD,如图所⽰:
普通场景
开启WireFrame
登高望远的诗句当船体移动,驶出该区域,Ocean 组件会计算偏移量,然后将Ocean Object整体移动⼀块Mesh的距离,例如,在场景开始后控制船体向X轴负⽅向前进,直⾄驶出该Mesh区域,此时Ocean Object通过计算,也平移了⼀段距离:
运动会的加油稿注意Mesh的移动