虚拟物体显示方法、装置、计算机设备及存储介质与流程

文档序号:20033868发布日期:2020-02-28 10:48阅读:141来源:国知局
虚拟物体显示方法、装置、计算机设备及存储介质与流程

本申请实施例涉及计算机技术领域,特别涉及一种虚拟物体显示方法、装置、计算机设备及存储介质。



背景技术:

在光源的照射下,物体具有各向异性,在不同方向上的光强会产生非一致的变化。随着计算机技术的快速发展和用户对显示效果的要求日益提升,在电子游戏或虚拟现实等场景下通常需要构建虚拟环境,在虚拟环境中创建虚拟物体。为了使虚拟物体的显示效果更加自然,需要实现虚拟物体的各向异性。

相关技术中,创建具有各向同性的虚拟物体,调整虚拟物体的颜色参数和高光度参数,以达到与各向异性材质类似的显示效果。但是虚拟物品表面上产生的光照分布效果与各向异性材质产生的光照分布效果仍然存在不同,显示效果不佳。例如,对于一个圆形的光斑来说,通过调整颜色参数和高光度参数,只能改变这个光斑的大小,或者将圆形改变为椭圆形,但是无法将该光斑改变为环形。



技术实现要素:

本申请实施例提供了一种虚拟物体显示方法、装置、计算机设备及存储介质,可以解决相关技术存在的虚拟物体的显示效果不佳的问题。所述技术方案如下:

一方面,提供了一种虚拟物体显示方法,所述方法包括:

获取虚拟物体的多项参数,所述多项参数包括粗糙度参数和法线参数;

根据所述粗糙度参数,获取所述虚拟物体在虚拟环境中多个维度上的粗糙度分量;

根据所述多个维度上的粗糙度分量和所述法线参数,获取所述虚拟物体的各向异性光照参数;

按照所述多项参数和所述各向异性光照参数,在所述虚拟环境中显示所述虚拟物体,以使所述虚拟物体的材质为各向异性材质。

另一方面,提供了一种虚拟物体显示装置,所述装置包括:

第一参数获取模块,用于获取虚拟物体的多项参数,所述多项参数包括粗糙度参数和法线参数;

粗糙度分量获取模块,用于根据所述粗糙度参数,获取所述虚拟物体在虚拟环境中多个维度上的粗糙度分量;

第一光照参数获取模块,用于根据所述多个维度上的粗糙度分量和所述法线参数,获取所述虚拟物体的各向异性光照参数;

显示模块,用于按照所述多项参数和所述各向异性光照参数,在所述虚拟环境中显示所述虚拟物体,以使所述虚拟物体的材质为各向异性材质。

可选地,所述装置还包括:

第二光照参数获取模块,用于当所述指示参数指示所述虚拟物体的材质为各向同性材质时,根据所述粗糙度参数和所述法线参数,获取所述虚拟物体的各向同性光照参数;

所述显示模块,还用于按照所述多项参数和所述各向同性光照参数,在所述虚拟环境中显示所述虚拟物体,以使所述虚拟物体的材质为各向同性材质。

可选地,所述指示参数为第一参数值时,指示所述虚拟物体的材质为所述各向异性材质;

所述指示参数为第二参数值时,指示所述虚拟物体的材质为所述各向同性材质。

可选地,所述粗糙度分量获取模块还用于根据所述指示参数,获取与所述指示参数匹配的旋转参数,根据所述粗糙度参数和所述旋转参数,获取所述虚拟物体在所述多个维度上的粗糙度分量。

可选地,所述粗糙度分量获取模块还用于:

采用以下公式,获取所述虚拟物体在所述多个维度上的粗糙度分量:

αy=α·r;

r=(1.0-0.9*t)2

其中,αx为第一维度上的粗糙度分量,αy为第二维度上的粗糙度分量,α为所述粗糙度参数,r为所述旋转参数,t为所述指示参数。

可选地,所述第一参数获取模块还用于从缓存区中获取所述虚拟物体的数据包,对所述数据包进行解析,得到所述多项参数。

可选地,所述装置还包括:

第二参数获取模块,用于获取所述虚拟物体的当前设置的所述多项参数;

数据包生成模块,用于根据所述多项参数生成所述数据包;

存储模块,用于通过调用参数存储接口,将所述数据包存储于所述缓存区。

可选地,所述法线参数包括所述虚拟物体的法线向量和所述虚拟物体的微表面法线向量,所述第二光照参数获取模块还用于:

采用以下公式,获取所述各向同性光照参数:

其中,dggx(h)为所述虚拟物体的各向同性光照参数,h为所述虚拟物体的微表面法线向量,n为所述虚拟物体的法线向量,α为所述虚拟物体的粗糙度参数。

