Cocos引擎3D技术现状解析

2015年03月16日 10:31 0 点赞 0 评论 更新于 2025-11-21 17:16

在刚刚过去的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功能做得更好,期待广大开发者的关注与支持,欢迎各位继续提出宝贵的意见与建议。

作者信息

boke

boke

共发布了 3994 篇文章