掌桥专利:专业的专利平台
掌桥专利
首页

渲染方法和装置、计算机可读存储介质、电子设备

文献发布时间:2023-06-19 09:44:49


渲染方法和装置、计算机可读存储介质、电子设备

技术领域

本发明实施例涉及空间渲染技术领域,具体而言,涉及一种渲染方法、渲染装置、计算机可读存储介质以及电子设备。

背景技术

游戏中,实时渲染建筑物需要开发人员渲染出真实的窗户效果,其中真实的窗户效果包括玻璃表面、窗帘或者百叶窗以及房间内部空间。当建筑物立面上有许多窗户时,为了使建筑物更加真实,可以在窗户上放置静态照片,也可以用窗帘或者百叶窗完全挡住窗户,还可以选择做3D的室内空间。

但是,窗户上放置静态照片实现出来的效果非常有限,是一种没有沉浸感且非常静态的二维效果。3D的室内空间,会大大增加建筑物的顶点和面数,并且还需要更多的纹理以及烘焙或实时的光照,从而导致额外的纹理贴图内存和计算消耗。

因此,需要提供一种新的渲染方法。

需要说明的是,在上述背景技术部分发明的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

发明内容

本发明的目的在于提供一种渲染方法、渲染装置、计算机可读存储介质以及电子设备,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的渲染效果不真实、贴图占用内存大以及计算资源消耗多的问题。

根据本公开的一个方面,提供一种渲染方法,其特征在于,包括:

确定待渲染的窗口模型以及与所述待渲染的窗口模型对应的室内空间纹理贴图;

根据虚拟摄像机的朝向,确定观看所述窗口模型的第一视角方向;

基于所述第一视角方向,确定所述窗口模型与所述室内空间纹理贴图之间的坐标映射关系;

根据所述坐标映射关系,将所述室内空间纹理贴图中对应的纹理贴图映射至所述窗口模型,以使得在所述窗口模型上模拟显示透过所述窗口模型获得的室内空间视图。

在本公开的一种示例性实施例中,所述基于所述第一视角方向,确定所述窗口模型与所述室内空间纹理贴图之间的坐标映射关系,还包括:

获取所述室内空间纹理贴图与所述窗口模型的初始坐标映射关系;

基于所述第一视角方向,确定视角偏移方向和坐标偏移量;

基于所述视角偏移方向以及所述坐标偏移量对所述初始坐标映射关系进行偏移调整,从而获得所述坐标映射关系。

在本公开的一种示例性实施例中,所述获取所述室内空间纹理贴图与所述窗口模型的初始坐标映射关系,包括:

对所述室内空间纹理贴图建立二维纹理坐标系,并将所述窗口模型映射到所述二维纹理坐标系中,以得到所述室内空间纹理贴图与所述窗口模型的初始坐标映射关系。

在本公开的一种示例性实施例中,所述基于所述第一视角方向,确定视角偏移方向和坐标偏移量,包括:

根据所述初始坐标映射关系,确定初始视角方向;

根据所述初始视角方向和所述第一视角方向,确定视角偏移方向;

根据所述视角偏移方向,确定与所述第一视角方向对应的室内空间纹理贴图相对于与所述初始视角方向对应的室内空间纹理贴图的偏移量。

在本公开的一种示例性实施例中,所述渲染方法还包括:

基于所述室内空间纹理贴图的二维纹理坐标系,建立所述室内空间纹理贴图的三维坐标系;

根据所述视角偏移方向和所述三维坐标系,计算与所述第一视角方向对应的室内空间纹理贴图相对于与所述初始视角方向对应的室内空间纹理贴图的偏移量。

在本公开的一种示例性实施例中,所述基于所述室内空间纹理贴图的二维纹理坐标系,建立所述室内空间纹理贴图的三维坐标系,包括:

确定与所述室内空间纹理贴图的二维纹理坐标系有垂直关系的法线向量;

确定与所述室内空间纹理贴图的二维纹理坐标系有平行关系的切线向量;

根据所述法线向量以及所述切线向量,得到所述室内空间纹理贴图的二维纹理坐标系的副法线向量;

根据所述法线向量、所述切线向量以及所述副法线向量构建所述室内空间纹理贴图的三维坐标系。

在本公开的一种示例性实施例中,所述根据所述视角偏移方向和所述三维坐标系,计算与所述第一视角方向对应的室内空间纹理贴图相对于与所述初始视角方向对应的室内空间纹理贴图的偏移量,包括:

