一种三维模型的渲染方法和系统的制作方法

文档序号:6525486阅读:222来源:国知局
一种三维模型的渲染方法和系统的制作方法
【专利摘要】本发明适用于三维显示【技术领域】,提供了一种三维模型的渲染方法和系统,所述方法包括:通过三维模型解析工具将待解析三维模型解析为多个组件;通过三维图形程序接口将所述多个组件的数据发送到终端的图形处理器;创建用于记录所述多个组件状态的状态链表;通过交互设备的碰撞选择组件,从所述状态链表获取所选择组件的第一模型透视投影矩阵,并更新为第二模型透视投影矩阵;将所述第二模型透视投影矩阵确定为第三模型透视投影矩阵,渲染所述第三模型透视投影矩阵。通过本发明,可减少三维模型在拆分组合的过程中与渲染的交互过程。
【专利说明】一种三维模型的渲染方法和系统
【技术领域】
[0001]本发明属于三维显示【技术领域】,尤其涉及一种三维模型的渲染方法和系统。
【背景技术】
[0002]随着计算机技术和显示技术的不断发张,如何使用三维技术带来的卓越视觉效果和丰富多彩的娱乐功能已经成为了三维显示【技术领域】的热点,其中与三维模型的交互是一项非常吸引人的研究方向。现有技术中,为了更好的渲染出不同的三维模型,需要通过OpenGL或者Direct3D等图形程序接口进行复杂的开发才能够完成,特别是在三维模型组件控制和三维模型组件渲染的交互过程中,会消耗终端大量的资源。

【发明内容】

[0003]本发明实施例的目的在于提供一种三维模型的渲染方法和系统,以解决现有技术在三维模型组件控制和三维模型组件渲染的过程中,会消耗终端大量资源的问题。
[0004]本发明实施例的第一方面,提供一种三维模型的渲染方法,所述方法包括:
[0005]通过三维模型解析工具将待解析三维模型解析为多个组件;
[0006]通过三维图形程序接口将所述多个组件的数据发送到终端的图形处理器,并将所述多个组件的三维点坐标和用于记录所述多个组件相邻关系的索引保存到终端的内存,所述索引与所述三维点坐标相关联;
[0007]创建用于记录所述多个组件状态的状态链表,所述状态链表包括:当前所有组件的索引、所有组件的位置坐标、以欧拉角表示的所有组件的方位角和渲染组件需要的模型透视投影矩阵,所述模型透视投影矩阵包括:模型矩阵、视图矩阵、透视投影矩阵;
[0008]通过交互设备的碰撞选择组件,从所述状态链表获取所选择组件的第一模型透视投影矩阵,并将所述第一模型透视投影矩阵更新为与所述交互设备相关的第二模型透视投影矩阵;
[0009]将所述第二模型透视投影矩阵确定为第三模型透视投影矩阵,通过所述三维图形程序接口将所述第三模型透视投影矩阵发送到所述图形处理器,并通过所述图形处理器将所述第三模型透视投影矩阵对应的三维模型渲染出来,所述第三模型透视投影矩阵为进行渲染的模型透视投影矩阵。
[0010]第二方面,本发明实施例提供了一种三维模型的渲染系统,所述系统包括:
[0011]解析单元,用于通过三维模型解析工具将待解析三维模型解析为多个组件;
[0012]发送单元,用于通过三维图形程序接口将所述解析单元解析的所有组件的数据发送到终端的图形处理器,并将所述所有组件的三维点坐标和用于记录所述所有组件相邻关系的索引保存到终端的内存,所述索引与所述三维点坐标相关联;
[0013]创建单元,用于在所述发送单元发送所有组件的数据、三维点坐标和索引之后,创建用于记录所述所有组件状态的状态链表,所述状态链表包括:当前所有组件的索引、所有组件的位置坐标、以欧拉角表示的所有组件的方位角和渲染组件需要的模型透视投影矩阵,所述模型透视投影矩阵包括:模型矩阵、视图矩阵、透视投影矩阵;
[0014]更新单元,用于通过交互设备的碰撞选择组件,从所述创建单元创建的状态链表获取所选择组件的第一模型透视投影矩阵,并将所述第一模型透视投影矩阵更新为与所述交互设备相关的第二模型透视投影矩阵;
[0015]渲染单元,用于将所述更新单元更新的第二模型透视投影矩阵确定为第三模型透视投影矩阵,通过所述三维图形程序接口将所述第三模型透视投影矩阵发送到所述图形处理器,并通过所述图形处理器将所述第三模型透视投影矩阵对应的三维模型渲染出来,所述第三模型透视投影矩阵为进行渲染的模型透视投影矩阵。
[0016]本发明实施例与现有技术相比存在的有益效果是:本发明实施例将三维模型拆分组合与渲染的过程分解开,通过拆分组合的过程获取待渲染组件的模型透视投影矩阵,并根据待渲染组件的模型透视投影矩阵将待渲染组件渲染出来,极大的减少了三维模型在拆分组合的过程中与渲染的交互过程。而且模型透视投影矩阵中的组件的位置坐标只在内存中保存一份,使用时可以通过索引从内存中直接获取所述位置坐标,减少了终端内存的消耗。
【专利附图】