另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条程序代码,所述至少一条程序代码由所述处理器加载并执行,以实现如所述虚拟物体显示方法中所执行的操作。

另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行,以实现如所述虚拟物体显示方法中所执行的操作。

再一方面,提供了一种计算机程序,所述计算机程序中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行,以实现如所述虚拟物体显示方法中所执行的操作。

本申请实施例采用的方法、装置、计算机设备及存储介质,获取虚拟物体的多项参数,根据粗糙度参数,获取虚拟物体在虚拟环境中多个维度上的粗糙度分量,根据该多个维度上的粗糙度分量和法线参数,获取虚拟物体的各向异性光照参数,按照多项参数和各向异性光照参数,在虚拟环境中显示虚拟物体,以使虚拟物体的材质为各向异性材质。该方法根据多个维度上的粗糙度分量,在多个维度上调节光照分布,从而获取到满足各向异性的光照参数,以使显示的虚拟物体的材质为各向异性材质,更具有真实性,提高了虚拟物体的显示效果。

并且,采用指示参数确定虚拟物体的材质为各向同性材质还是各向异性材质,只需设置或更新指示参数,即可显示满足材质要求的虚拟物体,操作灵活简便,应用范围全面。

并且,在获取虚拟物体的多项参数的过程中,首先获取虚拟物体设置的多项参数,根据该多项参数生成数据包,通过调用参数设置接口,将数据包存储于缓存区,从缓存区中获取数据包,对数据包进行解析,得到多项参数。先存储多项参数,在获取光照参数时,再从缓存区中获取多项参数,对于存在显示区域和非显示区域的虚拟物体来说,从缓存区中获取多项参数时,可以只获取显示区域的多项参数,根据该显示区域的多项参数获取光照参数,以减少计算量。

并且,采用本申请实施例中的方法,实现虚拟物体的各向异性材质时,采用在线渲染方式,渲染速度快、效率高,占用的存储空间较小,并且能够实现较好的渲染效果。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的一种虚拟物体显示方法的流程图。

图2是本申请实施例提供的一种材质编辑器界面的示意图。

图3是本申请实施例提供的一种参数存储的流程图。

图4是本申请实施例提供的一种虚拟物体显示方法的流程图。

图5是本申请实施例提供的一种各向同性材质的显示效果的示意图。

图6是本申请实施例提供的一种各向异性材质的显示效果的示意图。

图7是本申请实施例提供的一种各向异性材质的显示效果的示意图。

图8是本申请实施例提供的另一种各向同性材质的显示效果的流程图。

图9是本申请实施例提供的另一种各向异性材质的显示效果的示意图。

图10是本申请实施例提供的一种各向异性材质的显示效果的示意图。

图11是本申请实施例提供的一种虚拟物体显示装置的结构示意图。

图12是本申请实施例提供的另一种虚拟物体显示装置的结构示意图。

图13是本申请实施例提供的一种终端的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种概念,但除非特别说明,这些概念不受这些术语限制。这些术语仅用于将一个概念与另一个概念区分。举例来说,在不脱离本申请的范围的情况下,可以将第一维度称为第二维度,将第二维度称为第一维度。

为了便于理解本申请实施例的技术过程,下面对本申请实施例所涉及的一些名词进行解释:

光照模型:光照模型是描述物体某点处在光线与视角等影响下的颜色值。例如phong(镜面反射)模型、blinn-phong(修正镜面反射)模型和cook-torrance(微表面)模型等。

brdf(bidirectionalreflectancedistributionfunction,双向反射分布函数):用来定义给定入射方向上的辐射照度如何影响给定出射方向上的辐射率,描述了入射光线经过某个表面反射后如何在各个出射方向上分布,可以描述理想镜面反射、漫反射、各向同性或者各向异性等各种反射。

延迟渲染:对受光物体的渲染过程包括下面几步:

1、计算受光物体的形状。

2、获取受光物体的表面材质特性参数,例如法线参数、brdf等。

3、计算光照参数,包括光照方向、光照强度等。

4、按照光照参数和表面材质特性参数对受光物体表面的影响,显示受光物体的颜色。

延迟渲染在执行过程中,先执行第1步和第2步,将获取到的参数存储于缓存区中,再从缓存区中提取参数,执行第3步和第4步,以减少多边形在屏幕重叠部分光照参数的计算量。而其他渲染方式则是将上述4个步骤一次执行完。

各向异性:指物体的全部或部分物理、化学等性质随方向的不同而有所变化的特性。本申请中指受光物体受光照时在不同方向的光强非一致变化。

g-buffer(g-缓存区):用于储存受光物体的每项参数的缓存区。

