本文主要是从Cocos开发者角度,讲解如何在Blender中创建一个基础的3D球体模型,并导入到Cocos引擎使用。
基于Cocos Creator 3.4.2(3.x任意版本均可)+ Blender 4.3.2(若使用旧版Blender,导出菜单路径可能不同)
PS:Cocos Creator引擎自带的3D球体模型(Sphere)有2400个三角面,如果你恰好使用了球体,学完本文后,就可以用600个面的自制球体代替了。
一、为什么选择Blender?
Blender是一款免费开源的3D创作软件,支持建模、动画、渲染全流程,特别适合游戏开发新手。
1. 零成本入门
- 官网直接下载(blender.org),无需破解
- Windows/Mac/Linux全平台兼容
2. 轻量且强大
- 基础建模只需掌握5个核心工具
- 自带物理引擎和材质库
3. 游戏开发友好
- 支持导出FBX/glTF格式(Cocos常用格式)
- 社区有大量免费模型资源(BlenderKit.com)
二、3分钟搞定Blender球体建模
2.1 创建球体模型
-
打开Blender(本文使用版本为4.3.2),软件默认已经创建了一个立方体,无视其它,直接用鼠标选中立方体,右键菜单选择“删除”或快捷键X;
-
点击顶部菜单,选择【添加】→【网格】→【经纬球】;
-
左下方面板调整球体参数,<段数>默认为32,<环>默认为16,这两个参数用来调节模型面数,也决定了球面平滑度。数字越小则面数越少,意味着性能越高,同时也越不平滑。
从技术角度来说,自然是面数越少越好,我们在此处分别输入28和12即可,再小就会明显不平滑了;
-
此时球体表面看起来是凹凸不平的,用鼠标选中球体,右键菜单选择“自动平滑着色”,之后就平滑了;
-
点击Blender软件右上角“视图叠加层”按钮,弹出菜单中选中“统计信息”,视图左边就能看到当前场景的统计数据了,如下图所示,这个简单球体为616个面。
ok,到这里已经制作好了一个简单的3D球体模型,接下来导出给Cocos工程使用。
2.2 导出为游戏引擎格式
3D模型有多种输出格式,Cocos引擎支持的的是glb和fbx。此处我们选择glb格式,因为它比fbx更加轻量小巧。
-
在Blender中选中球体,点击菜单【文件】→【导出】→【glTF 2.0】;
-
关键导出设置
- 勾选Y轴向上。Cocos官方文档特别提醒导出时要勾选“Y轴向上”,此处Blender软件默认已经贴心的勾选上了。
- 保存路径,注意不要用中文。
- 勾选Y轴向上。Cocos官方文档特别提醒导出时要勾选“Y轴向上”,此处Blender软件默认已经贴心的勾选上了。
-
其它的暂时都不用管,默认就可以。然后选择合适目录,保存为 ball.glb。
三、Cocos Creator导入与上色
3.1 导入模型
- 打开Cocos Creator,从电脑目录下把ball.glb拖入到Creator资源管理器的Assets面板;
- 从资源管理器把ball模型拖到层级管理器,如下图所示;
3.2 材质颜色设置
此时的球体在Creator场景中显示为一个紫色的平面,原因是还没有添加材质。现在给它添加一个标准材质。
-
在Creator编辑器的Assets面板,右键菜单→【创建】→【材质】;
-
选中该新建材质,在属性中确认使用的Effect为builtin-standard,然后在材质属性中设置如下参数:
- Albedo:设置合适颜色(本文RGB色值为:0/255/0)
-
将该新建材质拖到场景ball模型的材质属性框中,如下图所示:
好了,现在运行Creator,就可以看到一个绿色的球了。
需要的话,还可以动态改变球体颜色,albedo属性代表固有色,所以设置它的值即可。示例代码如下:
const material = this.sphere.getComponent(MeshRenderer).material;
material.setProperty('albedo', new Color(255,0,0));
四、总结
本文主要内容是如何用Blender创建一个最基础球体,然后在Cocos中添加材质并使用。
主要流程:Blender建模 → 导出 → 导入到Cocos → 添加材质 → 静态或动态上色。
本教程后续会从Cocos开发角度,继续讲解如何在Blender中添加材质或纹理贴图,并导入到Cocos引擎使用。
对3D建模感兴趣的,一起动手试试吧!
五 联系作者
- 公众号:楚游香
- 个人网站: https://www.chuyouxiang.com/
作者的公众号和博客会不定期分享一些游戏开发技巧和上线实战经验,欢迎关注,共同进步!
作者同时创建了一个游戏开发交流群,供朋友们技术交流、学习合作、问题求助等,感兴趣的朋友可以关注我的公众号,并留言加群
。