3d体积光动态实现方法及装置的制作方法

文档序号:6429332阅读:276来源:国知局
专利名称:3d体积光动态实现方法及装置的制作方法
技术领域
本发明涉及3D图像处理技术领域,尤其涉及的是一种3D体积光动态实现方法及装置。
背景技术
体积光是遮光物体被光源照射时,在其周围呈现的光的方式性泄露。例如太阳照到树上,会从树叶的缝隙中透过形成光柱。之所以称之为体积光,是因为这种特效下的光照相比以往游戏中的光照给人视觉上以空间的感觉。在3D场景中,经常需要用到体积光。例如,光线从树叶缝隙中透下来的效果,窗台的阳光照射效果,或者舞台的灯光效果等等。而目前的体积光处理的技术大多采用3DMax 等软件直接制作。这样的话很难复用,也很难实时改变体积光的效果,且制作效率低。当然更不易实现体积光的动态效果(例如舞台体积光的颜色、明亮都是动态改变的,阳光的体积光也会随着天气云朵不同而有区别)。因此,现有技术还有待于改进和发展。

发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种3D体积光动态实现方法及装置,其可以简洁的方式创建体积光,提高了体积光的制作效率,并且可以实现3D体积光动态效果,为用户提供了方便。本发明解决技术问题所采用的技术方案如下 一种3D体积光动态实现方法,其中,包括步骤
A、接收用户的操作指令创建带Alpha通道的体积光平面形态图,其中Alpha表示光的透明度信息;
B、采用梯形体积的形状模拟体积光以创建体积光的立体模型;
C、根据创建的体积光平面形态图对体积光立体模型进行纹理贴D、对体积光立体模型每个面的颜色和Alpha都采用顶点部分与纹理部分的乘积来进行材质混合;
E、根据预设的体积光立体模型的位置、大小和旋转角度把体积光立体模型调整到相应的位置;
F、根据预定的操作指令动态修改体积光立体模型的顶点颜色,对体积光的颜色进行动态修改,以及动态修改体积光立体模型顶点Alpha,对体积光的透明度进行动态修改,以对体积光进行动态效果的改变。所述的3D体积光动态实现方法,其中,所述步骤B中的采用梯形体积的形状模拟各种的体积光以创建体积光的立体模型具体包括
B10、根据设定的梯形体积形状的梯形侧面的上底边长、高度、及下底边长参数,创建体积光的一个梯形侧面;B20、然后通过调用OpenGL或Direct3D内的相关函数创建该梯形体积模型。所述的3D体积光动态实现方法,其中,所述步骤B20还包括
B21、将该梯形体积模拟体积光的复杂度设定为N,其中,N > 1,且N为正整数;所述复杂度表示为该梯形体积除了上底面和下底面,还使用多少个纵向的梯形侧面来构建;
B22、根据创建的体积光的梯形体积形状的纵向面数M= (N+l>2,设定体积光的复杂度
N;
B23、将设定的复杂度N的大小作为参数,在调用OpenGL或Direct3D内的相关函数创建该梯形体积模型时以参数形式传入该相关函数中,以创建体积光的立体模型。所述的3D体积光动态实现方法,其中,所述步骤C中的根据创建的体积光平面形态图对体积光立体模型的各个面进行纹理贴图具体包括
C20、先采用步骤A中创建的体积光平面形态图对步骤B中创建的体积光立体模型的上底面进行纹理贴图,而下底面不进行纹理贴C21、对于体积光立体模型的每个纵向的梯形侧面的纹理贴图,均采用该梯形侧面和上底面交线处的点向该梯形侧面延伸的效果进行纹理贴图。所述的3D体积光动态实现方法,其中,所述步骤D中的顶点颜色为体积光立体模型每个面的点的颜色;纹理颜色为体积光平面形态图的点的颜色。 所述的3D体积光动态实现方法,其中,所述步骤E还包括根据预定的操作指令动态修改体积光平面形态图的纹理矩阵,来控制体积光平面形态图片的变换,以使该体积光在渲染时出现动态的变化。一种3D体积光动态实现装置,其中,包括
接收模块,用于接收用户的操作指令创建带Alpha通道的体积光平面形态图,其中 Alpha表示光的透明度信息;
体积光模型创建模块,用于采用梯形体积的形状模拟体积光以创建体积光的立体模
型;
贴图处理模块,用于根据创建的体积光平面形态图对体积光立体模型进行纹理贴图; 绘制材质混合处理模块,用于对体积光立体模型每个面的颜色和Alpha都采用顶点部分与纹理部分的乘积来进行材质混合;
体积光位置调整单元,用于根据预设的体积光立体模型的位置、大小和旋转角度把体积光立体模型调整到相应的位置;
动态处理单元,用于根据预定的操作指令动态修改体积光立体模型的顶点颜色,对体积光的颜色进行动态修改,以及动态修改体积光立体模型顶点Alpha,对体积光的透明度进行动态修改,以对体积光进行动态效果的改变。所述3D体积光动态实现装置,其中,所述体积光模型创建模块包括
梯形侧面创建单元,用于根据设定的梯形体积形状的梯形侧面的上底边长、高度、及下底边长参数,创建体积光的一个梯形侧面;
梯形体积模型创建单元,用于通过调用OpenGL或Direct3D内的相关函数创建该梯形体积模型。所述3D体积光动态实现装置,其中,所述体积光模型创建模块还包括
第一设定单元,用于将该梯形体积模拟体积光的复杂度设定为N,其中,1,且N为正整数;所述复杂度表示为该梯形体积除了上底面和下底面,还使用多少个纵向的梯形侧面来构建;
第二设定单元,用于根据创建的体积光的梯形体积形状的纵向面数M=,设定
体积光的复杂度N;
立体模型创建单元,用于将设定的复杂度N的大小作为参数,在调用OpenGL或 Direct3D内的相关函数创建该梯形体积模型时以参数形式传入该相关函数中,以创建体积光的立体模型。所述3D体积光动态实现装置,其中,其还包括
动态纹理处理模块,用于根据预定的操作指令动态修改体积光平面形态图的纹理矩阵,来控制体积光平面形态图片的变换,以使该体积光在渲染时出现动态的变化。本发明所提供的3D体积光动态实现方法及装置,基于OpenGL等图形程序接口, 采用简单的方式,制作体积光并实现动态效果,提高了体积光的制作效率,并且可以实现3D 体积光动态效果,为用户提供了方便。易于在各种游戏,家具展示系统等地方使用。而且可以容易的切换各种不同的光效果。


图1是本发明3D体积光动态实现方法较佳实施例的流程图。图2是本发明3D体积光动态实现方法较佳实施例的体积光平面形态图的效果示意图。图3是本发明3D体积光动态实现方法较佳实施例的梯形体积模型的侧视示意图。图4是本发明3D体积光动态实现方法较佳实施例的梯形体积使用六个纵向的梯形侧面来构建体积光立体模型的示意图。图5是本发明3D体积光动态实现方法较佳实施例对体积光立体模型进行纹理贴图后的效果示意图。图6是本发明3D体积光动态实现装置较佳实施例的功能原理框图。图7是本发明3D体积光动态实现装置较佳实施例的体积光模型创建模块内部原理框图。
具体实施例方式为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。本发明实施例所提供的一种3D体积光动态实现方法,如图1所示,主要包括以下步骤
步骤S100、接收用户的操作指令创建带Alpha通道的体积光平面形态图,其中Alpha表示光的透明度信息。本发明实施例中,带Alpha通道(阿尔法通道)的体积光的平面形态图描述了体积光在某一个截面的2D形态图,而Alpha通道是一个8位的灰度通道,该通道用256级灰度来记录图像中的透明度信息,定义全透明、半透明和不透明区域,其中黑表示全透明,灰表示半透明,白表示不透明。一般Alpha取值(Tl之间,也就是说,Alpha从(Tl表示从没有光逐渐变为光最强。在创建体积光平面形态图的图像处理中,可通过设定Alpha值,对应设定体积光平面形态图中光的形状(图中Alpha为0的部分可认为是全透明,即没有光;Alpha为1的部分则可认为是不透明,即光最强)。例如,对于圆柱形状的体积光,其对应体积光平面形态图的图像处理,只要把图像中圆以外部分的Alpha都设置为0,而圆内部分的Alpha设置为区间(0,1]中的值即可。本实施例中,创建的带Alpha通道的体积光平面形态图如图2所示,其中,黑色部分表示Alpha为0(即没有光),白色部分表示Alpha在区间(0,1]中(即代表有光区域)。步骤S200、采用梯形体积的形状模拟体积光以创建体积光的立体模型。本实施例中采取梯形体积的形状来模拟体积光。如图3所示,本实施例中,在基于 OpenGL或Direct3D等环境下,可以采用四个相同的梯形侧面来围成该梯形体积,所以,确定一个梯形侧面的参数(梯形的上底边长W1、梯形的高度H、梯形的下底边长W2),即能通过调用OpenGL或Direct3D内的相关函数创建该梯形体积模型,而具体的相关函数调用为本领域公知技术,在此不再赘述。进一步,为了增加该梯形体积模拟体积光的逼真度或者说细腻感,往往需要设定该梯形体积模拟体积光的复杂度,复杂度越高,该梯形体积模拟体积光就越加的真实。一般,该梯形体积模拟体积光的复杂度可设定为N,其中,N > 1,且N为正整数。下面将详细说明该梯形体积模拟体积光的复杂度,本实施例中,复杂度描述了该梯形体积除了上底面和下底面,还使用多少个纵向的梯形侧面来构建。通常,当复杂度为N 时,该纵向的梯形侧面的数量为M,其中,M= (N+1) 。当复杂度N为1时,该梯形体积只需使用四个纵向的梯形侧面来构建以模拟体积光;
当复杂度N为2时,该梯形体积使用六个纵向的梯形侧面来构建以模拟体积光,除了周围的四个纵向的梯形侧面,还有内部的两个十字相交的纵向的梯形侧面,如图4所示;
当复杂度N为3时,该梯形体积使用8个纵向的梯形侧面来构建以模拟该体积光,除了周围的四个纵向的梯形侧面,还有内部的组合成井字形的四个纵向的梯形侧面。同理,当复杂度N继续增大时,该梯形体积将使用更多的纵向的梯形侧面来构建以模拟体积光,也就是说,当组成该梯形体积的纵向的梯形侧面数也越多,该梯形体积模型也就越加复杂,该梯形体积模拟体积光就越加的真实。本步骤中,可以将设定的复杂度N的大小作为参数,在调用OpenGL或Direct3D内的相关函数创建该梯形体积模型时以参数形式传入该相关函数中。步骤S300、根据创建的体积光平面形态图对体积光立体模型进行纹理贴图。本步骤中,先采用步骤SlOO中创建的体积光平面形态图对步骤S200中创建的体积光立体模型的上底面进行纹理贴图,而下底面不进行纹理贴图;对于体积光立体模型的每个纵向的梯形侧面的纹理贴图,均采用该梯形侧面和上底面交线处的点向该梯形侧面延伸的效果进行纹理贴图,也就是说,当体积光立体模型的上底面用上述体积光平面形态图进行纹理贴图后,体积光立体模型的每个纵向的梯形侧面的纹理贴图相当于每个纵向的梯形侧面和该体积光平面形态图交线处的点向该梯形侧面延伸的效果。
例如,当体积光立体模型的复杂度N为1时,体积光立体模型四周有四个纵向的梯形侧面。这时候,四个梯形侧面的纹理贴图就对应了其各自梯形侧面和上述体积光平面形态图交线处的点沿该梯形侧面的延伸效果,其渲染效果如如图5所示。当积光立体模型的复杂度N继续增大时,体积光立体模型除了四周四个纵向的梯形侧面,其内部的新增加的纵向的梯形侧面也会和上述体积光平面形态图有交线。这条交线上的像素点沿该新增的梯形侧面的延伸效果就作为该新增的梯形侧面的纹理贴图。本步骤在实际使用OpenGL时,可使用纹理贴图的UV坐标实现。其中,所述UV坐标也称为纹理坐标或者贴图坐标,用于控制图像如何投射到对象上。在游戏开发过程中UV 坐标定义了图片上每个点的位置的信息,这些点与3D模型是相互联系的,以决定表面纹理贴图的位置,UV坐标就是将图像上每一个点精确对应到模型物体的表面,在点与点之间的间隙位置由软件进行图像光滑插值处理,而此为本领域的公知技术,在此不再赘述。步骤S400、对体积光立体模型每个面的颜色和Alpha都采用顶点部分与纹理部分的乘积来进行材质混合。本步骤中,体积光立体模型每个面的最终颜色都采取顶点颜色与纹理颜色的乘积,而Alpha也采取顶点Alpha与纹理Alpha的乘积。其中,顶点颜色为体积光立体模型每个面的点的颜色;纹理颜色为体积光平面形态图的点的颜色。步骤S500、根据预设的体积光立体模型的位置、大小和旋转角度把体积光立体模型调整到相应的位置。譬如可以通过采用OpenGL语言,可以方便的预设定体积光立体模型的位置、大小和旋转角度信息,从而根据预设的体积光立体模型的位置、大小和旋转角度把体积光立体模型调整到相应的位置。步骤S600、根据预定的操作指令动态修改体积光立体模型的顶点颜色,对体积光的颜色进行动态修改,以及动态修改体积光立体模型顶点Alpha,对体积光的透明度进行动态修改,以对体积光进行动态效果的改变。由于在绘制体积光时,每个面的颜色和Alpha都采取了顶点部分与纹理部分的乘积。所以在程序渲染期间,可以通过根据预定的操作指令动态修改模型顶点部分的颜色和 Alpha,从而控制整体的颜色效果,实现对体积光的颜色进行动态修改。其中,该预定的操作可以为体积光需达到的指定动态效果而预先存储的操作指令,本实施例中根据该预定的操作指令动态修改体积光立体模型的顶点颜色,对体积光的颜色进行动态修改,以及动态修改体积光立体模型顶点Alpha,对体积光的透明度进行动态修改,以对体积光进行动态效果的改变。进一步,由于体积光平面形态图决定了绝大部分的体积光效果,所以本发明实施例还根据预定的操作指令动态修改体积光平面形态图的纹理矩阵,来控制体积光平面形态图片的变换,以使该体积光在渲染时出现动态的变化。由上可见,本发明实施例提供的一种3D体积光动态实现方法,其可以简洁的方式创建体积光,提高了体积光的制作效率,并且可以实现3D体积光动态效果,为用户提供了方便。基于上述实施例,本发明实施例还提供了一种3D体积光动态实现装置,如图6所示,包括接收模块610,用于接收用户的操作指令创建带Alpha通道的体积光平面形态图,其中 Alpha表示光的透明度信息;具体如上述步骤SlOO所述。体积光模型创建模块620,用于采用梯形体积的形状模拟体积光以创建体积光的立体模型;具体如上述步骤S200所述。贴图处理模块630,用于根据创建的体积光平面形态图对体积光立体模型进行纹理贴图;具体如上述步骤S300所述。材质混合处理模块640,用于对体积光立体模型每个面的颜色和Alpha都采用顶点部分与纹理部分的乘积来进行材质混合;具体如上述步骤S400所述。体积光位置调整单元650,用于根据预设的体积光立体模型的位置、大小和旋转角度把体积光立体模型调整到相应的位置;具体如上述步骤S500所述。动态处理单元660,用于根据预定的操作指令动态修改体积光立体模型的顶点颜色,对体积光的颜色进行动态修改,以及动态修改体积光立体模型顶点Alpha,对体积光的透明度进行动态修改,以对体积光进行动态效果的改变;具体如上述步骤S600所述。动态纹理处理模块670,用于根据预定的操作指令动态修改体积光平面形态图的纹理矩阵,来控制体积光平面形态图片的变换,以使该体积光在渲染时出现动态的变化。其中,如图7所示,所述体积光模型创建模块620包括
梯形侧面创建单元621,用于根据设定的梯形体积形状的梯形侧面的上底边长W1、高度H、及下底边长W2参数,创建体积光的一个梯形侧面;
梯形体积模型创建单元622,用于通过调用OpenGL或Direct3D内的相关函数创建该梯形体积模型。第一设定单元623,用于将该梯形体积模拟体积光的复杂度设定为N,其中,N > 1, 且N为正整数;所述复杂度表示为该梯形体积除了上底面和下底面,还使用多少个纵向的梯形侧面来构建;
第二设定单元624,用于根据创建的体积光的梯形体积形状的纵向面数M= (N+l>2,设定体积光的复杂度N;
立体模型创建单元625,用于将设定的复杂度N的大小作为参数,在调用OpenGL或 Direct3D内的相关函数创建该梯形体积模型时以参数形式传入该相关函数中,以创建体积光的立体模型。综上所述,本发明所提供的3D体积光动态实现方法及装置,基于OpenGL等图形程序接口,采用简单的方式,制作体积光并实现动态效果,提高了体积光的制作效率,并且可以实现3D体积光动态效果,为用户提供了方便。易于在各种游戏,家具展示系统等地方使用,而且可以容易的切换各种不同的光效果。应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
权利要求
1.一种3D体积光动态实现方法,其特征在于,包括步骤A、接收用户的操作指令创建带Alpha通道的体积光平面形态图,其中Alpha表示光的透明度信息;B、采用梯形体积的形状模拟体积光以创建体积光的立体模型;C、根据创建的体积光平面形态图对体积光立体模型进行纹理贴图;D、对体积光立体模型每个面的颜色和Alpha都采用顶点部分与纹理部分的乘积来进行材质混合;E、根据预设的体积光立体模型的位置、大小和旋转角度把体积光立体模型调整到相应的位置;F、根据预定的操作指令动态修改体积光立体模型的顶点颜色,对体积光的颜色进行动态修改,以及动态修改体积光立体模型顶点Alpha,对体积光的透明度进行动态修改,以对体积光进行动态效果的改变。
2.根据权利要求1所述的3D体积光动态实现方法,其特征在于,所述步骤B中的采用梯形体积的形状模拟各种的体积光以创建体积光的立体模型具体包括B10、根据设定的梯形体积形状的梯形侧面的上底边长、高度、及下底边长参数,创建体积光的一个梯形侧面;B20、然后通过调用OpenGL或Direct3D内的相关函数创建该梯形体积模型。
3.根据权利要求2所述的3D体积光动态实现方法,其特征在于,所述步骤B20还包括 B21、将该梯形体积模拟体积光的复杂度设定为N,其中,N > 1,且N为正整数;所述复杂度表示为该梯形体积除了上底面和下底面,还使用多少个纵向的梯形侧面来构建;B22、根据创建的体积光的梯形体积形状的纵向面数M= (N+1 >2,设定体积光的复杂度N;B23、将设定的复杂度N的大小作为参数,在调用OpenGL或Direct3D内的相关函数创建该梯形体积模型时以参数形式传入该相关函数中,以创建体积光的立体模型。
4.根据权利要求1所述的3D体积光动态实现方法,其特征在于,所述步骤C中的根据创建的体积光平面形态图对体积光立体模型的各个面进行纹理贴图具体包括C20、先采用步骤A中创建的体积光平面形态图对步骤B中创建的体积光立体模型的上底面进行纹理贴图,而下底面不进行纹理贴图;C21、对于体积光立体模型的每个纵向的梯形侧面的纹理贴图,均采用该梯形侧面和上底面交线处的点向该梯形侧面延伸的效果进行纹理贴图。
5.根据权利要求1所述的3D体积光动态实现方法,其特征在于,所述步骤D中的顶点颜色为体积光立体模型每个面的点的颜色;纹理颜色为体积光平面形态图的点的颜色。
6.根据权利要求1所述的3D体积光动态实现方法,其特征在于,所述步骤E还包括 根据预定的操作指令动态修改体积光平面形态图的纹理矩阵,来控制体积光平面形态图片的变换,以使该体积光在渲染时出现动态的变化。
7.—种3D体积光动态实现装置,其特征在于,包括接收模块,用于接收用户的操作指令创建带Alpha通道的体积光平面形态图,其中 Alpha表示光的透明度信息;体积光模型创建模块,用于采用梯形体积的形状模拟体积光以创建体积光的立体模型;贴图处理模块,用于根据创建的体积光平面形态图对体积光立体模型进行纹理贴图;绘制材质混合处理模块,用于对体积光立体模型每个面的颜色和Alpha都采用顶点部分与纹理部分的乘积来进行材质混合;体积光位置调整单元,用于根据预设的体积光立体模型的位置、大小和旋转角度把体积光立体模型调整到相应的位置;动态处理单元,用于根据预定的操作指令动态修改体积光立体模型的顶点颜色,对体积光的颜色进行动态修改,以及动态修改体积光立体模型顶点Alpha,对体积光的透明度进行动态修改,以对体积光进行动态效果的改变。
8.根据权利要求7所述3D体积光动态实现装置,其特征在于,所述体积光模型创建模块包括梯形侧面创建单元,用于根据设定的梯形体积形状的梯形侧面的上底边长、高度、及下底边长参数,创建体积光的一个梯形侧面;梯形体积模型创建单元,用于通过调用OpenGL或Direct3D内的相关函数创建该梯形体积模型。
9.根据权利要求8所述3D体积光动态实现装置,其特征在于,所述体积光模型创建模块还包括第一设定单元,用于将该梯形体积模拟体积光的复杂度设定为N,其中,N > 1,且N为正整数;所述复杂度表示为该梯形体积除了上底面和下底面,还使用多少个纵向的梯形侧面来构建;第二设定单元,用于根据创建的体积光的梯形体积形状的纵向面数M=,设定体积光的复杂度N;立体模型创建单元,用于将设定的复杂度N的大小作为参数,在调用OpenGL或 Direct3D内的相关函数创建该梯形体积模型时以参数形式传入该相关函数中,以创建体积光的立体模型。
10.根据权利要求7所述3D体积光动态实现装置,其特征在于,其还包括动态纹理处理模块,用于根据预定的操作指令动态修改体积光平面形态图的纹理矩阵,来控制体积光平面形态图片的变换,以使该体积光在渲染时出现动态的变化。
全文摘要
本发明涉及3D图像处理技术领域,公开了一种3D体积光动态实现方法及装置,所述方法包括建带Alpha通道的体积光平面形态图,创建体积光立体模型并贴图,创建体积光绘制的材质混合效果,根据预定的大小及旋转角度把体积光立体模型自动调整到相应的位置,自动动态改变体积光效果。本发明基于OpenGL等图形程序接口,采用简单的方式,制作体积光并实现动态效果,提高了体积光的制作效率,并且可以实现3D体积光动态效果,为用户提供了方便。
文档编号G06T15/50GK102243769SQ20111021068
公开日2011年11月16日 申请日期2011年7月26日 优先权日2011年7月26日
发明者张颖, 李星, 魏文辉 申请人:Tcl集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1