本申请实施例可以应用于多种场景下。

例如,本申请实施例应用于游戏场景下,在游戏应用中会创建虚拟环境,在该虚拟环境可以显示虚拟物体,则采用本申请实施例提供的方法显示虚拟物体,能够实现该虚拟物体的各向异性。

本申请实施例应用于虚拟现实场景下,用户使用终端的摄像头拍摄实际场景的画面,并在该画面中添加虚拟物体,则采用本申请实施例提供的方法显示虚拟物体,能够实现该虚拟物体的各向异性。

图1是本申请实施例提供的一种虚拟物体显示方法的流程图。本申请实施例的执行主体为计算机设备,参见图1,该方法包括:

101、获取虚拟物体设置的多项参数。

其中,虚拟物体是虚拟环境中设置的物体,可以为人物、动物、植物等动态物体,也可以为桌、椅等静态物体。多项参数为在虚拟环境中显示虚拟物体时所需的参数,根据该多项参数可以确定虚拟物体的材质、颜色等。后续当虚拟物体的各项参数确定好之后,即可按照确定的各项参数显示该虚拟物体,此时所显示虚拟物体与各项参数匹配,满足各项参数的要求。

虚拟物体可以由一个物体模型构成,也可以包括多个物体模型,由该多个物体模型共同组成该虚拟物体。例如,可以将多个大小不同的长方体组合在一起,构成虚拟阶梯。并且,当虚拟物体包括多个物体模型时,可以获取每个物体模型设置的多项参数,后续会根据多个物体模型的参数显示该虚拟物体。

在一种可能实现方式中,多项参数包括粗糙度参数和法线参数。

粗糙度参数用于描述虚拟物体的材质在微表面上的分布属性,不同维度上的粗糙度会对虚拟物体的光照参数产生不同的影响。通过设置粗糙度参数,后续按照粗糙度参数显示虚拟物体时,虚拟物体表面的粗糙度与粗糙度参数匹配,满足粗糙度的要求。粗糙度的大小影响虚拟物体的显示效果,粗糙度较小时,虚拟物体表面上照射到的光照的反射比较集中,粗糙度较大时,虚拟物体表面反射的光照范围越大,比较分散。当只有一个维度上的粗糙度参数时,根据该粗糙度参数可以获取各向同性光照参数,当有两个或者两个以上维度上的粗糙度参数时,可以获取各向异性光照参数。

法线参数用于表示虚拟物体表面的朝向,该法线参数包括虚拟物体的法线向量和虚拟物体的微表面法线向量。通过设置法线参数,后续按照法线参数显示虚拟物体时,虚拟物体表面的朝向与法线参数匹配,满足法线参数的要求。

其中,虚拟物体的法线向量用于表示虚拟物体自身的法线方向,即与虚拟物体表面垂直的方向;同时,在虚拟物体的表面上有很多凹凸不平的微小镜面,这些微小镜面共同组成虚拟物体的表面,虚拟物体的微表面法线向量用于表示这些微小镜面的法线方向。

另外,该多项参数还可以包括旋转参数,旋转参数使虚拟物体的高光部分能够进行旋转。各向异性材质的光照在不同维度上具有不同的分布,旋转参数使光照可以具有旋转的能力,例如,可以通过设置旋转参数,将竖直方向上的高光旋转为水平方向上的高光。

可选地,在虚拟环境中设置虚拟摄像机,计算机设备显示虚拟场景的画面可以模拟成虚拟摄像机对虚拟环境进行拍摄的过程。虚拟摄像机对虚拟环境进行拍摄得到的画面,即为虚拟环境投影到虚拟摄像机的显示屏幕上而形成的画面。

并且,该虚拟摄像机在虚拟环境中可以旋转,从而调整拍摄视角,一旦拍摄视角调整,所显示的画面也会相应调整,所显示的虚拟物体的具体样式也会发生改变。因此考虑虚拟摄像机的拍摄视角的影响,可以将虚拟摄像机拍摄视角的方向上的单位向量与虚拟物体自身的法线向量相加得到微表面法线向量。

在一种可能实现方式中,多项参数还包括指示参数,指示参数用于指示虚拟物体的材质是否为各向异性材质。

通过设置指示参数,可以确定需要显示的虚拟物体的材质,当指示参数指示虚拟物体的材质为各向异性材质时,需要显示的虚拟物体的材质为各项异性材质,因此在获取虚拟物体的光照参数时,需要获取各向异性光照参数,以使后续按照各向异性光照参数显示虚拟物体时,虚拟物体表面的光照分布满足各向异性材质的光照分布条件,从而实现虚拟物体的材质为各向异性材质。当指示参数指示虚拟物体的材质为各向同性材质时,需要显示的虚拟物体的材质为各项同性材质,因此在获取虚拟物体的光照参数时,需要获取各向同性光照参数,以使后续按照各向同性光照参数显示虚拟物体时,虚拟物体表面的光照分布满足各向同性材质的光照分布条件,从而实现虚拟物体的材质为各向同性材质。

