内容简介:Cocos2d-x 3.x 图形学渲染系列十八
笔者介绍: 姜雪伟 , IT 公司技术合伙人, IT 高级讲师, CSDN 社区专家,特邀编辑,畅销书作者,国家专利发明人 ; 已出版书籍:《手把手教你 架构 3D 游戏引擎》电子工业出版社 和《 Unity3D 实战核心技术详解》电子工业出版社等。
本章主要介绍3D 模型的材质渲染,虽然Cocos2d-x引擎自身提供了一些Shader材质渲染,但是如果用其开发产品是远远不够的,需根据项目需求再增加一些Shader作为材质渲染,针对模型的材质渲染,用的最多的还是模型的高光、法线、反射、环境映射等这些效果表现。掌握了这些Shader的编写,基本上解决了大部分的材质渲染效果,不论什么引擎,图形学算法的实现原理都是一样的,只是需要开发者将其对应的用不同的编程语言实现出来而已。在实现模型渲染材质之前,首先要把模型加载显示出来。
Cocos2d-x 引擎使用的模型格式是通过fbx-conv 工具将fbx模型文件格式转化成c3b或者c3t格式,这两种格式都可以包含骨骼动画,另外Cocos2d-x引擎也支持加载obj格式,它是不需要 工具 转化的,可以直接利用Max工具导出使用,缺点是obj文件格式不包含动作信息,所以使用的比较少,只可用于测试模型。
c3b 文件格式是二进制的,内容无法具体查看,而c3t 是json文件格式,可以清楚的看到其内部结构。先介绍模型的转化过程,先用max工具导出fbx文件格式,然后使用工具fbx-conv将其转化成项目所需的c3t或者c3b模型格式,如果需渲染模型材质的高光、法线等效果,从max工具导出模型时,参数选项如下图:
这样可保证导出的模型具有法线和切线信息,法线的计算是在切向量空间进行的。在图10-1 中默认时如果不选择Tangents and Binormals这一项,导出的模型格式c3t,其二者是不同的,只截取关键的部分数据如下图 :
在上图中“attributes” 这一项中有:
VERTEX_ATTRIB_POSITION 位置属性、
VERTEX_ATTRIB_NORMAL 顶点法线属性、
VERTEX_ATTRIB_TEX_COORD 纹理坐标属性。上文已经提到过法线的计算需要在切向量空间中。而导出的数据没有切向量数据,这为计算增加了难度,需要程序自己编码实现,如果选中Tangents and Binormals 这一项,在导出时在命令行中加入-p,执行转化如下图:
执行该命令行后重新导出的模型数据格式如下:
在上图中可以看到在属性attributes 中增加了两项:
VERTEX_ATTRIB_TANGENT 切向量、
VERTEX_ATTRIB_BINORMAL 顶点次法线,在这里给读者解释一下什么是顶点次法线,见下图:
图中的三个轴向B 表示顶点A的次法线、轴向T表示顶点A的切线、轴向N表示顶点A的法线。这三个轴T,N,B两两正交,组成了一个切线空间矩阵TBN,如下所示:
这个矩阵非常重要,在高光、法线计算中都会用到该矩阵,在后面的章节中会详细介绍,另外经过加密的c3b 模型文件内容是二进制的,这里就不给大家展示了,接下来开始讲解模型加载。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- CubeEngine v0.3B 更新,图形渲染引擎
- TensorFlow也可以做图形渲染了:当神经网络遇上计算机图形学
- Basemark推出Rocksolid图形渲染解决方案
- Ogre 1.12.3 发布,三维图形渲染引擎
- Rust 移动端跨平台复杂图形渲染项目开发系列总结(目录)
- Cocos2d-x 3.x 图形学渲染系列总结
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
HTML Dog
Patrick Griffiths / New Riders Press / 2006-11-22 / USD 49.99
For readers who want to design Web pages that load quickly, are easy to update, accessible to all, work on all browsers and can be quickly adapted to different media, this comprehensive guide represen......一起来看看 《HTML Dog》 这本书的介绍吧!