一种实现透明三维物体渲染的方法

文档序号:6423658阅读:183来源:国知局
专利名称:一种实现透明三维物体渲染的方法
技术领域
本发明涉及广电领域的电视节目制作领域,尤其涉及一种实现透明三维物体渲染的方法。
背景技术
随着视频技术越来越快的发展,人们对于视频显示内容的要求也越来越高,尤其是希望视频画面的立体显示效果越来越好。现有技术中对三维图形的渲染的主要采用去除隐藏面的方法。从观察点来看,离观察者稍近的表面遮档了后面的部分。通常的方法是,有一个深度缓冲区来记录已经渲染的像素的深度值,当渲染当前的像素时,判断此像素的深度值是否大于缓冲区中对应的深度值(左手坐标系中),如是表示此像素在已经渲染的像素之前,可以将此像素颜色写入相应的颜色缓冲区,并替换深度缓冲区中的相应值。对于一个三维物体而言,物体的背面永远不会显示,观察者只能看到朝向他的那部分物体。但如果这个物体时透明物体的时候,我们观察者是希望透过物体的正面能看到物体的背面。这个时候就不能单纯的通过深度值来做像素的剔除。发明人在实施本发明的过程中,发现现有技术中不能显示透明的三维物体。

发明内容
为了解决上述现有技术的缺点,本发明的主要目的是提供一种实现透明三维物体渲染的方法,以解决现有技术三维物体不能透明显示的问题。为了达到上述目的,本发明提供了一种实现透明三维物体渲染的方法,具体包括根据三角片的三个顶点值、法向量和观察矩阵判断三角片是正对着观察者还是背对着观察者;计算背对着观察者的顶点的光照颜色和深度值;对背对着观察者的每个三角片进行光栅化,并存储三角片背面颜色值;计算正对着观察者的顶点的光照颜色和深度值;对正对着观察者的每个三角片进行光栅化,并存储三角片正面颜色值;对存储的三角片的背面颜色值与正面颜色值进行混合,完成透明三维物体的渲染。本发明的一种实现透明三维物体渲染的方法通过首先计算正对着与背对着观察者的每个三角片的光照颜色并存储在相应的正面与背面颜色缓冲区内,并将存储的正面颜色值与背面颜色值进行混合的方式可以实现透明三维物体的渲染,并且采用本申请的技术方法可以减少大量系统资源的占用,并能很好的将三维物体透明显示,填补了透明三维物体渲染的空白。

