在刚刚过去的2014年,Cocos 3D技术经历了从无到有的历程。现在随着版本的更新升级,Cocos引擎3D技术也开始走向成熟。不仅有《捕鱼达人3》成功检验市场、获得良好口碑,开源游戏Demo《Fantasy Warrior3D》供大家解剖学习,更有多家知名游戏厂商已开始采用Cocos引擎3D技术开发大型网游,前景可谓光明。
     为了让对Cocos引擎3D技术感兴趣的童鞋们有更清晰的了解,本贴将给大家做详细介绍,总结目前Cocos引擎对3D的支持情况,并展示各项功能的具体详情。


3D静态模型及3D骨骼动画模型的加载与显示
    Cocos引擎3D功能目前支持载入 obj、c3b、 c3t格式的模型文件,其中obj只能导入静态模型,不支持动画。c3b与c3t则是通过模型转换工具fbx-conv导出插件转换后的文件格式——c3b文件为二进制文件,具有占用空间小,加载速度快等优点;c3t是json格式文件,可以直接打开来查看模型数据,方便开发者进行查看调试。

 

模型转换工具(fbx-conv)
     fbx-conv是Cocos引擎在tools/fbx-conv目录下自带的模型转换工具,跟随引擎版本更新,作用便是上方提到的将其他模型文件转换为我们所需要的c3b或c3t文件。
通常我们转换的是通用的FBX格式模型文件,可以通过3dmax、maya、blender等建模软件直接导出。但这里的fbx-conv工具不仅可以转换FBX文件,还可以转换obj、blend、c4d等文件。不过还是建议大家使用FBX文件作为中间格式。

 
模型换装系统及武器挂接
     Cocos引擎3D功能提供模型换装系统,可轻松实现游戏所需要的更换装备、武器挂接等操作。

  
 
3D摄像机
     Cocos引擎3D功能支持创建多个摄像机,创建时可以指定相机的类型,包括正交相机或透视相机,每个相机对目标对象的可见性可通过掩码来区分的。
     此外,Cocos引擎在初始化的时候会创建一个默认相机,这个相机里的内容总是最后渲染,因此可利用这个默认相机来绘制UI层。

 

视椎体裁剪
     Cocos引擎支持基于3D摄像机操作的视椎体裁剪,目的是在逻辑层剔除掉在摄像机视椎之外的对象,使其不会进入渲染管线,进而达到降低DrawCall提高渲染效率的目的。
     不过这里需要注意一点,当你设计的游戏3D角色要一直呆在视椎体范围之内时,建议不要打开视锥体裁剪,因为这样会增加不必要的性能开销。

 

AABB及OBB 碰撞检测
    当对场景中不同3D模型之间进行碰撞检测时,OBB比AABB更加精确一些,但因此效率会比较低。Cocos引擎可以使用射线拾取操作Ray,对plane以及AABB和OBB进行相交检测。运用在游戏中时,可实现鼠标点击角色(角色被AABB或OBB包裹)或点击地面(地表必须是平的,视为一个plane)移动等操作。

 

公告板
    目前Cocos引擎支持两种类型的公告板:一种朝向摄像机的X0Y平面;另一种则朝向摄像机原点。由于公告板节点始终朝向摄像机,因此你可以利用公告板,用很少的面来模拟树叶、草、等�*****锾濉�

 

3D光照系统
    目前Cocos引擎支持四种光照效果,分别是:环境光、方向光、点光源、聚光灯。
    一个场景内可以创建多个不同的灯光,同时场景内的对象也可以通过设置掩码来控制自身是否接受光照。但值得注意的是,除了环境光外,其他实时光照对游戏性能的影响比较大,建议谨慎使用。

 

3D特效
    目前Cocos引擎提供的3D特效主要有:描边、UV动画、伪阴影、卡通效果、光照贴图,等等。

 

多线程资源加载
    Cocos引擎3D功能提供多线程资源加载,切换场景时无需等待所有资源加载完毕,可进入场景后继续加载,降低进入场景的等待时间,提升游戏体验。

 

整合第三方特效系统 Particle Universe
    Cocos引擎3D功能整合了第三方特效系统Particle Universe(简称PU),后续版本会发布,目前只是beta版本,整合的代码需在其他仓库下载,下载地址可以联系我要,注明您的姓名+公司名,git clone代码后需要切换particle分支同时别忘了运行download-deps.py下载第三方库,然后就可以编译运行了。

 



最后给大家展示几个优秀团队的作品





 



 
      以上就是目前Cocos引擎目前对3D的支持情况,2015年Cocos引擎将努力把3D功能做得更好,这里少不了广大X-Men的关注与支持,欢迎各位童鞋继续提出更多的宝贵意见与建议: