本发明专利技术公开了一种实现透明三维物体渲染的方法,包括:根据三角片的三个顶点值、法向量和观察矩阵判断三角片是正对着观察者还是背对着观察者;计算背对着观察者的顶点的光照颜色和深度值;对背对着观察者的每个三角片进行光栅化,并存储三角片背面颜色值;计算正对着观察者的顶点的光照颜色和深度值;对正对着观察者的每个三角片进行光栅化,并存储三角片正面颜色值;对存储的三角片的背面颜色值与正面颜色值进行混合,完成透明三维物体的渲染。采用本申请的技术方法能很好的将三维物体透明显示,填补了透明三维物体渲染的空白。
【技术实现步骤摘要】
一种实现透明三维物体渲染的方法
本专利技术涉及广电领域的电视节目制作领域,尤其涉及一种实现透明三维物体渲染的方法。
技术介绍
随着视频技术越来越快的发展,人们对于视频显示内容的要求也越来越高,尤其是希望视频画面的立体显示效果越来越好。现有技术中对三维图形的渲染的主要采用去除隐藏面的方法。从观察点来看,离观察者稍近的表面遮档了后面的部分。通常的方法是,有一个深度缓冲区来记录已经渲染的像素的深度值,当渲染当前的像素时,判断此像素的深度值是否大于缓冲区中对应的深度值(左手坐标系中),如是表示此像素在已经渲染的像素之前,可以将此像素颜色写入相应的颜色缓冲区,并替换深度缓冲区中的相应值。对于一个三维物体而言,物体的背面永远不会显示,观察者只能看到朝向他的那部分物体。但如果这个物体时透明物体的时候,我们观察者是希望透过物体的正面能看到物体的背面。这个时候就不能单纯的通过深度值来做像素的剔除。专利技术人在实施本专利技术的过程中,发现现有技术中不能显示透明的三维物体。
技术实现思路
为了解决上述现有技术的缺点,本专利技术的主要目的是提供一种实现透明三维物体渲染的方法,以解决现有技术三维物体不能透明显示的问题。为了达到上述目的,本专利技术提供了一种实现透明三维物体渲染的方法,具体包括:根据三角片的三个顶点值、法向量和观察矩阵判断三角片是正对着观察者还是背对着观察者;计算背对着观察者的顶点的光照颜色和深度值;对背对着观察者的每个三角片进行光栅化,并存储三角片背面颜色值;计算正对着观察者的顶点的光照颜色和深度值;对正对着观察者的每个三角片进行光栅化,并存储三角片正面颜色值;对存储的三角片的背面颜色值与正面颜色值进行混合,完成透明三维物体的渲染。本专利技术的一种实现透明三维物体渲染的方法通过首先计算正对着与背对着观察者的每个三角片的光照颜色并存储在相应的正面与背面颜色缓冲区内,并将存储的正面颜色值与背面颜色值进行混合的方式可以实现透明三维物体的渲染,并且采用本申请的技术方法可以减少大量系统资源的占用,并能很好的将三维物体透明显示,填补了透明三维物体渲染的空白。附图说明为了更清楚的说明本专利技术实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍,显而易见的,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术的一种实现透明三维物体的渲染方法。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整的描述,显然所描述的实施例仅是本专利技术的一部分实施例,不是全部的实施例,基于本专利技术中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术实施例一方面提供了一种实现透明三维物体渲染的方法,如图1所示,具体为:在进行下述计算之前需要先准备两个颜色缓冲区正面颜色缓冲区bufferFront,背面颜色缓冲区bufferBack并初始化。这两个颜色缓冲区分别用来存储正面和背面颜色的渲染结果。准备两个深度缓冲区正面深度缓冲区depthBufferF,背面深度缓冲区depthBufferB,用来在正面和背面分别渲染的时候进行深度判断。步骤S1:根据三角片的三个顶点值、法向量及观察矩阵,计算判断此三角片是正对着观察者还是背对着观察者。步骤S2:根据步骤S1判断的结果将构成物体的三角片分为两类。步骤S3:计算背对着观察者的顶点的光照颜色和深度值。因为光照透过正面照在背对着观察者三角片的背面,所以在计算背对着观察者的顶点的光照颜色时候需要将法向量反向。步骤S4:对背对着观察者的每个三角片进行光栅化得到背面的渲染结果,根据步骤S1的信息插值计算三角片中每个像素的颜色值及深度值,将此像素的深度值与深度缓冲区depthBufferB中的值做比较,如果大于depthBufferB中的值,则用此深度值替换depthBufferB中的相应值。将这个像素的颜色值与颜色缓冲区bufferBack中的相应颜色值混合,并且将这个像素的颜色值作为前景色而缓冲区中的颜色作为背景色,存储在颜色缓冲区bufferBack中。如果像素的深度值小于depthBufferB中的值,将这个像素的颜色值与颜色缓冲区bufferBack中的相应颜色值混合,将这个像素的颜色值作为背景色而缓冲区中的颜色作为前景色,存储在颜色缓冲区bufferBack中。步骤S5:计算正对着观察者的顶点的光照颜色和深度值。步骤S6:对正对着观察者的每个三角片进行光栅化得到正面的渲染结果,根据S1信息插值计算三角片中每个像素的颜色值及深度值,将此像素的深度值与深度缓冲区depthBufferF中的值做比较,如果大于depthBufferF中的值,则用此深度值替换depthBufferF中的相应值。将这个像素的颜色值与颜色缓冲区bufferFront中的相应颜色值混合,同时将这个像素的颜色值作为前景色而缓冲区中的颜色作为背景色,存储在颜色缓冲区bufferFront中。如果像素的深度值小于depthBufferF中的值,将这个像素的颜色值与颜色缓冲区bufferFront中的相应颜色值混合,同时将这个像素的颜色值作为背景色而缓冲区中的颜色作为前景色,存储在颜色缓冲区bufferFront中。步骤S7:对存储在bufferBack和bufferFront中的三角片的背面颜色值与正面颜色值进行混合,得到透明三维物体的渲染效果。本专利技术的一种实现透明三维物体渲染的方法通过首先计算正对着与背对着观察者的每个三角片的光照颜色,并将存储的正面颜色值与背面颜色值进行混合的方式可以实现透明三维物体的渲染,并且采用本申请的技术方法可以,并能很好的将三维物体完全显示,填补了透明三维物体渲染的空白。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本专利技术可以通过软件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本专利技术的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本专利技术各个实施例所述的方法。以上所述,仅为本专利技术的一个最佳具体实施例,但本专利技术的特征并不局限于此,任何熟悉该项技术的人在本专利
内,可轻易想到的变化或修饰,都应涵盖在以下本专利技术的申请专利范围中。本文档来自技高网...
【技术保护点】
一种实现透明三维物体渲染的方法,其特征在于,包括:根据三角片的三个顶点值、法向量和观察矩阵判断三角片是正对着观察者还是背对着观察者;计算背对着观察者的顶点的光照颜色和深度值;对背对着观察者的每个三角片进行光栅化,并存储三角片背面颜色值;计算正对着观察者的顶点的光照颜色和深度值;对正对着观察者的每个三角片进行光栅化,并存储三角片正面颜色值;对存储的三角片的背面颜色值与正面颜色值进行混合,完成透明三维物体的渲染。
【技术特征摘要】
1.一种实现透明三维物体渲染的方法,其特征在于,包括:根据三角片的三个顶点值、法向量和观察矩阵判断三角片是正对着观察者还是背对着观察者;计算背对着观察者的顶点的光照颜色和深度值;对背对着观察者的每个三角片进行光栅化,并存储三角片背面颜色值;计算正对着观察者的顶点的光照颜色和深度值;对正对着观察者的每个三角片进行光栅化,并存储三角片正面颜色值;对存储的三角片的背面颜色值与正面颜色值进行混合,完成透明三维物体的渲染;所述对背对着观察者的每个三角片进行光栅化具体为:计算三角片中每个像素的颜色值及深度值并将所述像素的深度值与背面深度缓冲区depthBufferB中的值做比较;如果所述像素的深度值大于depthBufferB中的值,则用所述像素的深度值替换depthBufferB中的相应值并将这个像素的颜色值与背面颜色缓冲区bufferBack中的相应颜色值混合,同时将这个像素的颜色值作为前景色而缓冲区中的颜色作为背景色,存储在背面颜色缓冲区bufferBack中;如果所述像素的深度值小于depthBufferB中的值,将这个像素的颜色值与背面颜色缓冲区bufferBack中的相应颜色值混合,将这个像素的颜色值作为背景色而缓冲区中的颜色作为前景色,存储在背面颜色缓冲区bufferBack中。2.如权利要求1所述的实现透明三维物体渲染的方法,其特征在于,在进行计算之前需要预先准备两个颜色缓冲区,正面颜色缓冲区bufferFront和背面颜色缓冲区bufferBack并初...
【专利技术属性】
技术研发人员:蔡欢,张君琦,郑培枫,李涛,
申请(专利权)人:新奥特北京视频技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。