根据所述第一视角方向,确定所述第一视角方向在水平方向上的第一视角向量;

计算所述第一视角向量与所述三维坐标系的切线向量之间的第一点积结果,并基于所述第一点积结果,得到所述室内空间纹理贴图在水平方向上的偏移量。

在本公开的一种示例性实施例中,所述根据所述视角偏移方向和所述三维坐标系,计算与所述第一视角方向对应的室内空间纹理贴图相对于与所述初始视角方向对应的室内空间纹理贴图的偏移量,还包括:

根据所述第一视角方向,确定所述第一视角方向在竖直方向上的第二视角向量;

计算所述第二视角向量与所述三维坐标系的副法线向量之间的第二点积结果,并基于所述第二点积结果,得到所述室内空间纹理贴图在竖直方向上的偏移量。

根据本公开的一个方面,提供一种渲染装置,用于对虚拟场景中的窗口模型进行渲染处理,其特征在于,包括:

空间纹理贴图确定模块,用于确定待渲染的窗口模型以及与所述待渲染的窗口模型对应的室内空间纹理贴图;

视角方向确定模块,用于根据虚拟摄像机的朝向,确定观看所述窗口模型的第一视角方向;

映射关系确定模块,用于基于所述第一视角方向,确定所述窗口模型与所述室内空间纹理贴图之间的坐标映射关系;

纹理贴图映射模块,用于根据所述坐标映射关系,将所述室内空间纹理贴图中对应的纹理贴图映射至所述窗口模型,以使得在所述窗口模型上模拟显示透过所述窗口模型获得的室内空间视图。

根据本公开的一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述任意一项所述的渲染方法。

根据本公开的一个方面,提供一种电子设备,其特征在于,包括:

处理器;以及

存储器,用于存储所述处理器的可执行指令;

其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的视差渲染方法。

本发明实施例提供的一种渲染方法,一方面确定待渲染的窗口模型以及与所述待渲染的窗口模型对应的室内空间纹理贴图;根据虚拟摄像机的朝向,确定观看所述窗口模型的第一视角方向;基于所述第一视角方向,确定所述窗口模型与所述室内空间纹理贴图之间的坐标映射关系;根据所述坐标映射关系,将所述室内空间纹理贴图中对应的纹理贴图映射至所述窗口模型,以使得在所述窗口模型上模拟显示透过所述窗口模型获得的室内空间视图,由于在渲染过程中只使用了一个空间纹理贴图,加快了渲染速度,减少了纹理占用的内存空间,降低了计算资源消耗;另一方面,根据视角方向,将纹理贴图映射到窗口模型中,以使得通过窗口模型上就可以看到室内空间视图,渲染效果真实,具有沉浸感。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1A~图1C示意性示出纹理映射的场景示意图;图1A为默认状态下的3D模型,图1B为错误的纹理坐标映射后的3D模型,图1C为正确的纹理坐标映射后的3D模型。

图2示意性示出3D室内空间的场景示意图。

图3A~图3C示意性示出静态纹理的场景示意图;图3A为外立面的3D模型,图3B为窗户纹理,图3C为将窗户纹理映射到3D模型的效果图。

图4示意性示出着色器的应用场景图。

图5示意性示出使用空间贴图#1的效果示意图。

图6示意性示出使用空间贴图#2的效果示意图。

图7示意性示出根据本发明示例实施例的一种渲染方法的流程图。

图8A、8B示意性示出根据本发明示例实施例的一种纹理贴图的示意图;图8A为静态2D纹理贴图,图8B为待渲染的窗口模型对应的室内空间的纹理贴图。

图9示意性示出根据本发明实施例的一种根据视角方向确定窗口模型与室内空间纹理贴图之间的坐标映射关系。

图10A、10B示意性示出根据本发明示例实施例的一种二维纹理坐标映射的示意图;图10A为二维纹理坐标映射到整个室内空间纹理贴图的示意图,图10B为二维纹理坐标只映射一部分到室内空间纹理贴图的示意图。

图11A~图11D示意性示出根据本发明实施例的一种与正视方向对应的其他位置得到的空间场景示意图;图11A为基于与正视方向对应的右侧位置得到的空间场景,图11B为基于与正视方向对应的左侧位置得到的空间场景,图11C为基于与正视方向对应的上侧位置得到的空间场景,图11D为基于与正视方向对应的下侧位置得到的空间场景。