可选地,根据预设的参数值,来指示虚拟物体的材质是否为各向异性材质。当指示参数为第一参数值时,指示虚拟物体的材质为各向异性材质;当指示参数为第二参数值时,指示虚拟物体的材质为各向同性材质。其中,第一参数值为不同于第二参数值的任一数值,例如,第二参数值为0,则第一参数值为不等于0的任一数值。

在一种可能实现方式中,多项参数还包括初始颜色值参数、金属参数和高光参数等。初始颜色值参数用于表示为虚拟物体设置的初始颜色值,金属参数用于表示虚拟物体的材质为金属材质,高光参数用于表示虚拟物体显示的高光部分的亮度,上述参数对虚拟物体的显示效果有影响。

在一种可能实现方式中,技术人员可以通过材质编辑器中的参数接口设置虚拟物体的多项参数,材质编辑器界面参见图2,设置有初始颜色值参数接口、金属参数接口、高光参数参数接口、粗糙度参数接口、法线参数接口、指示参数接口和旋转参数接口等接口。在显示虚拟物体的过程中,技术人员也可以通过触发上述参数接口对每项参数进行调整。

102、根据多项参数生成数据包。

103、通过调用参数设置接口,将数据包存储于缓存区。

其中,参数设置接口用于传输参数,每项参数有对应的参数设置接口。例如,有用于传输指示参数的指示参数接口,用于传输旋转参数的旋转参数接口。

在一种可能实现方式中,缓存区可以为g-buffer,该缓存区中设置有customdata(自定义数据)接口,在缓存区中可以通过修改customdata接口的类型,得到customdata0和customdata1这两个新的参数设置接口,可以通过调用这两个参数设置接口来缓存指示参数和旋转参数。

参见图3,在存储每项参数时,将初始颜色值参数、金属参数、指示参数和旋转参数等存储于缓存区,其中,指示参数和旋转参数为扩展了缓存区中的接口之后,通过调用新的参数设置接口而添加的参数。

例如,通过调用customdata0和customdata1,将指示参数和旋转参数存储于缓存区中:

gbuffer.customdata.r=saturate(getmaterialcustomdata0(materialparameters));

gbuffer.customdata.g=saturate(getmaterialcustomdata1(materialparameters))。

需要说明的是,本申请实施例中,将多项参数生成数据包进行缓存,在另一实施例中,也可以采用其他方式进行缓存。

104、从缓存区中获取数据包,对数据包进行解析,得到多项参数,执行步骤105或步骤107。

将多项参数存储于缓存区中,之后即可从缓存区中获取数据包,对数据包进行解析,得到多项参数。

在一种可能实现方式中,从缓存区中获取存储的全部数据包,对全部数据包进行解析,得到多项参数。在后续计算光照参数时,基于全部参数进行计算。

在一种可能实现方式中,基于上述步骤101中虚拟物体包括多个物体模型的情况,由于多个物体模型之间可能会出现重叠,导致多个物体模型构成的虚拟物体中包括可显示区域和非显示区域。由于后续计算光照参数时,只需要计算可显示区域的光照参数即可,因此,从缓存区中获取多项参数时,只需要获取可显示区域的多项参数,不再获取非显示区域的多项参数,以减少不必要的计算,与上述基于全部参数计算光照参数的方式相比较,减少了计算量。

例如,对于由多个大小不同的长方体组合而成的虚拟阶梯,该多个长方体之间存在重叠部分,该重叠部分即为非显示区域,后续计算虚拟阶梯的光照参数时,不需要计算该非显示区域的光照参数,只需要计算显示区域的光照参数,因此,只需要获取显示区域的多项参数,不再获取非显示区域的多项参数。

105、当指示参数指示虚拟物体的材质为各向异性材质时,根据粗糙度参数,获取虚拟物体在虚拟环境中多个维度上的粗糙度分量。

根据指示参数,确定虚拟物体的材质,在一种可能实现方式中,当指示参数为第一参数值时,指示虚拟物体的材质为各向异性材质;指示参数为第二参数值时,指示虚拟物体的材质为各向同性材质。

当指示参数指示虚拟物体的材质为各向异性材质时,根据粗糙度参数,获取虚拟物体在虚拟环境中多个维度上的粗糙度分量,后续在按照多个维度上的粗糙度分量显示虚拟物体时,虚拟物体在多个维度上的粗糙度与获取的粗糙度分量匹配,即可满足各向异性材质的粗糙度的要求。

