版本:unity 5.4.1 语言:C#
第九章是海水,整整用了70多页,但是并没有什么用,还是要自己去看代码揣摩其中的含义。
既然讲到海水,我就想认真的学一下,看看书上的实现过程,再网上找找海水的文章做一下汇总,一片的篇幅肯定是装不下的。我对水的实现是非常执着的,起因的话要说到Minecraft的Shadows Mod,这里就不展开了。
没有学到Shader是致命的硬伤,我在我的能力范围内能写多少是多少,对自己也是个挑战。
今天讲讲海水网格的实现,如果读过之前文章读者肯定知道使用代码如何生成网格,不清楚的同学可以去Minecraft核心渲染机制的简单实现那篇博客上看看,原理是一样的。
首先看看效果图吧:
生成了4片,每一片中有32*32的网格数量。
下面来看看代码,顺便一提书上实现了LOD,简单的来说就是如果你形成的海洋比较大的话,远处的海水面并不需要那么多网格,就减少远处网格的数量,在这边是个很好的案例:
public class Ocean : MonoBehaviour {
// 一片区域网格横纵数量
public int width = 32;
public int height = 32;
// 区域的数量和大小
public int tiles = 2;
public Vector3 size = new Vector3(150f, 1f, 150f);