图12示意性示出根据本发明实施例的一种确定二维纹理坐标偏移量的方法框图。

图13示意性示出根据本发明实施例的一种构建室内空间纹理贴图的三维坐标系的示意图。

图14示意性示出根据本发明实施例的一种计算U轴上的偏移量的场景示意图。

图15示意性示出根据本发明实施例的一种计算V轴上的偏移量的场景示意图。

图16示意性示出根据本发明实施例的一种根据偏移量对窗口纹理坐标进行偏移,以实现对所述天花板、地板以及墙壁的渲染的场景示意图。

图17示意性示出根据本发明实施例的一种提升待渲染空间的视觉效果的场景示意图。

图18示意性示出根据本发明实施例的一种制作待渲染空间窗户所需的对象示意图。

图19示意性示出根据本发明实施例的一种提升渲染效果的纹理坐标映射场景图。

图20示意性示出根据本发明示例实施例的一种渲染装置的框图。

图21示意性示出根据本发明示例实施例的一种用于实现上述渲染方法的电子设备。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本发明的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本发明的各方面变得模糊。

此外,附图仅为本发明的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

在实时渲染中,通常会采用纹理贴图来给3D模型加上无法用几何体表现的高频细节,在常规的渲染管线中因为高频细节会给图形管道和内存带宽增加很多额外的工作量,因此,无法将3D模型做出高频细节。其中,3D模型是指物体表面在三个维度的数学表现。表1体现了处理的顶点数量与导致的性能之间的间接比例关系,其中,顶点为3D空间中的一个点,包含关于法线方向、纹理坐标和其他网格属性的信息。网格是一组用来描述3D模型的顶点数据和三角面指标的术语,其中,三角面是由一组三个顶点组成的一个3D面。

表1