其中,可以为虚拟环境设置坐标系,该坐标系可以包括x轴和y轴两个方向,或者包括x轴、y轴和z轴三个方向,或者该坐标系还可以为其他形式的坐标系。上述多个维度可以包括该坐标系中的任意方向。例如,上述多个维度包括第一维度和第二维度,第一维度为x轴,第二维度为y轴,或者上述多个维度包括第一维度、第二维度和第三维度,第一维度为x轴,第二维度为y轴,第三维度为z轴。

在一种可能实现方式中,该虚拟环境中设置的坐标系为切线空间的坐标系,该坐标系包括x轴、y轴和z轴。其中,z轴为虚拟物体表面的法线方向,x轴和y轴为平行于虚拟物体表面的相互垂直的两个方向。本申请实施例中的多个维度为虚拟物体表面的相互垂直的两个方向,则可以获取x轴和y轴这两个方向上的粗糙度分量。

在一种可能实现方式中,根据指示参数,获取与指示参数匹配的旋转参数,根据粗糙度参数和旋转参数,获取虚拟物体在多个维度上的粗糙度分量。

可以采用以下公式,获取虚拟物体在各个维度上的粗糙度分量:

αy=α·r;

r=(1.0-0.9*t)2

其中,αx为第一维度上的粗糙度分量,αy为第二维度上的粗糙度分量,α为虚拟物体的粗糙度参数,r为虚拟物体的旋转参数,t为虚拟物体的指示参数。

上述方式仅是以两个维度上的粗糙度分量为例进行说明,在另一实施例中,可以获取更多维度上的粗糙度分量,以使获取的各向异性光照参数更加准确,获取方式与上述方式类似,或者也可以采用其他方式。

106、根据多个维度上的粗糙度分量和法线参数,获取虚拟物体的各向异性光照参数,执行步骤108。

其中,虚拟物体的各向异性光照参数用于表示虚拟物体中的每个点上的光照强度,从虚拟物体的整体来看,虚拟物体的各向异性光照参数用于表示整个虚拟物体表面的光照分布情况,后续在显示虚拟物体时,虚拟物体表面的光照分布和各向异性光照参数相匹配,从而实现虚拟物体的材质为各项异性材质。

在一种可能实现方式中,可以采用以下公式,获取各向异性光照参数:

其中,daniso(h)为虚拟物体的各向异性光照参数,h为虚拟物体的微表面法线向量,n为虚拟物体的法线向量,x为第一维度上的法线分量,y为第二维度上的法线分量,αx为第一维度上的粗糙度分量,αy为第二维度上的粗糙度分量。

上述公式在计算光照参数时,采用了两个维度上的粗糙度分量,可以在两个维度上调节光照分布,进而可以体现各向异性,因此,在获取光照参数时,根据多个维度上的粗糙度分量,可以获取各向异性光照参数。

需要说明的是,在另一实施例中,可以采用其他方法获取各向异性光照参数,例如可以采用ward函数(一种微表面分布函数)或者其他函数。

107、当指示参数指示虚拟物体的材质为各向同性材质时,根据粗糙度参数和法线参数,获取虚拟物体的各向同性光照参数,执行步骤108。

在一种可能实现方式中,采用以下公式,获取各向同性光照参数:

其中,d(h)为虚拟物体的各向同性光照参数,h为虚拟物体的微表面法线向量,n为虚拟物体的法线向量,α为虚拟物体的粗糙度参数。

需要说明的是,在另一实施例中,可以采用其他方法获取各向同性光照参数,例如可以采用ward函数或者其他函数。

108、按照虚拟物体的每项参数,在虚拟环境中显示虚拟物体。

获取虚拟物体的每项参数之后,按照每项参数对虚拟物体的颜色值的影响,在虚拟环境中显示虚拟物体。

虚拟物体的颜色值表示虚拟物体显示的颜色,颜色值受光照参数、初始颜色值参数、金属参数和辐射率等多项参数的影响。其中,辐射率可以采用brdf进行计算获取,用于体现虚拟物体显示的颜色。

在一种可能实现方式中,获取到虚拟物体的各向异性光照参数后,按照虚拟物体设置的多项参数以及获取到的各项异性光照参数,在虚拟物体中显示虚拟物体,以使虚拟物体的材质为各向异性材质。

在另一种可能实现方式中,获取到虚拟物体的各向同性光照参数后,按照虚拟物体设置的多项参数以及获取到的各项同性光照参数,在虚拟物体中显示虚拟物体,以使虚拟物体的材质为各向同性材质。

