cocos2d-x 3.x 图形学渲染系列六

来源:互联网 发布:语音验证码接收软件 编辑:程序博客网 时间:2024/05/01 11:43

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人,已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社 和《Unity3D实战核心技术详解》电子工业出版社等书籍。

Cocos2D-x引擎目前只提供了3D模块用于3D游戏的开发,针对3D常用模块已经开发完成,但是对于引擎的编辑器而言,目前没有任何编辑器可用,一个成熟的3D游戏引擎要在市场普及,对应的编辑器必须要成熟,否则引擎很难在市场推广,成熟的编辑器同样有助于开发者快速的上手,在这方面UnityUE4做的很好。但Cocos2d-x引擎对开发者来说最大的优势是:它的代码是开源的,开发者在此基础上可根据自己的需求进行功能扩展。涉及到引擎底层的修改,首先要了解3D引擎的整个模块架构以及这些模块的具体作用,在此基础上再细化。虽然Cocos2d-x引擎自身不完整,但是市面上已经有公司利用Cocos2d-x引擎开发出3D网路游戏,画质非常绚丽。相信随着Cocos2d-x引擎中的3D模块逐步完善,最终会独立出来成为真正的3D游戏引擎,当然引擎的各种辅助工具也会比较完善。在这里先给读者展示几张用Cocos2d-x引擎做的3D游戏场景截图如下所示的效果:





以上两幅图是利用Cocos2d-x引擎实现的3D效果图,从画质上可以看出游戏品质达到了产品的效果,由此可见在目前引擎的基础上开发产品项目是可行的,但是真正的做产品还是需要修改添加很多模块的。3D模块是Cocos2d-x引擎的核心模块,为了便于读者理解,下节开始讲解3D框架结构。


Cocos2D-x引擎在3.x版本以上时才有3D模块,传统的3D游戏引擎在框架方面其实都是比较复杂的,涵盖的功能也很多,比如地形的生成,水的生成,多线程加载等。相对来说Cocos2D-x引擎中的3D模块架构比较简单,因它的功能相对来说还不是很完善,本节把3D架构给读者展示如下图:



下面给读者介绍3D的各个模块功能,模块中的Particle3D实现的是3D粒子系统,它是根据Particle Universe开源粒子引擎改写而成的。Particle Universe子系统自带了一个粒子编辑器,开发者利用编辑器制作粒子,这个会在后面的章节具体介绍,感兴趣的读者可在百度中输入“Particle Universe”搜索到特效粒子的官方网站,著名的开源引擎Ogre3D使用的也是Particle Universe粒子引擎,另外著名的火炬之光单机游戏使用的粒子引擎也是Particle Universe。也有人参考该粒子引擎代码重新封装制作了3D粒子插件XEffect,接下来介绍3D模块。

     3D模块是引擎的核心模块,引擎中的主要实现都封装在该模块,包含的核心子模块有:地形、天空盒、AABB碰撞盒、OBB碰撞盒、骨骼动画、模型Mesh等,这些子模块也是在游戏中使用最多的。开发者对这些模块要重点掌握,它是与游戏逻辑关系最紧密的部分,接下来介绍跟数学运算相关的模块。

     Math模块主要封装了引擎底层的一些数学运算,包括矩阵的运算、四元数运算、几何运算,向量等算法。如果在写逻辑的过程中需要补充新的算法可在此模块中添加,重点关注矩阵的运算,因为3D物体在世界坐标系中,不论物体的移动、旋转、缩放都会涉及到矩阵与模型之间的运算。

     NavMesh是寻路模块也是AI的一种,该模块借鉴的是Unity3DNavMesh寻路模块,寻路模块最好的方式是借助场景编辑器,在网络游戏开发中,为了满足游戏的实时同步技术,寻路都是在游戏服务器中实现的,服务器中使用的是A*寻路算法,客户端提供的寻路只适合做单机游戏或者弱联网游戏。

     Physics是物理模块,实现的不完整,它针对的是刚体,在此就不做讨论了。

     最后一个模块对3D引擎来说也是非常重要的,那就是Renderer渲染,该模块实现了引擎底层对Shader脚本文件的读取解释操作。模型材质渲染都需要通过该模块编译Shader脚本文件,当然Shader脚本并不只是针对材质的渲染,它还包括场景的渲染,比如游戏中经常使用的后处理渲染Bloom、Blur、PSSM、SSAO等,目前Cocos2D-x引擎中的3D模块也实现了一些后处理效果,开发者在此基础上继续增加后处理Shader编写,关于渲染模块的处理也是本书重点讲解的部分。

     以上是Cocos2D-x引擎的核心模块以及关于它们功能的介绍,下面逐步给开发者细细讲解各个核心模块。


1 0