为了更清楚的说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍,显而易见的,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I为本发明的一种实现透明三维物体的渲染方法。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整的描述,显然所描述的实施例仅是本发明的一部分实施例,不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例一方面提供了一种实现透明三维物体渲染的方法,如图I所示,具体为在进行下述计算之前需要先准备两个颜色缓冲区正面颜色缓冲区bufferFront,背面颜色缓冲区bufferBack并初始化。这两个颜色缓冲区分别用来存储正面和背面颜色的渲染结果。准备两个深度缓冲区正面深度缓冲区depthBufferF,背面深度缓冲区depthBufferB,用来在正面和背面分别渲染的时候进行深度判断。步骤SI :根据三角片的三个顶点值、法向量及观察矩阵,计算判断此三角片是正对着观察者还是背对着观察者。步骤S2 :根据步骤SI判断的结果将构成物体的三角片分为两类。步骤S3 :计算背对着观察者的顶点的光照颜色和深度值。因为光照透过正面照在背对着观察者三角片的背面,所以在计算背对着观察者的顶点的光照颜色时候需要将法向量反向。步骤S4:对背对着观察者的每个三角片进行光栅化得到背面的渲染结果,根据步骤SI的信息插值计算三角片中每个像素的颜色值及深度值,将此像素的深度值与深度缓冲区depthBufferB中的值做比较,如果大于depthBufferB中的值,贝U用此深度值替换depthBufferB中的相应值。将这个像素的颜色值与颜色缓冲区bufferBack中的相应颜色值混合,并且将这个像素的颜色值作为前景色而缓冲区中的颜色作为背景色,存储在颜色缓冲区bufferBack中。如果像素的深度值小于cbpthBufferB中的值,将这个像素的颜色值与颜色缓冲区bufferBack中的相应颜色值混合,将这个像素的颜色值作为背景色而缓冲区中的颜色作为前景色,存储在颜色缓冲区bufferBack中。步骤S5 :计算正对着观察者的顶点的光照颜色和深度值。步骤S6 :对正对着观察者的每个三角片进行光栅化得到正面的渲染结果,根据SI信息插值计算三角片中每个像素的颜色值及深度值,将此像素的深度值与深度缓冲区depthBufferF中的值做比较,如果大于depthBufferF中的值,则用此深度值替换depthBufferF中的相应值。将这个像素的颜色值与颜色缓冲区bufferFront中的相应颜色值混合,同时将这个像素的颜色值作为前景色而缓冲区中的颜色作为背景色,存储在颜色缓冲区bufferFront中。如果像素的深度值小于cbpthBufferF中的值,将这个像素的颜色值与颜色缓冲区bufferFront中的相应颜色值混合,同时将这个像素的颜色值作为背景色而缓冲区中的颜色作为前景色,存储在颜色缓冲区bufferFront中。步骤S7 :对存储在bufferBack和bufferFront中的三角片的背面颜色值与正面颜色值进行混合,得到透明三维物体的渲染效果。本发明的一种实现透明三维物体渲染的方法通过首先计算正对着与背对着观察者的每个三角片的光照颜色,并将存储的正面颜色值与背面颜色值进行混合的方式可以实现透明三维物体的渲染,并且采用本申请的技术方法可以,并能很好的将三维物体完全显示,填补了透明三维物体渲染的空白。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过软件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是⑶-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。 以上所述,仅为本发明的一个最佳具体实施例,但本发明的特征并不局限于此,任何熟悉该项技术的人在本发明领域内,可轻易想到的变化或修饰,都应涵盖在以下本发明的申请专利范围中。
权利要求
1.一种实现透明三维物体渲染的方法,其特征在于,包括 根据三角片的三个顶点值、法向量和观察矩阵判断三角片是正对着观察者还是背对着观察者; 计算背对着观察者的顶点的光照颜色和深度值; 对背对着观察者的每个三角片进行光栅化,并存储三角片背面颜色值; 计算正对着观察者的顶点的光照颜色和深度值; 对正对着观察者的每个三角片进行光栅化,并存储三角片正面颜色值; 对存储的三角片的背面颜色值与正面颜色值进行混合,完成透明三维物体的渲染。
2.如权利要求I所述的实现透明三维物体渲染的方法,其特征在于,在进行计算之前需要预先准备两个颜色缓冲区,正面颜色缓冲区bufferFront和背面颜色缓冲区bufferBack并初始化;准备两个深度缓冲区,正面深度缓冲区depthBufferF和背面深度缓冲区 depthBufferB。
3.如权利要求I所述的实现透明三维物体渲染的方法,其特征在于,所述bufferFront与bufferBack分别用于存储正面颜色和背面颜色的渲染结果。
4.如权利要求I所述的实现透明三维物体渲染的方法,其特征在于,所述depthBufferF和epthBufferB分别用于在渲染正面和背面三维物体时候进行深度判断。
5.如权利要求I所述的实现透明三维物体渲染的方法,其特征在于,所述计算背对着观察者的顶点的光照颜色时候将法向量反向。
6.如权利要求I所述的实现透明三维物体渲染的方法,其特征在于,所述对背对着观察者的每个三角片进行光栅化具体为 计算三角片中每个像素的颜色值及深度值并将所述像素的深度值与深度缓冲区depthBufferB中的值做比较; 如果所述像素的深度值大于CbpthBufTerB中的值,则用所述像素的深度值替换depthBufferB中的相应值并将这个像素的颜色值与颜色缓冲区bufferBack中的相应颜色值混合,同时将这个像素的颜色值作为前景色而缓冲区中的颜色作为背景色,存储在颜色缓冲区bufferBack中; 如果所述像素的深度值小于CbpthBufTerB中的值,将这个像素的颜色值与颜色缓冲区bufferBack中的相应颜色值混合,将这个像素的颜色值作为背景色而缓冲区中的颜色作为前景色,存储在颜色缓冲区bufferBack中。
7.如权利要求I所述的实现透明三维物体渲染的方法,其特征在于,所述对正对着观察者的每个三角片进行光栅化具体为 计算三角片中每个像素的颜色值及深度值,将所述像素的深度值与深度缓冲区depthBufferF中的值做比较,如果大于depthBufferF中的值,贝U用所述像素的深度值替换depthBufferF中的相应值并将所述像素的颜色值与颜色缓冲区bufferFront中的相应颜色值混合,同时将所述像素的颜色值作为前景色而缓冲区中的颜色作为背景色,存储在颜色缓冲区bufferFront中; 如果所述像素的深度值小于CbpthBufTerF中的值,将所述像素的颜色值与颜色缓冲区bufferFront中的相应颜色值混合,同时将这个像素的颜色值作为背景色而缓冲区中的颜色作为前景色,存储在颜色缓冲区bufferFront中。
全文摘要
本发明公开了一种实现透明三维物体渲染的方法,包括根据三角片的三个顶点值、法向量和观察矩阵判断三角片是正对着观察者还是背对着观察者;计算背对着观察者的顶点的光照颜色和深度值;对背对着观察者的每个三角片进行光栅化,并存储三角片背面颜色值;计算正对着观察者的顶点的光照颜色和深度值;对正对着观察者的每个三角片进行光栅化,并存储三角片正面颜色值;对存储的三角片的背面颜色值与正面颜色值进行混合,完成透明三维物体的渲染。采用本申请的技术方法能很好的将三维物体透明显示,填补了透明三维物体渲染的空白。
文档编号G06T15/20GK102737404SQ20111011636
公开日2012年10月17日 申请日期2011年5月6日 优先权日2011年5月6日
发明者张君琦, 李涛, 蔡欢, 郑培枫 申请人:新奥特(北京)视频技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1