在一种可能实现方式中,该方法应用于unreal(unrealengine,虚幻引擎),缓存区为unreal中的g-buffer,将各向异性材质应用到unreal的延迟渲染流程中,通过拓展g-buffer中的自定义参数,使g-buffer可以存储指示参数和旋转参数,在延迟渲染的光照部分加入各向异性模型,实现可调节的各向异性材质渲染技术。

例如,虚拟物体的显示方法流程参见图4,将获取的多项参数存储于g-缓存区中,从g-缓存区中获取指示参数,根据指示参数确定虚拟物体的材质,当虚拟物体的材质为各向同性材质时,采用各向同性的方法获取各向同性光照参数,显示虚拟物体的颜色值;当虚拟物体的材质为各向异性材质时,采用各向异性的方法获取各向异性光照参数,显示虚拟物体的颜色值。

需要说明的是,本申请实施例仅是以延迟渲染为例进行说明,在另一实施例中可以采用前向渲染方式,不执行本申请实施例中的步骤102-步骤104,即不存储每项参数,直接采用获取的每项参数进行光照计算,该方法与上述延迟渲染的方法相比较,增加了计算量,但是不需要对每项参数进行存储,节省了存储空间。

本申请实施例采用的方法,获取虚拟物体的多项参数,根据粗糙度参数,获取虚拟物体在虚拟环境中多个维度上的粗糙度分量,根据该多个维度上的粗糙度分量和法线参数,获取虚拟物体的各向异性光照参数,按照多项参数和各向异性光照参数,在虚拟环境中显示虚拟物体,以使虚拟物体的材质为各向异性材质。该方法根据多个维度上的粗糙度分量,在多个维度上调节光照分布,从而获取到满足各向异性的光照参数,以使显示的虚拟物体的材质为各向异性材质,更具有真实性,提高了虚拟物体的显示效果。

并且,采用指示参数确定虚拟物体的材质为各向同性材质还是各向异性材质,只需设置或更新指示参数,即可显示满足材质要求的虚拟物体,操作灵活简便,应用范围全面。

并且,在获取虚拟物体的多项参数的过程中,首先获取虚拟物体设置的多项参数,根据该多项参数生成数据包,通过调用参数设置接口,将数据包存储于缓存区,从缓存区中获取数据包,对数据包进行解析,得到多项参数。先存储多项参数,在获取光照参数时,再从缓存区中获取多项参数,对于存在显示区域和非显示区域的虚拟物体来说,从缓存区中获取多项参数时,可以只获取显示区域的多项参数,根据该显示区域的多项参数获取光照参数,以减少计算量。

采用本申请实施例中的方法,得到的虚拟物体的显示效果参见图5-9,其中,图5中虚拟物体的材质为各向同性材质,该虚拟物体的高光部分在竖直方向和水平方向上为渐变效果,无法在竖直方向上形成如拉丝不锈钢、丝绸之类的条纹状高光效果,图6中虚拟物体的材质为各向异性材质,虚拟物体在竖直方向上的高光部分保持同样的亮度,形成了清晰的条形高光带,在水平方向和竖直方向上的高光分布不同,并且,由于本申请还设置了旋转参数,可以对图6中的竖直方向上的条形高光带的方向进行旋转,旋转之后得到的效果图参见图7,条形高光带的角度发生了变化,但是仍然是清晰的条形高光带。

如图8和图9所示,对于人眼部位,图8为各向同性材质的效果,眼角部位的高光较为明显,图9为各向异性材质的效果,由于各向异性材质设置有旋转参数,基于旋转参数对高光部分进行旋转,使原来竖直方向的高光可以变为水平方向的高光,以使眼角部位的高光过度更加自然。

如图10所示,数字表示各向异性的程度,体现了逐渐实现各向异性的过程,其中,0.01表示各向异性程度小,高光部分在球体上呈现为一个光斑,随着各向异性程度的增加,光斑逐渐发生变化,当各向异性程度到1时,高光部分在球体上呈现为圆环,实现了各向异性。

本申请实施例中的虚拟物体显示方法是基于在线渲染方式获取虚拟物体的颜色值的,相关技术中,采用离线渲染方式获取虚拟物体的颜色值,采用3d软件或者离线渲染器实现各向异性材质效果,例如可以采用maya(一种3d软件)、arnold(一种离线渲染器)等。离线渲染器的渲染方式与实时渲染的方式不同,离线渲染描述了brdf的具体实现,但是没有与延迟渲染的实时渲染流程相结合,而是与光线追踪的离线渲染流程相结合,渲染得到的效果较好,但是渲染速度较慢,效率低,并且需要占用较大的存储空间。