【附图说明】
[0017]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0018]图1为本发明实施例提供的三维模型渲染方法的流程图;
[0019]图2为本发明实施例提供的三维模型渲染系统的结构图。
【具体实施方式】
[0020]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0021]本发明实施例将三维模型拆分组合与渲染的过程分解开,通过拆分组合的过程获取待渲染组件的模型透视投影矩阵,并根据待渲染组件的模型透视投影矩阵将待渲染组件渲染出来,极大的减少了三维模型在拆分组合的过程中与渲染的交互过程。而且模型透视投影矩阵中的组件的位置坐标只在内存中保存一份,使用时可以通过索引从内存中直接获取所述位置坐标,减少了终端内存的消耗。
[0022]为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
[0023]实施例一
[0024]如图1所示为本发明实施例提供的三维模型渲染方法的流程图,所述方法包括以下步骤:
[0025]在步骤SlOl中,通过三维模型解析工具将待解析三维模型解析为多个组件。
[0026]在本发明实施例中,组件是组成三维模型的基本单位,通过对组件的移动可以在后续步骤中渲染出不同的三维模型。终端在获取了待解析三维模型之后,通过三维模型解析工具将该待解析三维模型解析为多个组件,其中,三维模型解析工具可以通过工程师自己编写的程序完成,也可以借助三维模型文件解析库(如:Open Asset Import Library)的帮助。
[0027]在步骤S102中,通过三维图形程序接口将所述多个组件的数据发送到终端的图形处理器(Graphic Processing Unit,GPU),并将所述多个组件的三维点坐标OBJi (i=0?nobJ)和用于记录所述所有组件相邻关系的索引Indexmm保存到终端的内存,所述索引Indexnear与所述三维点坐标OBJi (i=0?ηΛ」)相关联。
[0028]在本发明实施例中,终端在获取了组件之后,通过三维图形程序接口(OpenGL、Direct3D等)将所有组件的数据发送到终端的GPU,其中,组件的数据包括但不限于:三维点坐标、法线坐标、纹理坐标、灯光信息和材质信息,并将所有组件的三维点坐标OBJi(i=0?Iitjbj)和用于记录所有组件相邻关系的索引Index.,保存到终端的内存,所述索引Indexnear与所述三维点坐标OBJi (i=0?ηΛ」)相关联。
[0029]在步骤S103中,创建用于记录所述多个组件状态的状态链表Statelist,所述状态链表包括:当前所有组件的索引Indextjbj、所有组件的位置坐标(Xp Yp Ζρ)、以欧拉角表示的所有组件的方位角(r P y)和渲染组件需要的模型透视投影矩阵Matrixmvp,所述模型透视投影矩阵Matrixmvp包括:模型矩阵Matrixmmlel、视图矩阵Matrixview、透视投影矩阵Matrixpers0
[0030]在本发明实施例中,状态链表表示为Statelist,当前所有组件的索引用Indextjbj表示,所有组件的位置坐标用(Xp Yp Zp)表示,以欧拉角表示的所有组件的方位角用(r P y)表示,渲染组件需要的模型视图投影矩阵用Matrixmvp表示,模型透视投影矩阵包括的矩阵表示为:模型矩阵Matrixnrodel、视图矩阵Matrixview、透视投影矩阵MatrixpOTS。一个三维模型可以包括多个状态,每拆分或重组组件之后生成的新组件创建一个新的状态,用于拆分或重组的组件从原状态中删除,举例说明如下:
[0031]设一个三维模型的状态链表为Statelistl,该状态链表中包括三个组件,记为State(I)、State (2)、State (3),其中组件2、组件3通过组合之后生成了一个新组件2’,则2’生成一个新的状态链表State (2’),在状态链表Statelist内将State2和State3删除,把状态State (2’)加入状态链表Statelist内,此时状态链表Statelist中就包含两个状态State(I)和 State (2,)。
[0032]在步骤S104中,通过交互设备的碰撞选择组件,从所述状态链表Statelist获取所选择组件的第一模型透视投影矩阵,并将所述第一模型透视投影矩阵更新为与所述交互设备相关的第二模型透视投影矩阵。
[0033]在本发明实施例中,为了控制组件的移动,需要使用交互设备,与三维模型进行交互的交互设备可以有很多种,既可以直接使用手指进行控制移动、也可以使用定制的控制笔、控制棒等等进行控制移动,将组件的模型透视投影矩阵更新为与交互设备相关,可以使组件随着交互设备的移动而移动。所述通过交互设备的碰撞选择组件,从所述状态链表Statelist获取所选择组件的第一模型透视投影矩阵,并将所述第一模型透视投影矩阵更新为与所述交互设备相关的第二模型透视投影矩阵,包括:
[0034]1、通过碰撞检测算法检测交互设备是否碰撞到组件,如果碰撞到,通过计算确定被碰撞的组件。[0035]在本发明实施例中,交互设备是否碰撞到模型的组件,是通过碰撞检测算法来检测的,三维空间内的碰撞检测比较复杂,现在已有一些成熟的碰撞检测引擎,比如Havok、PhysX.Bullet等,可以借助这些碰撞检测引擎实现碰撞的检测,当检测到进行了碰撞之后,通过计算确定被碰撞的组件。所述通过计算确定被碰撞的组件的步骤包括:
[0036]a、通过碰撞检测算法计算出所有碰撞点的坐标(X。」Ycj ZcJ)0
[0037]b、将所述碰撞点坐标(Xej Ycj Zcj)与状态链表Statelist中的所有组件的三维点坐标进行比对,确定所述碰撞点坐标所属的组件。
[0038]2、从状态链表Statelist中将确定的所述组件的状态单独列为状态StatepM。,从所述状态StatepM。中获取所述组件的第一模型透视投影矩阵,并将所述第一模型透视投影矩阵更新为与所述交互设备的位置和方位角信息相关的第二模型透视投影矩阵。
[0039]在本发明实施例中,在确定了被碰撞组件之后,将该组件的状态单独列为一个状态StatepM。,从上述状态Stateprae中获取被碰撞组件的第一模型透视投影矩阵,并将所述第一模型透视投影矩阵更新为与所述交互设备的位置和方位角信息相关的第二模型透视投影矩阵。从状态链表Statelist中将所述组件的状态单独列为状态StatepM。,包括:
[0040]a、如果所述待解析三维模型只包括被碰撞组件一个组件,则将其对应的状态列为Stateproc ;或者,
[0041]b、如果所述待解析三维模型包括被碰撞组件在内的多个组件,则创建新的状态Statenew,将所述被碰撞组件的索引存储到所述Statemw,并将被碰撞组件状态内的信息存储到所述Statenew,将所述Statenew列为状态链表Statepro。,同时在状态链表Statelist内移除被碰撞组件的State。所述被碰撞组件在State内的信息包括:被碰撞组件的位置坐标、以欧拉角表示的被碰撞组件的方位角和渲染被碰撞组件需要的模型透视投影矩阵。
[0042]所述将所述第一模型透视投影矩阵更新为与所述交互设备的位置和方位角信息相关的第二模型透视投影矩阵,包括:
[0043]根据公式将第一模型透视投影矩阵更新为第二模型透视投影矩阵:
[0044]
【权利要求】
1.一种三维模型的渲染方法,其特征在于,所述方法包括: 通过三维模型解析工具将待解析三维模型解析为多个组件; 通过三维图形程序接口将所述多个组件的数据发送到终端的图形处理器,并将所述多个组件的三维点坐标和用于记录所述多个组件相邻关系的索引保存到终端的内存,所述索引与所述三维点坐标相关联; 创建用于记录所述多个组件状态的状态链表,所述状态链表包括:当前所有组件的索弓1、所有组件的位置坐标、以欧拉角表示的所有组件的方位角和渲染组件需要的模型透视投影矩阵,所述模型透视投影矩阵包括:模型矩阵、视图矩阵、透视投影矩阵; 通过交互设备的碰撞选择组件,从所述状态链表获取所选择组件的第一模型透视投影矩阵,并将所述第一模型透视投影矩阵更新为与所述交互设备相关的第二模型透视投影矩阵; 将所述第二模型透视投影矩阵确定为第三模型透视投影矩阵,通过所述三维图形程序接口将所述第三模型透视投影矩阵发送到所述图形处理器,并通过所述图形处理器将所述第三模型透视投影矩阵对应的三维模型渲染出来,所述第三模型透视投影矩阵为进行渲染的模型透视投影矩阵。
2.如权利要求1所述的方法,其特征在于,所述通过交互设备的碰撞选择组件,从所述状态链表获取所选择组件的第一模型透视投影矩阵,并将所述第一模型透视投影矩阵更新为与所述交互设备相关的第二模型透视投影矩阵包括: 通过碰撞检测算法检测交互设备是否碰撞到组件,如果碰撞到,通过计算确定被碰撞的组件; 从所述状态链表中将确定`的所述组件的状态单独列为状态StatepM。,从所述状态链表中获取该组件的第一模型透视投影矩阵,并将所述第一模型透视投影矩阵更新为与所述交互设备的位置和方位角信息相关的第二模型透视投影矩阵。
3.如权利要求2所述的方法,其特征在于,所述从所述状态链表中将确定的所述组件的状态单独列为状态Stateprae包括: 如果所述待解析三维模型只包括被碰撞组件一个组件,则将其所对应的状态列为状态Stateproc ;或者, 如果所述待解析三维模型包括被碰撞组件在内的多个组件,则移除所述被碰撞组件在所述状态链表内的状态,创建新的状态Statemw,将所述被碰撞组件的索引存储到所述状态Statenew,并将所述被碰撞组件在所述状态链表内的信息存储到所述状态Statemw,将所述状态Statenew列为状态StatepM。,并加入到所述状态链表内,所述被碰撞组件在所述状态链表内的信息包括:被碰撞组件的位置坐标、以欧拉角表不的被碰撞组件的方位角和渲染被碰撞组件需要的模型透视投影矩阵。
4.如权利要求3所述的方法,其特征在于,所述将所述第一模型透视投影矩阵更新为与所述交互设备的位置和方位角信息相关的第二模型透视投影矩阵,包括: 根据公式将第一模型透视投影矩阵更新为第二模型透视投影矩阵:
5.如权利要求1所述的方法,其特征在于,所述将所述第二模型透视投影矩阵确定为第三模型透视投影矩阵,包括: 如果所述待解析三维模型只包括被碰撞组件一个组件,则将所述第二模型透视投影矩阵确定为第三模型透视投影矩阵;或者, 如果所述待解析三维模型包括被碰撞组件在内的多个组件,将所述被碰撞组件设为第一组件,通过所述碰撞检测算法的计算获取与所述被碰撞组件发生碰撞的第二组件,通过所述索引Indexn-确定所述第一组件与所述第二组件是相邻组件,则把第一组件的索引存入到所述第二组件中,用加入所述第一组件的索引的第二组件的位置坐标替换所述第二模型透视投影矩阵的位置坐标,并将经过所述替换的第二模型透视投影矩阵确定为第三模型透视投影矩阵。
6.一种三维模型的渲染系统,其特征在于,所述系统包括: 解析单元,用于通过三维模型解析工具将待解析三维模型解析为多个组件; 发送单元,用于通过三维图形程序接口将所述解析单元解析的所有组件的数据发送到终端的图形处理器,并将所述所有组件的三维点坐标和用于记录所述所有组件相邻关系的索引保存到终端的内存,所述索引与所述三维点坐标相关联;创建单元,用于在所述发送单元发送所有组件的数据、三维点坐标和索引之后,创建用于记录所述所有组件状态的状态链表,所述状态链表包括:当前所有组件的索引、所有组件的位置坐标、以欧拉角表示的所有组件的方位角和渲染组件需要的模型透视投影矩阵,所述模型透视投影矩阵包括:模型矩阵、视图矩阵、透视投影矩阵; 更新单元,用于通过交互设备的碰撞选择组件,从所述创建单元创建的状态链表获取所选择组件的第一模型透视投影矩阵,并将所述第一模型透视投影矩阵更新为与所述交互设备相关的第二模型透视投影矩阵; 渲染单元,用于将所述更新单元更新的第二模型透视投影矩阵确定为第三模型透视投影矩阵,通过所述三维图形程序接口将所述第三模型透视投影矩阵发送到所述图形处理器,并通过所述图形处理器将所述第三模型透视投影矩阵对应的三维模型渲染出来,所述第三模型透视投影矩阵为进行渲染的模型透视投影矩阵。
7.如权利要6所述的系统,其特征在于,所述更新单元,包括: 确定子单元,用于通过碰撞检测算法检测交互设备是否碰撞到组件,如果碰撞到,通过计算确定被碰撞的组件; 更新子单元,用于从所述状态链表中将所述确定子单元确定的组件的状态单独列为状态Statepra。,从所述状态链表中获取该组件的第一模型透视投影矩阵,并将所述第一模型透视投影矩阵更新为与所述交互设备的位置和方位角信息相关的第二模型透视投影矩阵。
8.如权利要求7所述的系统,其特征在于,所述更新子单元从所述状态链表中将所述组件的状态单独列为状态StatepM。,包括: 如果所述待解析三维模型只包括被碰撞组件一个组件,则将其所对应的状态列为状态Stateproc ;或者,`` 如果所述待解析三维模型包括被碰撞组件在内的多个组件,则移除所述被碰撞组件在所述状态链表内的状态,创建新的状态Statemw,将所述被碰撞组件的索引存储到所述状态Statenew,并将所述被碰撞组件在所述状态链表内的信息存储到所述状态Statemw,将所述状态Statenew列为状态StatepM。,并加入到所述状态链表内,所述被碰撞组件在所述状态链表内的信息包括:被碰撞组件的位置坐标、以欧拉角表不的被碰撞组件的方位角和渲染被碰撞组件需要的模型透视投影矩阵。
9.如权利要求8所述的系统,其特征在于,所述更新子单元将所述第一模型透视投影矩阵更新为与所述交互设备的位置和方位角信息相关的第二模型透视投影矩阵,包括: 根据公式将第一模型透视投影矩阵更新为第二模型透视投影矩阵:
10.如权利要求6所述的系统,其特征在于,所述渲染单元,包括: 直接确定子单元,用于如果所述待解析三维模型只包括被碰撞组件一个组件,则将所述第二模型透视投影矩阵确定为第三模型透视投影矩阵;或者, 间接确定子单元,用于如果所述待解析三维模型包括被碰撞组件在内的多个组件,将所述被碰撞组件设为第一组件,通过所述碰撞检测算法的计算获取与所述被碰撞组件发生碰撞的第二组件,通过所述索引IndeXn.确定所述第一组件与所述第二组件是否为相邻组件,如果是则把第一组件的索引存入到所述第二组件中,用加入所述第一组件的索引的第二组件的位置坐标替换所述第二模型透视投影矩阵的位置坐标,并将经过所述替换的第二模型透视投影矩阵确定为第三模型透视投影矩阵。
【文档编号】G06T15/00GK103679792SQ201310724190
【公开日】2014年3月26日 申请日期:2013年12月24日 优先权日:2013年12月24日
【发明者】李相涛, 邵诗强 申请人:Tcl集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1