Skip to main content
ARShow
ARShow
 首页 » 资源教程 » Unity3D教程

unity3d 随机生成地形之随机山脉

2016年09月04日 17:15:5516310

利用Fractal Noise生成地形,再加上山体shader,外加雪shader

Noise生成结果

 

noise 生成主要参考这篇文章,就不再赘述

Value3D:

unity3d 随机生成地形之随机山脉 Unity3D教程 第1张


Perlin2D:

unity3d 随机生成地形之随机山脉 Unity3D教程 第2张


Fractal Noise:

unity3d 随机生成地形之随机山脉 Unity3D教程 第3张

 

地形生成结果

生成地形网格方法主要参考这篇文章,就不再赘述

noise 频率:22,分辨率:256


Value3D:

 

unity3d 随机生成地形之随机山脉 Unity3D教程 第4张

Perlin2D:

 

unity3d 随机生成地形之随机山脉 Unity3D教程 第5张

Fractal Noise:

 

unity3d 随机生成地形之随机山脉 Unity3D教程 第6张

noise 有很多用处,比如地形,水体,流体,特殊物体的纹理,或使贴图不重复等等

 

山体shader

Shader方面分为两层,上层为岩石,下层为植物,(可根据贴图变化)

使用了四种贴图,上层两种,下层两种,噪声贴图来调整两种比例,以免一种过为单调,人工迹象明显

代码主要是利用lerp

unity3d 随机生成地形之随机山脉 Unity3D教程 第7张
注意:生成地形时,noise的uv比例要调整好(山体密度与细节)


雪部分主要根据下雪方向与法线方向判断,两者做点积,

再把下雪部分赋以特定雪纹理,就ok了

			if (dot(N, _SnowDir) > _SnowInten) {
					c = _SnowColor;
					N = normalize(i.normal) + normalize(UnpackNormal(tex2D(_SnowNormalTex, i.uv_SnowNormalTex)));
				}

unity3d 随机生成地形之随机山脉 Unity3D教程 第8张


结果

加上雾效与AA,bloom

unity3d 随机生成地形之随机山脉 Unity3D教程 第9张

 

unity3d 随机生成地形之随机山脉 Unity3D教程 第10张

 

unity3d 随机生成地形之随机山脉 Unity3D教程 第11张

 

unity3d 随机生成地形之随机山脉 Unity3D教程 第12张

 

全部代码已共享至github

评论列表暂无评论
发表评论