而采用本申请实施例中的方法,实现虚拟物体的各向异性材质时,采用在线渲染方式,渲染速度快、效率高,占用的存储空间较小,并且能够实现较好的渲染效果。

图11是本申请实施例提供的一种虚拟物体显示装置的结构示意图。参见图11,该装置包括:

第一参数获取模块1101,用于获取虚拟物体的多项参数,多项参数包括粗糙度参数和法线参数;

粗糙度分量获取模块1102,用于根据粗糙度参数和旋转参数,获取虚拟物体在虚拟环境中多个维度上的粗糙度分量;

第一光照参数获取模块1103,用于根据多个维度上的粗糙度分量和法线参数,获取虚拟物体的各向异性光照参数;

显示模块1104,用于按照多项参数和各向异性光照参数,在虚拟环境中显示虚拟物体,以使虚拟物体的材质为各向异性材质。

可选地,多项参数还包括指示参数,指示参数用于指示虚拟物体的材质是否为各向异性材质;

粗糙度分量获取模块1102还用于:

当指示参数指示虚拟物体的材质为各向异性材质时,根据粗糙度参数和旋转参数,获取虚拟物体在多个维度上的粗糙度分量。

可选地,参见图12,装置还包括:

第二光照参数获取模块1105,用于当指示参数指示虚拟物体的材质为各向同性材质时,根据粗糙度参数和法线参数,获取虚拟物体的各向同性光照参数;

显示模块1104,还用于按照多项参数和各向同性光照参数,在虚拟环境中显示虚拟物体,以使虚拟物体的材质为各向同性材质。

可选地,指示参数为第一参数值时,指示虚拟物体的材质为各向异性材质;

指示参数为第二参数值时,指示虚拟物体的材质为各向同性材质。

可选地,粗糙度分量获取模块1102还用于根据指示参数,获取与指示参数匹配的旋转参数,根据粗糙度参数和旋转参数,获取虚拟物体在多个维度上的粗糙度分量。

可选地,粗糙度分量获取模块1102还用于采用以下公式,获取虚拟物体在多个维度上的粗糙度分量:

αy=α·r;

r=(1.0-0.9*t)2

其中,αx为第一维度上的粗糙度分量,αy为第二维度上的粗糙度分量,α为粗糙度参数,r为旋转参数,t为指示参数。

可选地,第一参数获取模块1101,还用于从缓存区中获取虚拟物体的数据包,对数据包进行解析,得到多项参数。

可选地,参见图12,装置还包括:

第二参数获取模块1106,用于获取虚拟物体的当前设置的多项参数;

数据包生成模块1107,用于根据多项参数生成数据包;

存储模块1108,用于通过调用参数存储接口,将数据包存储于缓存区。

可选地,法线参数包括虚拟物体的法线向量和虚拟物体的微表面法线向量,第一光照参数获取模块1103还用于:

采用以下公式,获取各向异性光照参数:

其中,daniso(h)为虚拟物体的各向异性光照参数,h为虚拟物体的微表面法线向量,n为虚拟物体的法线向量,x为第一维度上的法线分量,y为第二维度上的法线分量,αx为第一维度上的粗糙度分量,αy为第二维度上的粗糙度分量。

可选地,法线参数包括虚拟物体的法线向量和虚拟物体的微表面法线向量,第二光照参数获取模块1105还用于:

采用以下公式,获取各向同性光照参数:

其中,dggx(h)为虚拟物体的各向同性光照参数,h为虚拟物体的微表面法线向量,n为虚拟物体的法线向量,α为虚拟物体的粗糙度参数。

需要说明的是:上述实施例提供的虚拟物体显示装置在显示虚拟物体时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将计算机设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的虚拟物体显示装置与虚拟物体显示方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图13是本申请实施例提供的一种终端1300的结构示意图。

通常,终端1300包括有:处理器1301和存储器1302。

处理器1301可以包括一个或多个处理核心,比如4核心处理器、5核心处理器等。处理器1301可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1301也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1301可以在集成有gpu(graphicsprocessingunit,图像处理的交互器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1301还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。

存储器1302可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1302还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1302中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1301所具有以实现本申请中方法实施例提供的虚拟物体显示方法。

在一些实施例中,终端1300还可选包括有:外围设备接口1303和至少一个外围设备。处理器1301、存储器1302和外围设备接口1303之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1303相连。具体地,外围设备包括:射频电路1304、触摸显示屏1305、摄像头1306、音频电路1307、定位组件1308和电源1309中的至少一种。

外围设备接口1303可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器1301和存储器1302。在一些实施例中,处理器1301、存储器1302和外围设备接口1303被集成在同一芯片或电路板上;在一些其他实施例中,处理器1301、存储器1302和外围设备接口1303中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。

射频电路1304用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路1304通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1304将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1304包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1304可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2g、3g、4g及8g)、无线局域网和/或wifi(wirelessfidelity,无线保真)网络。在一些实施例中,射频电路1304还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本申请对此不加以限定。

显示屏1305用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1305是触摸显示屏时,显示屏1305还具有采集在显示屏1305的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1301进行处理。此时,显示屏1305还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1305可以为一个,设置终端1300的前面板;在另一些实施例中,显示屏1305可以为至少两个,分别设置在终端1300的不同表面或呈折叠设计;在再一些实施例中,显示屏1305可以是柔性显示屏,设置在终端1300的弯曲表面上或折叠面上。甚至,显示屏1305还可以设置成非矩形的不规则图形,也即异形屏。显示屏1305可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。

摄像头组件1306用于采集图像或视频。可选地,摄像头组件1306包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端1300的前面板,后置摄像头设置在终端1300的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtualreality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1306还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。

音频电路1307可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1301进行处理,或者输入至射频电路1304以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1300的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1301或射频电路1304的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1307还可以包括耳机插孔。

定位组件1308用于定位终端1300的当前地理位置,以实现导航或lbs(locationbasedservice,基于位置的服务)。定位组件1308可以是基于美国的gps(globalpositioningsystem,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。

电源1309用于为终端1300中的各个组件进行供电。电源1309可以是交流电、直流电、一次性电池或可充电电池。当电源1309包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。

在一些实施例中,终端1300还包括有一个或多个传感器1310。该一个或多个传感器1310包括但不限于:加速度传感器1311、陀螺仪传感器1312、压力传感器1313、指纹传感器1314、光学传感器1315以及接近传感器1316。

加速度传感器1311可以检测以终端1300建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1311可以用于检测重力加速度在三个坐标轴上的分量。处理器1301可以根据加速度传感器1311采集的重力加速度信号,控制触摸显示屏1305以横向视图或纵向视图进行用户界面的显示。加速度传感器1311还可以用于游戏或者用户的运动数据的采集。

陀螺仪传感器1312可以检测终端1300的机体方向及转动角度,陀螺仪传感器1312可以与加速度传感器1311协同采集用户对终端1300的3d动作。处理器1301根据陀螺仪传感器1312采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。

压力传感器1313可以设置在终端1300的侧边框和/或触摸显示屏1305的下层。当压力传感器1313设置在终端1300的侧边框时,可以检测用户对终端1300的握持信号,由处理器1301根据压力传感器1313采集的握持信号进行左右手识别或快捷操作。当压力传感器1313设置在触摸显示屏1305的下层时,由处理器1301根据用户对触摸显示屏1305的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。

指纹传感器1314用于采集用户的指纹,由处理器1301根据指纹传感器1414采集到的指纹识别用户的身份,或者,由指纹传感器1314根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1301授权该用户具有相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1314可以被设置终端1300的正面、背面或侧面。当终端1300上设置有物理按键或厂商logo时,指纹传感器1314可以与物理按键或厂商标志集成在一起。

光学传感器1315用于采集环境光强度。在一个实施例中,处理器1301可以根据光学传感器1315采集的环境光强度,控制触摸显示屏1305的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1305的显示亮度;当环境光强度较低时,调低触摸显示屏1305的显示亮度。在另一个实施例中,处理器1301还可以根据光学传感器1315采集的环境光强度,动态调整摄像头组件1306的拍摄参数。

接近传感器1316,也称距离传感器,通常设置在终端1300的前面板。接近传感器1316用于采集用户与终端1300的正面之间的距离。在一个实施例中,当接近传感器1316检测到用户与终端1300的正面之间的距离逐渐变小时,由处理器1301控制触摸显示屏1305从亮屏状态切换为息屏状态;当接近传感器1316检测到用户与终端1300的正面之间的距离逐渐变大时,由处理器1301控制触摸显示屏1305从息屏状态切换为亮屏状态。

本领域技术人员可以理解,图13中示出的结构并不构成对终端1300的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

本申请实施例还提供了一种用于显示虚拟物体的计算机设备,该计算机设备包括处理器和存储器,存储器中存储有至少一条程序代码,该至少一条程序代码由处理器加载并执行,以实现上述实施例的虚拟物体显示方法中所执行的操作。

本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条程序代码,该至少一条程序代码由处理器加载并执行,以实现上述实施例的虚拟物体显示方法中所执行的操作。

本申请实施例还提供了一种计算机程序,该计算机程序中存储有至少一条程序代码,该至少一条程序代码由处理器加载并执行,以实现上述实施例的虚拟物体显示方法中所执行的操作。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上仅为本申请实施例的可选实施例,并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1