内容简介: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 图形学渲染系列总结
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
深入浅出Tapestry
董黎伟 / 电子工业出版社 / 2007-3 / 49.0
本书以循序渐进的方式,从Tapestry框架技术的基本概念入手,讲解Tapestry框架在J2EE Web应用程序中的整体架构实现。使读者在学习如何使用Tapestry框架技术的同时,还能够获得在J2EE Web应用程序中应用Tapestry框架的先进经验。 本书详细介绍了Hivemind框架的原理与应用,使读者不但可以通过Hivemind来重构Tapestry的官方实现,还可以使用Hive......一起来看看 《深入浅出Tapestry》 这本书的介绍吧!