CN101071511A - 阴影绘制方法及装置 - Google Patents
阴影绘制方法及装置 Download PDFInfo
- Publication number
- CN101071511A CN101071511A CN 200710112453 CN200710112453A CN101071511A CN 101071511 A CN101071511 A CN 101071511A CN 200710112453 CN200710112453 CN 200710112453 CN 200710112453 A CN200710112453 A CN 200710112453A CN 101071511 A CN101071511 A CN 101071511A
- Authority
- CN
- China
- Prior art keywords
- graphical pointv
- offset point
- shade
- light source
- color
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Image Generation (AREA)
Abstract
本发明公开了一种阴影绘制方法,包括:对光源进行偏移,得到光源的第一偏移点和第二偏移点;以第一偏移点及第二偏移点为光源位置,获得场景的第一阴影深度贴图及第二阴影深度贴图;计算第一绘制点到第一偏移点的距离值;从第一阴影深度贴图中,获取第一绘制点对应的深度值;若判断得到深度值大于或等于绘制点到第一偏移点的距离值,则计算第一绘制点到第二偏移点的距离值;否则绘制所述绘制点为第一颜色值;从第二阴影深度贴图中,获取绘制点对应的深度值;若判断得到深度值小于第一绘制点到第二偏移点的距离值,则绘制所述绘制点为第二颜色值。本发明还公开了一种阴影绘制装置,实现模拟真实光照场景,绘制阴影区。
Description
技术领域
本发明涉及图像处理领域,尤其涉及一种阴影绘制方法及装置。
背景技术
在真实的光照场景中,如果光在传播过程中遇到不透明的物体,就无法继续前进,而在该物体的背后形成阴影,且阴影的形状与物体的轮廓一样。
在使用计算机绘制2维或者3维场景时,为了增加场景的立体感和层次感,丰富场景的表现效果,需要模拟真实的光照效果,绘制出2维或者3维场景中的阴影。
现有的阴影绘制方法包括:阴影图法(Shadow Maps)法等。
采用Shadow Maps方法绘制阴影的过程如下:
第一步:以光源位置为视点,获得场景的阴影深度贴图,并且阴影深度贴图也可以称为阴影轮廓图;
众所周知,计算机绘制的场景由许许多多的象素点构成的,因此,要想绘制场景的阴影,就需要知道构成该场景的哪些象素点会阻挡光线,所以,需要以光源位置为视点,去看构成场景的象素点,因为从光源位置处可以看到的象素点肯定会阻挡光线,计算这些阻挡光线的象素点到光源的距离值,并将象素点的坐标与其到光源的距离值对应保存在Z缓冲器中,该距离值可以被称为象素点的深度值,整个Z缓冲器中保存的深度值被称为阴影深度贴图。
第二步:计算绘制点到光源的距离值;
其中,绘制点为构成该场景的任意一个象素点,绘制点可能是在阴影中也可能不在阴影中。
第三步:将绘制点投影到光源空间,获得一个坐标,根据该坐标,从阴影深度贴图中获取上述坐标对应的深度值,并将该深度值与绘制点到光源的距离值进行比较,如果前者小于后者,则说明该绘制点在阴影中,将该绘制点绘制为黑色,如果前者大于或者等于后者,则说明该绘制点不在阴影中,将该绘制点绘制为白色。
以下举例说明Shadow Maps的实现过程。
图1所示为一个简单的场景,包括,光源,物体A,物体B;其中,ShadowMaps方法中光源为理想的点光源;
从光源位置可以看到物体A的象素点C,以及物体B的象素点D,计算得到象素点C到光源的距离值,即象素点C的深度值;计算象素点D到光源的距离值,即象素点D的深度值;将象素点C的坐标与其深度值对应保存在Z缓冲器中,将象素点D的坐标与其深度值对应保存在Z缓冲器中;如果绘制点为象素点E,计算绘制点E到光源的距离值;将绘制点E投影到光源空间,得到一个坐标,假设该坐标对应的深度值为象素点C的深度值,从图1中可以直观看出,绘制点E到光源的距离大于象素点C的深度值,说明绘制点E在阴影中,将绘制点E的颜色绘制为黑色;如果绘制点为象素点D,计算绘制点D到光源的距离值,将绘制点D投影到光源空间,得到的坐标值对应的深度值是其自身到光源的距离值,两者相等,从图1中也可以直观的看出,绘制点D不在阴影中,将绘制点D绘制为白色。
但是,真实的光源是有大小尺寸的物体,因此,光源照射到物体后,产生的阴影区包括本影区和半影区,所谓本影区就是光线完全被阻挡的区域,半影区是光线只被阻挡了一部分的区域。
Shadow Maps方法在绘制阴影时,将光源模拟成一个理想的点光源,一个理想的点光源产生的阴影不会有本影区与半影区的区别。因此,采用ShadowMaps方法产生阴影并不能有效的绘制出真实光照场景中的阴影图。
此外,采用Shadow Maps方法得到的阴影图是一张象素图,由于分辨率有限,使得阴影边缘会产生方块及锯齿感。
发明内容
本发明要解决的技术问题是提供一种阴影绘制方法及装置,以实现模拟真实光照效果,绘制场景阴影。
为解决上述技术问题,本发明的目的是通过以下技术方案实现的:
一种阴影绘制方法,包括:
对光源进行偏移,得到所述光源的第一偏移点和第二偏移点;
以所述第一偏移点及所述第二偏移点为光源位置,获得场景的第一阴影深度贴图及第二阴影深度贴图;
计算第一绘制点到所述第一偏移点的距离值;
从第一阴影深度贴图中,获取所述第一绘制点对应的深度值;
若判断得到所述深度值大于或等于所述绘制点到所述第一偏移点的距离值,则计算所述第一绘制点到所述第二偏移点的距离值;否则绘制所述绘制点为第一颜色;
从第二阴影深度贴图中,获取所述绘制点对应的深度值;若判断得到所述深度值小于所述第一绘制点到所述第二偏移点的距离值,则绘制所述绘制点为第二颜色;否则绘制所述绘制点为第三颜色。
优选的,对光源进行偏移,得到所述光源的第一偏移点和第二偏移点具体为:
对光源的坐标进行偏移,获得所述第一偏移点;
对光源的坐标进行偏移,使得第二偏移点位于所述第一偏移点到产生阴影物体的边缘光线形成的区域,且所述第一偏移点到所述产生阴影物体的距离大于所述光源的第二偏移点到所述产生阴影物体的距离。
优选的,所述获得第二颜色的方法具体包括:
获取预置的第一颜色;
获取第二绘制点,所述第二绘制点为以所述第二偏移点为光源位置,所述产生阴影物体的投影点;
获取第三绘制点,所述第三绘制点为以所述第一偏移点为光源位置,所述产生阴影物体的投影点;
其中,所述第二绘制点位于所述第一绘制点的右侧;
获取第一绘制点到第二绘制点的第一距离,以及第二绘制点与第三绘制点第二距离;
用所述第一颜色乘以所述第一距离与所述第二距离的比值作为所述第二颜色。
优选的,获取所述绘制点对应的深度值具体为:
获取所述绘制点在光源空间中的坐标,从第一阴影深度贴图中获取所述坐标对应的深度值。
一种阴影绘制方法,包括:
对光源进行偏移,得到所述光源的第一偏移点和第二偏移点;
以所述第一偏移点及所述第二偏移点为光源位置,获得场景的第一阴影深度贴图及第二阴影深度贴图;
计算第一绘制点到所述第一偏移点的距离值;
从第一阴影深度贴图中,获取所述第一绘制点对应的深度值;
若判断得到所述深度值小于所述绘制点到所述第一偏移点的距离值,则计算所述第一绘制点到所述第二偏移点的距离值;否则绘制所述绘制点为第一颜色;
从第二阴影深度贴图中,获取所述绘制点对应的深度值;
若判断得到所述深度值小于所述第一绘制点到所述第二偏移点的距离值,则绘制所述绘制点为第二颜色;否则绘制所述绘制点为第三颜色值。
优选的,对光源进行偏移,得到所述光源的第一偏移点和第二偏移点具体为:
对光源的坐标进行偏移,获得所述第二偏移点;
对光源的坐标进行偏移,使得第一偏移点位于所述第二偏移点到产生阴影物体的边缘光线形成的区域,且所述第二偏移点到物体的距离大于所述光源的第一偏移点到所述物体的距离。
优选的,所述获得第三颜色的方法具体包括:
获取预置的第二颜色;
获取第二绘制点,所述第二绘制点为以所述第一偏移点为光源位置,所述产生阴影物体的投影点;
获取第三绘制点,所述第三绘制点为以所述第二偏移点为光源位置,所述产生阴影物体的投影点;
其中,所述第二绘制点位于所述第一绘制点的右侧;
获取第一绘制点到第二绘制点的第一距离,以及第二绘制点与第三绘制点第二距离;
用所述第二颜色乘以所述第一距离与所述第二距离的比值作为所述第三颜色。
一种阴影绘制装置,包括:偏移点获取单元,阴影深度贴图获取单元,第一距离值计算单元,第一阴影绘制单元,第二距离值计算单元,第二阴影绘制单元;
所述偏移点获取单元,用于对光源进行偏移,得到所述光源的第一偏移点和第二偏移点;
所述阴影深度贴图获取单元,用于以所述第一偏移点及所述第二偏移点为光源位置,获得场景的第一阴影深度贴图及第二阴影深度贴图;
所述第一距离值计算单元,用于计算第一绘制点到所述第一偏移点的距离值;
所述第一阴影绘制单元,用于从第一阴影深度贴图中,获取所述第一绘制点对应的深度值;若判断得到所述深度值大于或等于所述绘制点到所述第一偏移点的距离值,则触发所述第二距离值计算单元;否则绘制所述绘制点为第一颜色;
所述第二距离值计算单元,用于计算所述第一绘制点到所述第二偏移点的距离值;
所述第二阴影绘制单元,用于从第二阴影深度贴图中,获取所述绘制点对应的深度值;若判断得到所述深度值小于所述第一绘制点到所述第二偏移点的距离值,则绘制所述绘制点为第二颜色;否则绘制所述绘制点为第三颜色。
优选的,上述装置进一步包括:第二颜色获取单元;
所述第二颜色获取单元包括:
第一颜色获取单元,用于获取预置的第一颜色;
绘制点获取单元,用于获取第二绘制点,所述第二绘制点为以所述第二偏移点为光源位置,所述产生阴影物体的投影点;获取第三绘制点,所述第三绘制点为以所述第一偏移点为光源位置,所述产生阴影物体的投影点;其中,所述第二绘制点位于所述第一绘制点的右侧;
距离获取单元,用于获取第一绘制点到第二绘制点的第一距离,以及第二绘制点与第三绘制点第二距离;
颜色获取单元,获取所述第一颜色乘以所述第一距离与所述第二距离的比值作为所述第二颜色。
一种阴影绘制装置,包括:
偏移点获取单元,阴影深度贴图获取单元,第一距离值计算单元,第一阴影绘制单元,第二距离值计算单元,第二阴影绘制单元;
所述偏移点获取单元,用于对光源进行偏移,得到所述光源的第一偏移点和第二偏移点;
所述阴影深度贴图获取单元,用于以所述第一偏移点及所述第二偏移点为光源位置,获得场景的第一阴影深度贴图及第二阴影深度贴图;
所述第一距离值计算单元,用于计算第一绘制点到所述第一偏移点的距离值;
所述第一阴影绘制单元,用于从第一阴影深度贴图中,获取所述第一绘制点对应的深度值;若判断得到所述深度值小于所述绘制点到所述第一偏移点的距离值,则触发所述第二距离值计算单元;否则绘制所述绘制点为第一颜色;
所述第二距离值计算单元,用于计算所述第一绘制点到所述第二偏移点的距离值;
所述第二阴影绘制单元,用于从第二阴影深度贴图中,获取所述绘制点对应的深度值;若判断得到所述深度值小于所述第一绘制点到所述第二偏移点的距离值,则绘制所述绘制点为第二颜色;否则绘制所述绘制点为第三颜色。
优选的,上述装置进一步包括:第三颜色获取单元;
所述第三颜色获取单元包括:
第二颜色获取单元,用于获取预置的第二颜色;
绘制点获取单元,用于获取第二绘制点,所述第二绘制点为以所述第一偏移点为光源位置,所述产生阴影物体的投影点;获取第三绘制点,所述第三绘制点为以所述第二偏移点为光源位置,所述产生阴影物体的投影点;其中,所述第二绘制点位于所述第一绘制点的右侧;
距离获取单元,用于获取第一绘制点到第二绘制点的第一距离,以及第二绘制点与第三绘制点第二距离;
颜色获取单元,用于获取所述第二颜色乘以所述第一距离与所述第二距离的比值作为所述第三颜色。
以上技术方案可以看出,本发明实施例中,对光源进行偏移,得到光源的两个偏移点,并且分别以两个偏移点为光源所在点,获得两张阴影深度贴图,以这两张图作为绘制阴影的基准,给绘制点绘制不同的阴影颜色,实现了模拟真实的光照场景,绘制本影区及半影区。
附图说明
图1Shadow Maps方法的场景示意图;
图2本发明实施例使用的场景示意图;
图3本发明第一实施例提供的阴影绘制方法流程图;
图4本发明实施例提供的动态计算半影区颜色的方法流程图;
图5本发明实施例提供的获取偏移点的示意图;
图6本发明第二实施例提供的阴影绘制装置组成示意图;
图7本发明第三实施例提供的阴影绘制装置组成示意图。
具体实施方式
本发明实施例提供了一种阴影绘制方法及装置,以实现模拟真实的光照效果,绘制场景的阴影图。
以下结合附图,并举具体实施例对本发明实施例进行详细描述。
真实的光源是有大小尺寸的物体,图2所示为本发明实施例使用的场景,包括:光源偏移点I,光源偏移点J,物体CD(产生阴影的物体),物体XY。
其中,光源AB为需要模拟的具有一定大小的真实光源,在本发明实施例的光照场景中并不包括光源AB。
在不考虑光衍射的情况下,光源AB的左点A照射出的光线到达物体CD时,物体CD的左点C在物体XY上的投影点为F,物体CD的右点D在物体XY上的投影点为H;光源AB的右点B照射出的光线到达物体CD时,物体CD的左点C在物体XY上的投影点为E,物体CD的右点D在物体XY上的投影点为G。其中,区域EF和区域GH是物体CD的半影区域,区域FG是物体CD的本影区域。
现有的shadow maps阴影绘制方法中,用一个理想点光源模拟光源AB,从背景技术分析可知,仅用一个理想点光源并不能足以模拟真实的光源,如图2所示,在本发明实施例中采用至少两个点光源用于模拟光源AB,这两个点光源位于如图所示I点和J点处。
以下具体描述,本发明实施例提供的方法绘制图2所示场景阴影的过程,图3所示为本发明实施例提供的方法流程图,包括:
步骤301:通过对光源进行偏移,得到光源的偏移点I和J,其中,偏移点I和偏移点J不可以重合;
因为,计算机绘图时,仅默认有一个光源存在,且该光源为一个位置已知的点光源,所以,步骤301中的光源为计算机默认的点光源,为了模拟真实的光源AB,本发明实施例,对计算机默认的光源进行了偏移,也就是对光源的坐标进行偏移,得到两个该光源的偏移点,并认为在光源偏移点I和J处存在两个点光源,用这两个点光源模拟一个具有一定大小的光源AB。
从图2可以看出,如果偏移点I和J处于图2所示的位置,那么,假设偏移点I和J处有两个点光源,则这两个点光源可以真实的模拟光源AB所产生的阴影效果,此时,偏移点I和J到物体CD的距离可计算得到:
做直线AD的平行线BO,BO与CD的延长线交于O点,根据三角形的相似原理,可知三角形ICD与三角形BCO相似,则可计算得到偏移点I到物体CD的距离IM等于(AK*CD)/(CD+AB),其中,AK为计算机默认的光源到物体CD的距离;做直线JD的平行线CM,CM与AB的延长线交于M点,可知三角形MCA与三角形JCD相似,则可计算得到偏移点J到物体CD的距离JL等于AK*CD/(CD-AB)。
具体实现时,步骤301中的光源作为计算机默认的点光源,其坐标是已知的,光源到物体AB的距离AK,物体AB的长度以及物体CD的长度均为已知量,所以,偏移点I和J的位置可以由上述公式反推得到。
步骤302:以偏移点J为光源所在点,且以该点为视点,用Shadow Maps方法获得场景的阴影深度贴图DMAP_J;
Shadow Maps方法中,以光源为视点,获得阴影深度贴图过程,实际是在计算从光源看该场景时,可以看到的象素点到光源的距离,在本发明实施例中,认为光源偏移点I和J处有两个点光源,这两个点光源模拟一个真实的光源AB,因此,上述步骤中以偏移点J为视点,计算的是从偏移点J看该场景时,可以看到的象素点到偏移点J的距离值,该距离值可以被称为象素点的深度值,将象素点的坐标与其深度值对应保存在Z缓冲器中,整个Z缓冲器中保存的数据被称为阴影深度贴图。
从图2可以直观的看出,如果点光源在J点处时,物体CD的阴影区为本影区;
步骤303:以偏移点I为光源所在点,且以该点为视点,用Shadow Maps方法获得场景的阴影深度贴图DMAP_I;
从图2可以直观的看出,如果点光源在I点处时,物体CD的阴影区即包括本影区和半影区;
步骤304:将绘制点P投影到光源空间,得到一个坐标;
步骤305:计算绘制点P到偏移点J的距离;
步骤306:根据该坐标,从DMAP_J中获取该坐标对应的深度值,若该值小于绘制点P到偏移点J的距离,则说明绘制点P位于光源在偏移点J时产生的阴影区中,如图2所示,光源在偏移点J时产生的是本影区,进入步骤307,若该值大于或等于绘制点P到偏移点J的距离,进入步骤308;
步骤307:将绘制点P绘制为预先设置的阴影深度贴图DMAP_J对应的颜色;
其中,阴影深度贴图DMAP_J对应的颜色为本影区的颜色。
步骤308:计算绘制点P到偏移点I的距离值;
步骤309:根据步骤304中得到的绘制点P投影到光源空间中得到的坐标,从DMAP_I中获取该坐标对应的深度值,若该值小于绘制点P到偏移点I的距离,则说明绘制点P位于光源在偏移点I时产生的阴影区中,如图2所示,光源在偏移点I时产生的阴影区包括本影及半影区,进入步骤310,若该值大于或等于绘制点P到偏移点I的距离,则说明绘制点P不在阴影中,进入步骤311;
虽然,光源在偏移点I时产生的阴影区包括本影及半影区,但因为预先判断了绘制点P是否位于光源在偏移点J时产生的阴影区中,如果否,则说明绘制点P不在本影区中,那么,步骤309中若判断得到绘制点位于光源在偏移点I时产生的阴影区,则该阴影区为半影区。
步骤310:将绘制点P处绘制为预先设置的阴影深度贴图DMAP_I对应的颜色;
由上述分析可知,步骤310中阴影深度贴图DMAP_I对应的颜色应该为半影区的颜色。
步骤311:将绘制点P处绘制为非阴影区颜色。
在上述实施例中,阴影深度贴图DMAP_I对应的颜色可以预先设置,但是,在实际光照场景中,半影区的颜色为动态变化的,所以,为了更好的模拟实际的光照场景,在本发明其他实施例中,半影区的颜色可以通过本影区的颜色动态获得,并且实现半影区颜色渐变的效果。
假设绘制点P处在半影区GH中,动态获得绘制点P的颜色值的方法如图4所示,包括:
步骤401:获得阴影深度贴图DMAP_J对应的颜色,即本影区的颜色;
步骤402:计算物体CD的边缘投影点G到物体CD的边缘投影点H的距离GH,且边缘投影点H和边缘投影点G之间的区域为物体CD的半影区;
步骤403:计算绘制点P到边缘投影点H的距离PH;
从图2可以看出,三角形JFG与三角形JCD相似,所以JG∶(JL+CN)=JD∶JL=(JG-JD)∶(JL+CD-JL)=DG∶CN,得到DG∶DJ=CN∶JL,所以DG的长度为DJ*CN/JL,DH的长度等于DA*CD/AK,G点的位置等于D点位置向右偏移DJ*CN/JL,H点的位置等于D点的位置向右偏移DA*CD/AK,确定了G点和H点的位置,那么绘制点P到G点和H点的距离也就相应的可以计算得到,其中,N点是任意选择的在本影区中的一个点。
步骤404:通过本影区颜色*PH/GH计算得到绘制点P的颜色;
本发明第二实施例提供的阴影绘制方法中,也可以先判断绘制点是否位于光源在偏移点I时产生的阴影区中,如果否,则说明该绘制点不在阴影区,如果是,则再判断绘制点是否位于光源点在偏移点J产生的阴影区中,如果是,则说明该绘制点位于本影区,如果否,则说明该绘制点位于半影区。上述具体过程与本发明第一实施例提供的方法相同,在此不再赘述。
图2所示偏移点I及偏移点J所处的位置为本发明最优的实施例,在本发明其他实施例中,偏移点I和J并不需要在图2所示位置,偏移点I和J的位置可以通过对光源的偏移任意获得,但是,假设位于这两个偏移点的点光源所产生的阴影必须符合图5所示的情况,即光源在某一个偏移点产生的阴影必须包含光源在另外一个偏移点产生的阴影,在这种情况下,需要先通过对光源的偏移得到一个光源偏移点,然后,再从这个偏移点产生的到产生阴影物体的两条边缘光线所形成的区域内,获得另一个光源偏移点。如图5所示,先获得偏移点I,再从偏移点I产生IA及IB两条边缘光线所形成的区域内,任意获得一个J点。
上述方法实施例中,对场景中所有绘制点均采用如步骤301至步骤311所述绘制的绘制点P阴影的方法,且在一个场景中,所有绘制点的绘制是并行进行处理的。
以上是本发明实施例提供的阴影绘制方法,从上述描述过程可知,该方法实现了模拟真实光照场景,绘制物体的半影区及本影区。
本发明第二实施例还提供了一种阴影绘制装置,如图6所示,包括:
偏移点获取单元601,用于对光源进行偏移,得到所述光源的第一偏移点和第二偏移点;
阴影深度贴图获取单元602,用于以所述第一偏移点及所述第二偏移点为光源位置,获得场景的第一阴影深度贴图及第二阴影深度贴图;
第一距离值计算单元603,用于计算第一绘制点到所述第一偏移点的距离值;
第一阴影绘制单元604,用于从第一阴影深度贴图中,获取所述第一绘制点对应的深度值;若判断得到所述深度值大于或等于所述绘制点到所述第一偏移点的距离值,则触发所述第二距离值计算单元;否则绘制所述绘制点为第一颜色;
第二距离值计算单元605,用于计算所述第一绘制点到所述第二偏移点的距离值;
第二阴影绘制单元606,用于从第二阴影深度贴图中,获取所述绘制点对应的深度值;若判断得到所述深度值小于所述第一绘制点到所述第二偏移点的距离值,则绘制所述绘制点为第二颜色;否则绘制所述绘制点为第三颜色。
在实际光照场景中,半影区的颜色为动态变化的,所以,为了更好的模拟实际的光照场景,本发明实施例中,所述装置进一步包括:第二颜色获取单元607;
所述第二颜色获取单元607包括:
第一颜色获取单元,用于获取预置的第一颜色;
绘制点获取单元,用于获取第二绘制点,所述第二绘制点为以所述第二偏移点为光源位置,所述物体产生的投影点;获取第三绘制点,所述第三绘制点为以所述第一偏移点为光源位置,所述物体产生的投影点;其中,所述第二绘制点位于所述第一绘制点的右侧;
距离获取单元,用于获取第一绘制点到第二绘制点的第一距离,以及第二绘制点与第三绘制点第二距离;
颜色获取单元,获取所述第一颜色乘以所述第一距离与所述第二距离的比值作为所述第二颜色。
本发明第三实施例还一种阴影绘制装置,如图7所示,包括:
偏移点获取单元701,用于对光源进行偏移,得到所述光源的第一偏移点和第二偏移点;
阴影深度贴图获取单元702,用于以所述第一偏移点及所述第二偏移点为光源位置,获得场景的第一阴影深度贴图及第二阴影深度贴图;
第一距离值计算单元703,用于计算第一绘制点到所述第一偏移点的距离值;
第一阴影绘制单元704,用于从第一阴影深度贴图中,获取所述第一绘制点对应的深度值;若判断得到所述深度值小于所述绘制点到所述第一偏移点的距离值,则触发所述第二距离值计算单元;否则绘制所述绘制点为第一颜色;
第二距离值计算单元705,用于计算所述第一绘制点到所述第二偏移点的距离值;
第二阴影绘制单元706,用于从第二阴影深度贴图中,获取所述绘制点对应的深度值;若判断得到所述深度值小于所述第一绘制点到所述第二偏移点的距离值,则绘制所述绘制点为第二颜色;否则绘制所述绘制点为第三颜色。
在实际光照场景中,半影区的颜色为动态变化的,所以,为了更好的模拟实际的光照场景,本发明实施例中,所述装置进一步包括:第三颜色获取单元707;
所述第三颜色获取单元707包括:
第二颜色获取单元,用于获取预置的第二颜色;
绘制点获取单元,用于获取第二绘制点,所述第二绘制点为以所述第一偏移点为光源位置,所述物体产生的投影点;获取第三绘制点,所述第三绘制点为以所述第二偏移点为光源位置,所述物体产生的投影点;其中,所述第二绘制点位于所述第一绘制点的右侧;
距离获取单元,用于获取第一绘制点到第二绘制点的第一距离,以及第二绘制点与第三绘制点第二距离;
颜色获取单元,用于获取所述第二颜色乘以所述第一距离与所述第二距离的比值作为所述第三颜色。
以上对本发明所提供的一种阴影绘制方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (11)
1、一种阴影绘制方法,其特征在于,包括:
对光源进行偏移,得到所述光源的第一偏移点和第二偏移点;
以所述第一偏移点及所述第二偏移点为光源位置,获得场景的第一阴影深度贴图及第二阴影深度贴图;
计算第一绘制点到所述第一偏移点的距离值;
从第一阴影深度贴图中,获取所述第一绘制点对应的深度值;
若判断得到所述深度值大于或等于所述绘制点到所述第一偏移点的距离值,则计算所述第一绘制点到所述第二偏移点的距离值;否则绘制所述绘制点为第一颜色;
从第二阴影深度贴图中,获取所述绘制点对应的深度值;若判断得到所述深度值小于所述第一绘制点到所述第二偏移点的距离值,则绘制所述绘制点为第二颜色;否则绘制所述绘制点为第三颜色。
2、如权利要求1所述的方法,其特征在于,对光源进行偏移,得到所述光源的第一偏移点和第二偏移点具体为:
对光源的坐标进行偏移,获得所述第一偏移点;
对光源的坐标进行偏移,使得第二偏移点位于所述第一偏移点到产生阴影物体的边缘光线形成的区域,且所述第一偏移点到所述产生阴影物体的距离大于所述光源的第二偏移点到所述产生阴影物体的距离。
3、如权利要求2所述的方法,其特征在于,所述获得第二颜色的方法具体包括:
获取预置的第一颜色;
获取第二绘制点,所述第二绘制点为以所述第二偏移点为光源位置,所述产生阴影物体的投影点;
获取第三绘制点,所述第三绘制点为以所述第一偏移点为光源位置,所述产生阴影物体的投影点;
其中,所述第二绘制点位于所述第一绘制点的右侧;
获取第一绘制点到第二绘制点的第一距离,以及第二绘制点与第三绘制点第二距离;
用所述第一颜色乘以所述第一距离与所述第二距离的比值作为所述第二颜色。
4、如权利要求1或2或3所述的方法,其特征在于,获取所述绘制点对应的深度值具体为:
获取所述绘制点在光源空间中的坐标,从第一阴影深度贴图中获取所述坐标对应的深度值。
5、一种阴影绘制方法,其特征在于,包括:
对光源进行偏移,得到所述光源的第一偏移点和第二偏移点;
以所述第一偏移点及所述第二偏移点为光源位置,获得场景的第一阴影深度贴图及第二阴影深度贴图;
计算第一绘制点到所述第一偏移点的距离值;
从第一阴影深度贴图中,获取所述第一绘制点对应的深度值;
若判断得到所述深度值小于所述绘制点到所述第一偏移点的距离值,则计算所述第一绘制点到所述第二偏移点的距离值;否则绘制所述绘制点为第一颜色;
从第二阴影深度贴图中,获取所述绘制点对应的深度值;
若判断得到所述深度值小于所述第一绘制点到所述第二偏移点的距离值,则绘制所述绘制点为第二颜色;否则绘制所述绘制点为第三颜色值。
6、如权利要求5所述的方法,其特征在于,对光源进行偏移,得到所述光源的第一偏移点和第二偏移点具体为:
对光源的坐标进行偏移,获得所述第二偏移点;
对光源的坐标进行偏移,使得第一偏移点位于所述第二偏移点到产生阴影物体的边缘光线形成的区域,且所述第二偏移点到物体的距离大于所述光源的第一偏移点到所述物体的距离。
7、如权利要求5或6所述的方法,其特征在于,所述获得第三颜色的方法具体包括:
获取预置的第二颜色;
获取第二绘制点,所述第二绘制点为以所述第一偏移点为光源位置,所述产生阴影物体的投影点;
获取第三绘制点,所述第三绘制点为以所述第二偏移点为光源位置,所述产生阴影物体的投影点;
其中,所述第二绘制点位于所述第一绘制点的右侧;
获取第一绘制点到第二绘制点的第一距离,以及第二绘制点与第三绘制点第二距离;
用所述第二颜色乘以所述第一距离与所述第二距离的比值作为所述第三颜色。
8、一种阴影绘制装置,其特征在于,包括:偏移点获取单元,阴影深度贴图获取单元,第一距离值计算单元,第一阴影绘制单元,第二距离值计算单元,第二阴影绘制单元;
所述偏移点获取单元,用于对光源进行偏移,得到所述光源的第一偏移点和第二偏移点;
所述阴影深度贴图获取单元,用于以所述第一偏移点及所述第二偏移点为光源位置,获得场景的第一阴影深度贴图及第二阴影深度贴图;
所述第一距离值计算单元,用于计算第一绘制点到所述第一偏移点的距离值;
所述第一阴影绘制单元,用于从第一阴影深度贴图中,获取所述第一绘制点对应的深度值;若判断得到所述深度值大于或等于所述绘制点到所述第一偏移点的距离值,则触发所述第二距离值计算单元;否则绘制所述绘制点为第一颜色;
所述第二距离值计算单元,用于计算所述第一绘制点到所述第二偏移点的距离值;
所述第二阴影绘制单元,用于从第二阴影深度贴图中,获取所述绘制点对应的深度值;若判断得到所述深度值小于所述第一绘制点到所述第二偏移点的距离值,则绘制所述绘制点为第二颜色;否则绘制所述绘制点为第三颜色。
9、如权利要求8所述的装置,其特征在于,所述装置进一步包括:第二颜色获取单元;
所述第二颜色获取单元包括:
第一颜色获取单元,用于获取预置的第一颜色;
绘制点获取单元,用于获取第二绘制点,所述第二绘制点为以所述第二偏移点为光源位置,所述产生阴影物体的投影点;获取第三绘制点,所述第三绘制点为以所述第一偏移点为光源位置,所述产生阴影物体的投影点;其中,所述第二绘制点位于所述第一绘制点的右侧;
距离获取单元,用于获取第一绘制点到第二绘制点的第一距离,以及第二绘制点与第三绘制点第二距离;
颜色获取单元,获取所述第一颜色乘以所述第一距离与所述第二距离的比值作为所述第二颜色。
10、一种阴影绘制装置,其特征在于,包括:
偏移点获取单元,阴影深度贴图获取单元,第一距离值计算单元,第一阴影绘制单元,第二距离值计算单元,第二阴影绘制单元;
所述偏移点获取单元,用于对光源进行偏移,得到所述光源的第一偏移点和第二偏移点;
所述阴影深度贴图获取单元,用于以所述第一偏移点及所述第二偏移点为光源位置,获得场景的第一阴影深度贴图及第二阴影深度贴图;
所述第一距离值计算单元,用于计算第一绘制点到所述第一偏移点的距离值;
所述第一阴影绘制单元,用于从第一阴影深度贴图中,获取所述第一绘制点对应的深度值;若判断得到所述深度值小于所述绘制点到所述第一偏移点的距离值,则触发所述第二距离值计算单元;否则绘制所述绘制点为第一颜色;
所述第二距离值计算单元,用于计算所述第一绘制点到所述第二偏移点的距离值;
所述第二阴影绘制单元,用于从第二阴影深度贴图中,获取所述绘制点对应的深度值;若判断得到所述深度值小于所述第一绘制点到所述第二偏移点的距离值,则绘制所述绘制点为第二颜色;否则绘制所述绘制点为第三颜色。
11、如权利要求10所述的装置,其特征在于,所述装置进一步包括:第三颜色获取单元;
所述第三颜色获取单元包括:
第二颜色获取单元,用于获取预置的第二颜色;
绘制点获取单元,用于获取第二绘制点,所述第二绘制点为以所述第一偏移点为光源位置,所述产生阴影物体的投影点;获取第三绘制点,所述第三绘制点为以所述第二偏移点为光源位置,所述产生阴影物体的投影点;其中,所述第二绘制点位于所述第一绘制点的右侧;
距离获取单元,用于获取第一绘制点到第二绘制点的第一距离,以及第二绘制点与第三绘制点第二距离;
颜色获取单元,用于获取所述第二颜色乘以所述第一距离与所述第二距离的比值作为所述第三颜色。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101124533A CN100555334C (zh) | 2007-06-26 | 2007-06-26 | 阴影绘制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101124533A CN100555334C (zh) | 2007-06-26 | 2007-06-26 | 阴影绘制方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101071511A true CN101071511A (zh) | 2007-11-14 |
CN100555334C CN100555334C (zh) | 2009-10-28 |
Family
ID=38898716
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007101124533A Active CN100555334C (zh) | 2007-06-26 | 2007-06-26 | 阴影绘制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100555334C (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101882323A (zh) * | 2010-05-19 | 2010-11-10 | 北京航空航天大学 | 基于高度图的微结构表面全局光照实时绘制方法 |
CN107808410A (zh) * | 2017-10-27 | 2018-03-16 | 网易(杭州)网络有限公司 | 阴影深度偏移的处理方法及装置 |
CN108280887A (zh) * | 2018-02-11 | 2018-07-13 | 鲸彩在线科技(大连)有限公司 | 一种阴影图确定方法及装置 |
CN109447925A (zh) * | 2018-09-28 | 2019-03-08 | Oppo广东移动通信有限公司 | 图像处理方法和装置、存储介质、电子设备 |
CN109588055A (zh) * | 2016-07-29 | 2019-04-05 | 索尼公司 | 图像处理设备和图像处理方法 |
CN113870380A (zh) * | 2021-09-28 | 2021-12-31 | 泰山信息科技有限公司 | 一种光影效果图的生成方法、装置、设备及可读存储介质 |
-
2007
- 2007-06-26 CN CNB2007101124533A patent/CN100555334C/zh active Active
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101882323A (zh) * | 2010-05-19 | 2010-11-10 | 北京航空航天大学 | 基于高度图的微结构表面全局光照实时绘制方法 |
CN109588055A (zh) * | 2016-07-29 | 2019-04-05 | 索尼公司 | 图像处理设备和图像处理方法 |
CN107808410A (zh) * | 2017-10-27 | 2018-03-16 | 网易(杭州)网络有限公司 | 阴影深度偏移的处理方法及装置 |
CN107808410B (zh) * | 2017-10-27 | 2021-04-27 | 网易(杭州)网络有限公司 | 阴影深度偏移的处理方法及装置 |
CN108280887A (zh) * | 2018-02-11 | 2018-07-13 | 鲸彩在线科技(大连)有限公司 | 一种阴影图确定方法及装置 |
CN109447925A (zh) * | 2018-09-28 | 2019-03-08 | Oppo广东移动通信有限公司 | 图像处理方法和装置、存储介质、电子设备 |
CN109447925B (zh) * | 2018-09-28 | 2021-07-09 | Oppo广东移动通信有限公司 | 图像处理方法和装置、存储介质、电子设备 |
CN113870380A (zh) * | 2021-09-28 | 2021-12-31 | 泰山信息科技有限公司 | 一种光影效果图的生成方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN100555334C (zh) | 2009-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109427088B (zh) | 一种模拟光照的渲染方法及终端 | |
CN107341853B (zh) | 超大虚拟场景和动态摄屏的虚实融合方法及系统 | |
CN100555334C (zh) | 阴影绘制方法及装置 | |
CN104281426B (zh) | 一种图像显示方法及装置 | |
CN110533707A (zh) | 照明估计 | |
CN102834849A (zh) | 进行立体视图像的描绘的图像描绘装置、图像描绘方法、图像描绘程序 | |
CN102243768B (zh) | 一种三维虚拟场景立体画面的绘制方法 | |
CN104461573B (zh) | 一种视图层次的控制处理方法 | |
CN104103092A (zh) | 一种基于聚光灯实时动态阴影的实现方法 | |
CN104680532A (zh) | 一种对象标注方法及装置 | |
CN105282536A (zh) | 一种基于Unity3D引擎的裸眼3D图文交互方法 | |
CN104732592A (zh) | 一种基于二维led旋转屏的实时三维数据生成方法 | |
CN101477701A (zh) | 面向AutoCAD和3DS MAX软件的植入式真三维立体渲染方法 | |
CN102760308A (zh) | 一种点选三维虚拟现实场景中物体的方法和装置 | |
Gimeno et al. | Multiuser augmented reality system for indoor exhibitions | |
CN109493409B (zh) | 基于左右眼空间复用的虚拟三维场景立体画面绘制方法 | |
CN110930492B (zh) | 模型渲染的方法、装置、计算机可读介质及电子设备 | |
CN101540056B (zh) | 面向ERDAS Virtual GIS的植入式真三维立体渲染方法 | |
Sandnes | Sketching 3D immersed experiences rapidly by hand through 2D cross sections | |
CN109829962B (zh) | 一种利用opengl的物体空间消隐线计算加速方法 | |
CN208506731U (zh) | 图像展示系统 | |
CN104123748A (zh) | 基于屏幕空间中点光源实现实时动态阴影的方法 | |
CN104318509A (zh) | 一种基于gpu的大批量目标高速标绘方法 | |
CN101488229B (zh) | 面向pci三维分析模块的植入式真三维立体渲染方法 | |
CN101482978B (zh) | 面向envi/idl的植入式真三维立体渲染方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |