地形是Unity的基础,也是各种游戏设计的基础,地形中涉及到Mesh信息,两个重要的组件:meshFilter和meshRenderer在今后日常是需要经常打交道的
这套教程分享,从mesh信息中取常用的vertices顶点信息和triangles三角面绘制信息,进行入门级的原理讲解和基本应用
接下来的内容,覆盖了较多unity的使用还有c#基础的应用,对于初学者可能会比较难,但是个人觉得还是值得研究的,一来地形绘制本来就比较重要,二来这套教程涉及到的知识点都是非常主流和经常会使用的,也算是一个较为完整的模块实现教程,所以新人也可以从中感受到真实小项目日常编程整体思维,进一步熟悉下unity编程环境和思维模式(觉得累看不懂的就趁早转行吧 )
好了,教程总线路视频讲解中都有详细介绍,目前做完了第一大块,基本的无限地形生成和视距结合下的LOD多精度地形绘制已经OK,如果学了觉得有用,欢迎到b站或者这里留言( 否则个人精力有限这块后续内容近期可能不会优先更新了 )
毕竟我也是一个刚学unity,从未学过编程的菜鸟,这套教程的讲解分析和知识点对目前的我来说压力也是很大的,这十章做出来先休息下,考虑下期先带来一些别的项目吧
对应视频解说地址:
https://www.bilibili.com/video/av39076068
- 废话说完,简介下这套教程的框架:
首先地形准备做这么三大块吧:
- 无限地形Mesh网格绘制(第一到十二章)
- 简单shader书写,角色操作实现(第十三章到二十二章)
- 场景物体随机生成,环境生成逻辑实现(第二十三章到....)
全代码书写的地形,没有用到任何贴图素材,所以一般的逻辑就是利用柏林噪音随机高度值生成随机地图
开篇的mesh顶点绘制介绍一个小demo简单而比较全面地介绍了mesh网格绘制原理,比如
三角面的绘制,还有基于柏林噪音随机高度,一个简单的高低起伏的平面地形实现:
接下来开始从柏林噪音详细介绍分析,做出一个比较完整的柏林噪音生成的灰度图框架,一些基本而详细的体验,展示柏林噪音的神奇:
然后熟悉下Octave多倍频叠加波形,形成较为真实地形起伏的原理,这节涉及到一些专业的英文单词,各位英语不好的建议多熟悉熟悉,别气馁:
于是我们可以对应高度区间用数组记录做个简单的上色效果,利用一个简单的高度倍数提升地面,加上一些曲线控制实现较为真实的现实地形雏形:
接下来是我们的LevelOfDetail系统的简单应用,LOD系统,细节分层在游戏应用非常普遍,尤其移动端,降低远景和视野外的模型精度达到降低资源占用,优化帧数:
之后我们利用视距跟踪,做出来LOD系统下的多精度地形模块基础逻辑,就像下面这坨飞来飞去跟着的plane平面:
基础逻辑实现,我们第一大块的重点,利用多线程思想,构建基础的mapData和meshData多线程通信交互模块,测试,最后实现我们的无限地形模块:
接下来对代码进行一些修正,修复地图接缝问题,然后考虑做一些地形效果,后面的内容,抽时间慢慢来了,那么,欢迎开始观看视频解说,配合文字辅助应该效果更佳:
https://www.bilibili.com/video/av39076068/