表1中的数据在Unity 2019.3.3f1版本中使用通用渲染管道(URP)7.2版本测试的,渲染了每个3D模型的100,000(1e

纹理映射,是一种将2D图像投影到3D模型上的技术,该过程要求3D模型具有可创建3D模型的2D表现的纹理坐标,其中,纹理用于存储高频细节和表面信息,例如:颜色、透光度和光照信息等。参照图1A~图1C所示,图1A为默认状态下的3D模型,图1B为错误的纹理坐标映射后的3D模型,图1C为正确的纹理坐标映射后的3D模型。

Unity 3D,Unreal,CryEngine,Lumberyard等游戏引擎都没有在引擎内提供用于渲染窗户中室内物体的解决方案。技术人员或者可以使用建模软件来制作需要大量渲染且内存很大的3D模型,或者可以在窗户表面上放平的二维纹理贴图。针对二维纹理贴图,最佳的解决方案是通过shader(着色器)模拟显示室内空间,让室内空间既有立体感又无需增加任何模型,有助于优化内存和性能。

制作3D室内空间模型,需要技术人员仔细规划室内房间,以确保模型不会有重叠或者相交的地方,且模型需要展开创建纹理坐标、纹理贴图和光照。如果要创建大量的变体,技术人员则需要对各房间进行建模并将其放置在建筑模型内,具体可以参考图2所示。但是,用面和顶点创建3D室内房间模型会给图形处理管线增加很多额外的负担,除此之外,城市办公楼和公寓楼通常都有很多窗户,因此也需要创建的很多的室内房间,每个房间都需要制作模型、纹理和光照,从而导致额外的贴图内存和工作量。对于低端硬件设备,例如手机来说,这种方案并不可行。

为了解决上述问题,目前有三种已知的方法可以通过着色器模拟显示室内空间,分别为静态纹理、室内空间贴图#1以及室内空间贴图#2。其中:

静态纹理:通常做法是,在窗户模型上放置静态纹理贴图,可选地,静态纹理贴图为照片,照片可以是从街道某一固定角度(例如,沿水平面偏斜预设角度)拍摄的窗户内部的空间。当采用静态纹理时,从不同角度看向窗户,都不会有任何变化,即呈现效果是静态不变的。因此,技术人员往往会采用窗帘或者百叶窗遮挡住整个房间内部,这样做出来的效果并不真实。参照图3A~图3C所示,图3A为外立面的3D模型,图3B为窗户纹理,图3C为将窗户纹理映射到3D模型的效果图。

室内空间贴图#1是一种基于着色器的室内空间映射技术,原理是在不需要任何几何体的情况下,定义一个虚拟三维室内空间,可以基于视角(即摄像机从哪个方向看窗户)来确定天花板、地板或墙壁等各个室内空间所在面是否可见。通过在3D空间中模拟显示墙壁、地板和天花板等场景,将3D空间细分为以房间为单位。在着色器中,可以通过在像素上进行光线投射运算来确定摄像机可以看到哪个3D位置,参考图4所示。着色器会将该像素的位置向下取整到最近的面并将使用结果坐标来进行纹理查找,其中,着色器是运行在显卡上的一个程序,可以对应用对象进行逐像素的计算。这种解决方案需要着色器执行多次光线投射的运算,并且,需要使用3-5种单独的纹理映射到虚拟室内空间的地板、天花板和一个或多个墙壁上,其产生的效果是动态的,能够打造出真实的、有沉浸感的3D室内效果,参考图5所示。

室内空间贴图#2与室内空间贴图#1技术相似,但不是给每个面使用单独的纹理,而是使用立方体贴图纹理来代替,其中,立方体贴图由6个纹理组成,能够360度捕捉环境,参考图6所示。使用立方体贴图能够简化着色器在还原哪些部分应该展示出来时对纹理的读取和计算,但由于立方体贴图总是包含有6个纹理,会占用更多的内存,因此能够创建的变体数减少。

室内空间贴图#1和室内空间贴图#2都可以产生动态且逼真的结果,但代价是每个房间需要用到3-6个额外的纹理贴图。由于需要额外的纹理贴图,限制了可以存在的不同室内空间类型的数量,并且计算哪些面可以被摄像机看到也是一笔较大的消耗,屏幕上窗户越多,消耗越大,最终甚至会超过渲染3D室内空间的消耗。

基于上述一个或多个问题,本示例实施方式中首先提供了一种渲染方法,该方法可以运行于服务器、服务器集群或云服务器等;当然,本领域技术人员也可以根据需求在其他平台运行本发明的方法,本示例性实施例中对此不做特殊限定。参考图7所示,该渲染方法可以包括以下步骤:

步骤S710.确定待渲染的窗口模型以及与所述待渲染的窗口模型对应的室内空间纹理贴图;

步骤S720.根据虚拟摄像机的朝向,确定观看所述窗口模型的第一视角方向;

步骤S730.基于所述第一视角方向,确定所述窗口模型与所述室内空间纹理贴图之间的坐标映射关系;

步骤S740.根据所述坐标映射关系,将所述室内空间纹理贴图中对应的纹理贴图映射至所述窗口模型,以使得在所述窗口模型上模拟显示透过所述窗口模型获得的室内空间视图。

上述渲染方法,一方面确定待渲染的窗口模型以及与所述待渲染的窗口模型对应的室内空间纹理贴图;根据虚拟摄像机的朝向,确定观看所述窗口模型的第一视角方向;基于所述第一视角方向,确定所述窗口模型与所述室内空间纹理贴图之间的坐标映射关系;根据所述坐标映射关系,将所述室内空间纹理贴图中对应的纹理贴图映射至所述窗口模型,以使得在所述窗口模型上模拟显示透过所述窗口模型获得的室内空间视图,由于在渲染过程中只使用了一个空间纹理贴图,加快了渲染速度,减少了纹理占用的内存空间,降低了计算资源消耗;另一方面,根据视角方向,将纹理贴图映射到窗口模型中,以使得通过窗口模型上就可以看到室内空间视图,渲染效果真实,具有沉浸感。

以下,对步骤S710-步骤S740进行解释以及说明。

在步骤S710中,确定待渲染的窗口模型以及与所述待渲染的窗口模型对应的室内空间纹理贴图。

在本示例实施例中,窗口模型为虚拟摄像机得到室内空间视图时所通过的模型,其中,窗口可以为通用的窗口,也可以为洞口视角查看时的洞口,还可以为门口视角的查看时的门框,在本示例实施例中对窗口不做具体限定;窗口模型的形状可以为规则的几何形,也可以为不规则的几何形,在本示例实施例中,对窗口模型的形状不做特殊限定。待渲染的窗口模型对应的室内空间纹理贴图包括待渲染空间的天花板、地板以及墙壁,为了更方便的在窗口模型中模拟显示透过窗口模型获得的室内空间视图,优选地,天花板、地板以及墙壁相交于待渲染的窗口模型对应的室内空间纹理贴图的的中间位置。

在本示例实施例中,待渲染空间是由三个相互垂直的向量(X,Y,Z)组成的空间坐标。空间纹理是在实时渲染中,投射到3D模型表面的一组二维纹理像素,其中,3D模型是物体表面在三个维度的数学表现。待渲染空间的空间纹理相比于静态2D纹理贴图,具有视图或者深度,参考图8A、图8B所示,其中图8A为静态2D纹理贴图,图8B为待渲染的窗口模型对应的室内空间的纹理贴图。

在步骤S720中,根据虚拟摄像机的朝向,确定观看所述窗口模型的第一视角方向。

在本示例实施例中,虚拟摄像机的朝向即为用户透过窗口模型观看的方向,根据虚拟摄像机的朝向,即可确定观看窗口模型的视角方向。

在步骤S730中,基于所述第一视角方向,确定所述窗口模型与所述室内空间纹理贴图之间的坐标映射关系。

在本示例实施例中,参考图9所示,基于所述第一视角方向,确定所述窗口模型与所述室内空间纹理贴图之间的坐标映射关系,还包括:

S910.获取所述室内空间纹理贴图与所述窗口模型的初始坐标映射关系;

S920.基于所述第一视角方向,确定视角偏移方向和坐标偏移量;

S930.基于所述视角偏移方向以及所述坐标偏移量对所述初始坐标映射关系进行偏移调整,从而获得所述坐标映射关系。

在步骤S910中,获取所述室内空间纹理贴图与所述窗口模型的初始坐标映射关系。

在本示例实施例中,所述获取所述室内空间纹理贴图与所述窗口模型的初始坐标映射关系,包括:

对所述室内空间纹理贴图建立二维纹理坐标系,并将所述窗口模型映射到所述二维纹理坐标系中,以得到所述室内空间纹理贴图与所述窗口模型的初始坐标映射关系。

其中,参考图10A、图10B所示,图10A为二维纹理坐标映射到整个室内空间纹理贴图上,图10B为二维纹理坐标只映射一部分到室内空间纹理贴图上。二维纹理坐标只存在X(U)和Y(V)两个维度,建立二维纹理坐标系时,坐标只占室内空间纹理贴图的一部分,即,只对室内空间纹理贴图的一部分建立纹理坐标系,优选地,二维纹理坐标系位于室内空间纹理贴图的中心位置,本示例实施例不对此做特殊限定,本领域技术人员可以根据需要在纹理贴图的不同部分创建二维坐标系。优选地,当二维坐标系位于室内空间纹理贴图的中心位置时,窗口模型模拟展示的是正视窗口模型时看到的室内空间场景。当虚拟摄像机的方向发生变化时,着色器会根据虚拟视角偏移二维纹理坐标,从而展示室内空间的不同空间场景。

在一种可选的实施用例中,参考图11A-图11D所示,分别为:基于与正视方向对应的右侧位置得到的空间场景为待渲染空间中左侧的墙;基于与正视方向对应的左侧位置得到的空间场景为待渲染空间中右边的墙;基于与正视方向对应的上侧位置得到的空间场景为待渲染空间中的地板;基于与正视方向对应的下侧位置得到的空间场景为待渲染空间的天花板。可以得到,当虚拟摄像机的视角发生变化时,会得到不同视角下的空间场景,且待渲染空间中可视部分的偏移只是窗口纹理坐标的左、右、下、上的偏移。

在步骤S920中,基于所述第一视角方向,确定视角偏移方向和坐标偏移量。

在本示例实施例中,基于所述第一视角方向,确定视角偏移方向和坐标偏移量,包括:

根据所述初始坐标映射关系,确定初始视角方向;

根据所述初始视角方向和所述第一视角方向,确定视角偏移方向;

根据所述视角偏移方向,确定与所述第一视角方向对应的室内空间纹理贴图相对于与所述初始视角方向对应的室内空间纹理贴图的偏移量。

其中,初始视角方向为二维纹理坐标系位于室内空间纹理贴图中心位置时,正视窗口模型时的方向。

具体的,当虚拟摄像机的朝向发生改变时,根据正视窗口时的方向与当前虚拟摄像机的朝向,确定虚拟摄像机视角偏移方向,根据虚拟摄像机的视角偏移方向,确定通过当前虚拟摄像机得到的室内空间场景与正视窗口模型时得到的室内空间场景之间的偏移量。

其中,参照图12所示,室内空间纹理坐标的偏移量还可以包括:

步骤S1210.基于所述室内空间纹理贴图的二维纹理坐标系,建立所述室内空间纹理贴图的三维坐标系;

步骤S1220.根据所述视角偏移方向和所述三维坐标系,计算与所述第一视角方向对应的室内空间纹理贴图相对于与所述初始视角方向对应的室内空间纹理贴图的偏移量。

在步骤S1210中,基于所述室内空间纹理贴图的二维纹理坐标系,建立所述室内空间纹理贴图的三维坐标系。

在本示例实施例中,基于所述室内空间纹理贴图的二维纹理坐标系,建立所述室内空间纹理贴图的三维坐标系,包括:

确定与所述室内空间纹理贴图的二维纹理坐标系有垂直关系的法线向量;

确定与所述室内空间纹理贴图的二维纹理坐标系有平行关系的切线向量;

根据所述法线向量以及所述切线向量,得到所述室内空间纹理贴图的二维纹理坐标系的副法线向量;

根据所述法线向量、所述切线向量以及所述副法线向量构建所述室内空间纹理贴图的三维坐标系。

具体的,参照图13所示,首先,确定与窗口纹理坐标表面垂直的法线向量N;其次,确定与窗口纹理坐标U向量具有平行关系的切线向量T;再次,计算法线向量N和切线向量T之间的点积,根据法线向量N和切线向量T之间的点积计算目标坐标系的副法线向量B;最后,根据法线向量N、切线向量T、副法线向量B以及待渲染空间对应的虚拟相机视角的三维坐标构建目标坐标系。

在步骤S1220中,根据所述视角偏移方向和所述三维坐标系,计算与所述第一视角方向对应的室内空间纹理贴图相对于与所述初始视角方向对应的室内空间纹理贴图的偏移量。

在本示例实施例中,根据所述视角偏移方向和所述三维坐标系,计算与所述第一视角方向对应的室内空间纹理贴图相对于与所述初始视角方向对应的室内空间纹理贴图的偏移量,包括:

根据所述第一视角方向,确定所述第一视角方向在水平方向上的第一视角向量;

计算所述第一视角向量与所述三维坐标系的切线向量之间的第一点积结果,并基于所述第一点积结果,得到所述室内空间纹理贴图在水平方向上的偏移量。

具体的,参考图14所示,窗口纹理坐标在水平方向上的第一偏移量即为二维纹理坐标在U轴方向上的偏移量。首先,根据虚拟摄像机的视角方向,确定虚拟摄像机视角方向在水平方向上的视角向量C

二维纹理坐标的偏移量包括在水平方向上的偏移量以及在竖直方向上的偏移量。其中,所述根据所述视角偏移方向和所述三维坐标系,计算与所述第一视角方向对应的室内空间纹理贴图相对于与所述初始视角方向对应的室内空间纹理贴图的偏移量,还包括:

根据所述第一视角方向,确定所述第一视角方向在竖直方向上的第二视角向量;

计算所述第二视角向量与所述三维坐标系的副法线向量之间的第二点积结果,并基于所述第二点积结果,得到所述室内空间纹理贴图在竖直方向上的偏移量。

具体的,参考图15所示,窗口纹理坐标在竖直方向上的偏移量即为二维纹理坐标在V轴方向上的偏移量。首先,根据虚拟摄像机的视角方向,确定虚拟摄像机视角方向在竖直方向上的视角向量C

通过构建室内空间纹理贴图的三维坐标系,并基于该三维坐标系确定空间纹理贴图在不同方向的偏移量,提高了空间纹理贴图偏移的准确率。

在步骤S930中,基于所述视角偏移方向以及所述坐标偏移量对所述初始坐标映射关系进行偏移调整,从而获得所述坐标映射关系。

在本示例实施例中,基于虚拟摄像机的视角方向,以及相对于正视时,虚拟摄像机相视角发生偏移后产生的二维纹理坐标在水平方向上的偏移量以及竖直方向上的偏移量,对坐标映射关系进行调整。

在获取室内空间纹理贴图与窗口模型的初始坐标映射关系的基础上,根据视角的偏移方向对空间纹理贴图的坐标映射关系进行偏移,提高了空间纹理贴图偏移的效率。

在步骤S740中,根据所述坐标映射关系,将所述室内空间纹理贴图中对应的纹理贴图映射至所述窗口模型,以使得在所述窗口模型上模拟显示透过所述窗口模型获得的室内空间视图。

在本示例实施例中,参照图16所示,当虚拟摄像机的视角方向发生改变时,着色器根据计算虚拟摄像机的视角方向以及随着视角的变化二维纹理坐标在水平方向上以及竖直方向上的偏移量对二维纹理坐标进行映射。

此外,也可以将多个待渲染空间的空间纹理贴图打包到一个纹理贴图中,既节省了内存,又能提高着色器的性能。以图17为例,当要提升待渲染空间的视觉效果时,可以将窗帘或者百叶窗的纹理贴图直接映射到窗户模型上,在图17中1为窗户模型,2为包含窗帘或者百叶窗纹理贴图,3为待渲染空间的空间纹理贴图。

具体的,参考图18所示,制作待渲染空间的窗户需要两个对象,包括窗框和窗户模型。上述窗户模型需要两组纹理贴图来实现带百叶窗或者窗帘图层的视觉效果,包含待渲染空间的室内空间纹理贴图和百叶窗或者窗帘的纹理贴图。参照图19所示,第一组纹理坐标UV1为待渲染空间的室内空间纹理贴图的二维坐标,将其映射到室内空间纹理贴图的中心位置。第二组纹理坐标UV2为百叶窗或者窗帘的纹理坐标,将其直接映射到百叶窗或者窗帘的纹理贴图上,不需留额外的空间。

此外,需要补充说明的是,本发明示例实施例提供的渲染方法,可以支持各种不同的房间类型,不同形状以及不同大小的窗户,从而使建筑物的外墙看起来独特且丰富。举例而言,可以将建筑物需要体现的窗户都打包到一个纹理贴图中,通过将该纹理贴图映射到与建筑物对应的建筑物模型中,以实现对建筑物上不同类型、不同大小的窗户的模拟显示。

本发明示例实施例提供的渲染方法至少具有以下优点:

一方面,由于在渲染过程中只使用了一个空间纹理贴图,加快了渲染速度,减少了纹理占用的内存空间,降低了计算资源消耗;

另一方面,根据视角方向,将纹理贴图映射到窗口模型中,以使得通过窗口模型上就可以看到室内空间视图,渲染效果真实,具有沉浸感;

再一方面,可以将多个房间组合放在一个纹理集上,且纹理坐标的映射不受正方形(1:1)贴图格式的限制,可以用最合适窗户的任何矩形形状。本发明示例实施例还提供了一种渲染装置,参考图20示,包括:

空间纹理贴图确定模块2010,用于确定待渲染的窗口模型以及与所述待渲染的窗口模型对应的室内空间纹理贴图;

视角方向确定模块2020,用于根据虚拟摄像机的朝向,确定观看所述窗口模型的第一视角方向;

映射关系确定模块2030,用于基于所述第一视角方向,确定所述窗口模型与所述室内空间纹理贴图之间的坐标映射关系;

纹理贴图映射模块2040,用于根据所述坐标映射关系,将所述室内空间纹理贴图中对应的纹理贴图映射至所述窗口模型,以使得在所述窗口模型上模拟显示透过所述窗口模型获得的室内空间视图。

在本公开的一种示例性实施例中,所述基于所述第一视角方向,确定所述窗口模型与所述室内空间纹理贴图之间的坐标映射关系,还包括:

获取所述室内空间纹理贴图与所述窗口模型的初始坐标映射关系;

基于所述第一视角方向,确定视角偏移方向和坐标偏移量;

基于所述视角偏移方向以及所述坐标偏移量对所述初始坐标映射关系进行偏移调整,从而获得所述坐标映射关系。

在本公开的一种示例性实施例中,所述获取所述室内空间纹理贴图与所述窗口模型的初始坐标映射关系,包括:

对所述室内空间纹理贴图建立二维纹理坐标系,并将所述窗口模型映射到所述二维纹理坐标系中,以得到所述室内空间纹理贴图与所述窗口模型的初始坐标映射关系。

在本公开的一种示例性实施例中,所述基于所述第一视角方向,确定视角偏移方向和坐标偏移量,包括:

根据所述初始坐标映射关系,确定初始视角方向;

根据所述初始视角方向和所述第一视角方向,确定视角偏移方向;

根据所述视角偏移方向,确定与所述第一视角方向对应的室内空间纹理贴图相对于与所述初始视角方向对应的室内空间纹理贴图的偏移量。

在本公开的一种示例性实施例中,所述渲染方法还包括:

基于所述室内空间纹理贴图的二维纹理坐标系,建立所述室内空间纹理贴图的三维坐标系;

根据所述视角偏移方向和所述三维坐标系,计算与所述第一视角方向对应的室内空间纹理贴图相对于与所述初始视角方向对应的室内空间纹理贴图的偏移量。

在本公开的一种示例性实施例中,所述基于所述室内空间纹理贴图的二维纹理坐标系,建立所述室内空间纹理贴图的三维坐标系,包括:

确定与所述室内空间纹理贴图的二维纹理坐标系有垂直关系的法线向量;

确定与所述室内空间纹理贴图的二维纹理坐标系有平行关系的切线向量;

根据所述法线向量以及所述切线向量,得到所述室内空间纹理贴图的二维纹理坐标系的副法线向量;

根据所述法线向量、所述切线向量以及所述副法线向量构建所述室内空间纹理贴图的三维坐标系。

在本公开的一种示例性实施例中,所述根据所述视角偏移方向和所述三维坐标系,计算与所述第一视角方向对应的室内空间纹理贴图相对于与所述初始视角方向对应的室内空间纹理贴图的偏移量,包括:

根据所述第一视角方向,确定所述第一视角方向在水平方向上的第一视角向量;

计算所述第一视角向量与所述三维坐标系的切线向量之间的第一点积结果,并基于所述第一点积结果,得到所述室内空间纹理贴图在水平方向上的偏移量。

在本公开的一种示例性实施例中,所述根据所述视角偏移方向和所述三维坐标系,计算与所述第一视角方向对应的室内空间纹理贴图相对于与所述初始视角方向对应的室内空间纹理贴图的偏移量,还包括:

根据所述第一视角方向,确定所述第一视角方向在竖直方向上的第二视角向量;

计算所述第二视角向量与所述三维坐标系的副法线向量之间的第二点积结果,并基于所述第二点积结果,得到所述室内空间纹理贴图在竖直方向上的偏移量。

上述渲染装置中各模块的具体细节已经在对应的渲染方法中进行了详细的描述,因此此处不再赘述。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

此外,尽管在附图中以特定顺序描述了本发明中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。

在本发明的示例性实施例中,还提供了一种能够实现上述方法的电子设备。

所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。

下面参照图21来描述根据本发明的这种实施方式的电子设备2100。图21显示的电子设备2100仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图21所示,电子设备2100以通用计算设备的形式表现。电子设备2100的组件可以包括但不限于:上述至少一个处理单元2110、上述至少一个存储单元2120、连接不同系统组件(包括存储单元2120和处理单元2110)的总线2130以及显示单元2140。

其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元2110执行,使得所述处理单元2110执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元2110可以执行如图7中所示的步骤S710:确定待渲染的窗口模型以及与所述待渲染的窗口模型对应的室内空间纹理贴图;步骤S720:根据虚拟摄像机的朝向,确定观看所述窗口模型的第一视角方向;步骤S730:基于所述第一视角方向,确定所述窗口模型与所述室内空间纹理贴图之间的坐标映射关系;步骤S740:根据所述坐标映射关系,将所述室内空间纹理贴图中对应的纹理贴图映射至所述窗口模型,以使得在所述窗口模型上模拟显示透过所述窗口模型获得的室内空间视图。

存储单元2120可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)21201和/或高速缓存存储单元21202,还可以进一步包括只读存储单元(ROM)21203。

存储单元2120还可以包括具有一组(至少一个)程序模块21205的程序/实用工具21204,这样的程序模块21205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

总线2130可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。

电子设备2100也可以与一个或多个外部设备2200(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备2100交互的设备通信,和/或与使得该电子设备2100能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口2150进行。并且,电子设备2100还可以通过网络适配器2160与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器2160通过总线2130与电子设备2100的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备2100使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本发明实施方式的方法。

在本发明的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。

根据本发明的实施方式的用于实现上述方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。

本领域技术人员在考虑说明书及实践这里发明的发明后,将容易想到本发明的其他实施例。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未发明的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由权利要求指出。

相关技术
  • 渲染图像的方法、装置、电子设备和计算机可读存储介质
  • 渲染图像的方法、装置、电子设备和计算机可读存储介质
技术分类

06120112281300