眼球光斑的渲染方法、装置和电子设备与流程

文档序号:33712811发布日期:2023-04-01 00:39阅读:30来源:国知局
眼球光斑的渲染方法、装置和电子设备与流程

1.本发明涉及人像处理技术领域,尤其是涉及一种眼球光斑的渲染方法、装置和电子设备。


背景技术:

2.眼球光斑通常是光线穿过眼睛中的晶体状结构后发生折射,在虹膜上形成光斑让虹膜变亮的一种现象。在游戏中也可以对这种现象进行模拟,使虚拟角色和游戏画面更加真实。在一些相关技术中,通常会预先将不同光照产生的光斑效果渲染到不同三维贴图中,得到多个光斑三维贴图;然后根据实际的光照信息,采样对应的光斑三维贴图,叠加至眼球材质中。这种方式中,需要使用三维贴图,实现过程较为复杂,对运行设备的性能消耗较高。在另一些相关技术中,通常直接将光斑对虹膜提亮的效果绘制到眼球的贴图上,但是这种方式,并不考虑光照方向,眼睛的光斑也不会随着光照方向的改变而改变,渲染效果不佳。


技术实现要素:

3.有鉴于此,本发明的目的在于提供一种眼球光斑的渲染方法、装置和电子设备,以降低对运行设备的性能消耗,提高眼球光斑的渲染效果。
4.第一方面,本发明实施例提供了一种眼球光斑的渲染方法,该方法包括:获取虚拟对象的眼球模型,基于眼球模型的眼球朝向,确定三维坐标系;获取射入眼球模型的光照方向,确定光照方向在三维坐标系的指定坐标平面上的投影向量;确定投影向量与三维坐标系的指定坐标轴之间的目标夹角信息;基于目标夹角信息对预设的光斑贴图进行旋转处理,将旋转后的光斑贴图渲染至眼球模型,得到具有眼球光斑效果的眼球模型。
5.第二方面,本发明实施例提供了一种眼球光斑的渲染装置,该装置包括:三维坐标系确定模块,用于获取虚拟对象的眼球模型,基于眼球模型的眼球朝向,确定三维坐标系;投影向量确定模块,用于获取射入眼球模型的光照方向,确定光照方向在三维坐标系的指定坐标平面上的投影向量;目标夹角信息确定模块,用于确定投影向量与三维坐标系的指定坐标轴之间的目标夹角信息;渲染模块,用于基于目标夹角信息对预设的光斑贴图进行旋转处理,将旋转后的光斑贴图渲染至眼球模型,得到具有眼球光斑效果的眼球模型。
6.第三方面,本发明实施例提供了一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的计算机可执行指令,处理器执行计算机可执行指令以实现权利要求第一方面的眼球光斑的渲染方法。
7.第四方面,本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现权利要求第一方面的眼球光斑的渲染方法。
8.本发明实施例带来了以下有益效果:
9.本发明提供了一种眼球光斑的渲染方法、装置和电子设备,获取虚拟对象的眼球模型,基于眼球模型的眼球朝向,确定三维坐标系;获取射入眼球模型的光照方向,确定光
照方向在三维坐标系的指定坐标平面上的投影向量;确定投影向量与三维坐标系的指定坐标轴之间的目标夹角信息;基于目标夹角信息对预设的光斑贴图进行旋转处理,将旋转后的光斑贴图渲染至眼球模型,得到具有眼球光斑效果的眼球模型。该方式中,通过光照方向和眼球朝向,可以确定预设的光斑贴图在不同光照下的旋转角度,通过一次贴图采样即可得到具有光斑效果的眼球模型,使得眼睛的光斑能够随着光照方向的改变而改变,实现过程简单,降低了对运行设备的性能消耗,提高了眼球光斑的渲染效果。
10.本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
11.为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
12.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
13.图1为本发明实施例提供的一种多个光斑三维贴图的示意图;
14.图2为本发明实施例提供的一种卡通二维眼模型的示意图;
15.图3为本发明实施例提供的一种眼球光斑的渲染方法的流程图;
16.图4为本发明实施例提供的一种三维坐标系的示意图;
17.图5为本发明实施例提供的一种光斑贴图和眼球模型uv的示意图;
18.图6为本发明实施例提供的一种另一种三维坐标系的示意图;
19.图7为本发明实施例提供的一种光照方向在三维坐标系的示意图;
20.图8为本发明实施例提供的另一种光照方向在三维坐标系的示意图;
21.图9为本发明实施例提供的另一种光照方向在三维坐标系的示意图;
22.图10为本发明实施例提供的另一种光照方向在三维坐标系的示意图;
23.图11为本发明实施例提供的一种光照方向在眼球模型形成光斑效果的示意图;
24.图12为本发明实施例提供的另一种光照方向在眼球模型形成光斑效果的示意图;
25.图13为本发明实施例提供的另一种光照方向在眼球模型形成光斑效果的示意图;
26.图14为本发明实施例提供的另一种光照方向在三维坐标系的示意图;
27.图15为本发明实施例提供的另一种光照方向在三维坐标系的示意图;
28.图16为本发明实施例提供的一种眼球光斑的渲染装置的结构示意图;
29.图17为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
30.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所
获得的所有其他实施例,都属于本发明保护的范围。
31.眼球光斑通常是指光线穿过眼睛中的晶体状结构后发生折射,在虹膜上形成光斑让虹膜变亮的一种现象。在游戏中也可以对这种现象进行模拟,使虚拟角色和游戏画面更加真实,让画面更加真实也是写实游戏追求的目标之一。
32.在一些相关技术中,通常会使用光线追踪的方式,预先将不同光照产生的光斑效果渲染到不同的三维贴图中,得到多个光斑三维贴图,如图1所示的多个白色光斑贴图的示意图;然后根据实际的光照方向和模型信息,计算出当前需要使用的目标光斑三维贴图,对该目标光斑三维贴图进行采样,最后叠加至眼球材质中,实现对眼球光斑的模拟。这种方式中,虽然模拟效果好且更符合真实情况,但需要使用三维贴图,三维贴图的格式不适用于所有移动终端,并且对于三维贴图的采样过程也较为复杂,对运行设备的性能消耗较高。
33.在另一些相关技术中,通常直接将光斑对虹膜提亮的效果绘制到眼球的贴图上,如图2所示的一种的卡通二维眼模型,但是,这种方式并不考虑光照方向,眼睛的光斑也不会随着光照方向的改变而改变,对于眼球光斑的渲染过于简单,导致渲染效果不佳。
34.基于此,本发明实施例提供的一种眼球光斑的渲染方法、装置以及电子设备,该技术可以应用于手机、平板电脑、计算机等终端设备,尤其可以应用于具有对虚拟角色进行眼球光斑渲染功能的设备。
35.为便于对本实施例进行理解,首先对本发明实施例所公开的一种眼球光斑的渲染方法进行详细介绍,如图3所示,该方法包括:
36.步骤s302,获取虚拟对象的眼球模型,基于眼球模型的眼球朝向,确定三维坐标系;
37.上述眼球模型是指未进行光斑贴图处理的初始眼球模型,包括瞳孔。上述眼球朝向通常是指眼球模型表面的瞳孔的中心相对于眼球模型的球心的方向向量。上述三维坐标系通常包括x轴、y轴和z轴,且三维坐标系的原点可以为眼球模型的球心,也可以为眼球模型表面的瞳孔的中心。
38.实际实现时,可以将眼球模型的眼球朝向,即眼球模型表面的瞳孔的中心相对于眼球模型的球心的方向向量,确定为三维坐标系中的一个坐标轴,比如,将眼球朝向确定为z轴或x轴。在确定三维坐标系中的一个坐标轴后(比如z轴),可以在指定方向上确定上述三维坐标系的另外两个坐标轴。比如,基于眼球朝向,可以将位于眼球朝向(z轴)左侧方向与眼球朝向垂直的向量,确定为另一个坐标轴(比如x轴),此时已经确定了两个坐标轴,最后可以直接将垂直于xz轴的向量确定为y轴,即可得到上述三维坐标系。
39.示例性的,如图4所示的三维坐标系示意图,以眼球模型的球心为坐标轴的原点为例,此时的眼球朝向左方(眼球朝向是站在虚拟对象的角度确定的),可以将该方向确定为z轴,此时根据z轴确定如图4所示的x轴和y轴。
40.步骤s304,获取射入所述眼球模型的光照方向,确定光照方向在三维坐标系的指定坐标平面上的投影向量;
41.上述光照方向具体是指射入眼球模型的平行光照的方向,该光照方向始终在眼球前方的空间内,比如,如图4所示,光照始终是在z轴的正方向的空间内。上述指定坐标平面通常包括多个,可以是眼球朝向确定的坐标轴与垂直于眼球朝向的右方向或左方向确定的坐标轴组成的坐标平面,还可以是垂直于眼球朝向的右方向或左方向确定的坐标轴与垂直
于眼球朝向的上方向或下方确定的坐标轴组成的坐标平面。同样的,上述投影向量也会包括多个。示例性的,如图4所示,上述指定坐标平面可以是xz平面和xy平面。在实际计算时,上述光照方向其实就是以原点为端点,以光照方向为向量方向的一个向量。
42.具体的,获取射入眼球模型的平行光照的方向,比如,可以表示为light向量,然后,确定光照方向在指定坐标平面上的投影向量,比如,如图4所示,眼球朝向确定的坐标轴为z轴,垂直于眼球朝向的右方向的坐标轴表示为三维坐标系中的x轴,就可以得到xz平面,光照方向在该xz平面上的投影向量可以表示为light_xz。同时,如图4所示,确定光照方向在xy平面的投影向量,该投影向量可以表示为light_xy。
43.步骤s306,确定投影向量与三维坐标系的指定坐标轴之间的目标夹角信息;
44.上述指定坐标轴通常包括多个,可以是指垂直于眼球朝向在左方向或右方向的坐标轴,还可以是垂直于眼球朝向在上方向或下方向的坐标轴。如图4所示,上述指定坐标轴可以是x轴和y轴。上述目标夹角信息可以是具体的角度信息,也可以是弧度信息,且上述目标夹角信息通常用于指示光斑贴图的旋转角度。另外,在实际计算时,上述目标夹角信息通常表示为弧度值,或者shader(即着色器)计算中的数值。
45.举例说明,上述投影向量包括xz平面上的投影向量,可以直接计算投影向量和x轴之间的夹角信息。然后上述投影向量还包括xy平面上的投影向量,可以直接计算投影向量和y轴之间的夹角信息。计算得到夹角信息后,可以根据夹角信息的大小,对该夹角信息进行对应的处理,进而得到上述目标夹角信息。
46.步骤s308,基于目标夹角信息对预设的光斑贴图进行旋转处理,将旋转后的光斑贴图渲染至眼球模型,得到具有眼球光斑效果的眼球模型。
47.上述预设的光斑贴图是基于眼球模型的瞳孔中心,以及眼球瞳孔的半径进行绘制得到的。具体在光斑贴图的指定位置绘制一个光斑形状。示例性的,如图5中的(a)所示的光斑贴图的示意图,以及图5中的(b)所示的眼球模型的uv的示意图,该光斑贴图的中心对应眼球模型的瞳孔中心。光斑贴图中的白色光斑形状距离贴图中心的距离,为图5中的(b)所示的瞳孔半径r。
48.实际实现时,基于目标夹角信息对预设的光斑贴图进行旋转处理,可以对光斑贴图进行顺时针方向的旋转处理,也可以对光斑贴图进行逆时针方向的旋转处理。具体可以旋转上述目标夹角信息指示的角度,目的是使光斑贴图中的光斑能够适应光照方向。最后将旋转后的光斑贴图渲染至未进行光斑贴图处理的初始眼球模型,就可以得到具有眼球光斑效果的眼球模型。
49.上述眼球光斑的渲染方法,获取虚拟对象的眼球模型,基于眼球模型的眼球朝向,确定三维坐标系;获取射入眼球模型的光照方向,确定光照方向在三维坐标系的指定坐标平面上的投影向量;确定投影向量与三维坐标系的指定坐标轴之间的目标夹角信息;基于目标夹角信息对预设的光斑贴图进行旋转处理,将旋转后的光斑贴图渲染至眼球模型,得到具有眼球光斑效果的眼球模型。该方式中,通过光照方向和眼球朝向,可以确定预设的光斑贴图在不同光照下的旋转角度,通过一次贴图采样即可得到具有光斑效果的眼球模型,使得眼睛的光斑能够随着光照方向的改变而改变,实现过程简单,降低了对运行设备的性能消耗,提高了眼球光斑的渲染效果。
50.根据上述步骤s102,基于眼球模型的眼球朝向,确定三维坐标系的步骤,一种可能
的实施方式:
51.步骤1,将眼球朝向确定为第一坐标轴的正方向;其中,第一坐标轴的正方向为眼球模型的球心指向眼球模型表面瞳孔的中心的方向;
52.步骤2,确定与眼球朝向垂直的多个向量,根据多个向量确定第二坐标轴和第三坐标轴;其中,多个向量之间相互垂直;
53.步骤3,根据第一坐标轴、第二坐标轴,和第三坐标轴,确定三维坐标系。
54.示例性的,如图4所示,第一坐标轴(即图4中的z轴)的正方向为眼球模型的球心(即图4中的黑色圆点)指向眼球模型表面瞳孔的中心(即图4中的白色圆点)的方向。上述多个向量的向量起始点可以为眼球模型的球心,也可以为瞳孔中心。
55.实际实现时,以眼球朝向,即第一坐标轴为基准,首先确定与第一坐标轴垂直的第一向量,该第一向量的正方向可以是位于第一坐标轴的左侧也可以位于第一坐标轴的右侧,该第一向量与第一坐标轴组成的目标平面可以是水平平面,也可以是非水平平面。然后确定与目标平面垂直的第三坐标轴,该第三坐标轴的正方向可以位于目标平面的上方也可以位于目标平面的下方。最后,可以直接将第一坐标轴、第二坐标轴,和第三坐标轴,组成一个三维坐标系。
56.举例说明,根据眼球朝向,将眼球模型的球心指向眼球模型表面瞳孔的中心的方向确定为第一坐标轴的正方向,示例性的如图4所示,确定为三维坐标系中z轴的正方向。进一步的,以眼球模型的球心为原点出发,确定与眼球朝向(z轴)垂直的多个向量,具体可以将位于z轴右侧的向量作为第二坐标轴,即图4中的x轴,其中xz平面为水平平面,然后将垂直于xz平面的向量作为第三坐标轴,即图4中的y轴,最后根据x轴,y轴,z轴,确定上述三维坐标系。
57.该方式中,将眼球朝向确定为第一坐标轴,然后基于眼球朝向确定与第一坐标轴垂直,且相互垂直的第二坐标轴和的第三坐标轴,确定的三维坐标系,能够更加精确的确定光照信息,进而可以提高眼球模型中光斑位置的精确度。
58.上述步骤2中,确定与眼球朝向垂直的多个向量,根据多个向量确定第二坐标轴和第三坐标轴的步骤,一种可能的实施方式:
59.步骤21,获取多个向量中,位于第一坐标轴的正方向的左侧或右侧的第一中间向量;从第一中间向量中获取与第一坐标轴组成的平面为水平平面的第一目标向量;
60.步骤22,获取多个向量中,位于第一坐标轴的正方向的上方或下方的第二中间向量;从第二中间向量中获取与第一坐标轴组成的平面为竖直平面的第二目标向量;水平平面与竖直平面相互垂直;
61.步骤23,根据第一目标向量和第二目标向量确定第二坐标轴和第三坐标轴。
62.上述位于第一坐标轴的正方向的左侧或右侧的方向,是站在虚拟模型的角度确定的方向。实际实现时,获取与眼球朝向垂直的多个向量中,位于第一坐标轴的正方向左侧或右侧的第一中间向量,该第一中间向量与第一坐标轴通常可以组成多个方向的平面,具体可以从多个方向的平面中找到水平平面,进而可以将水平平面对应的第一中间向量确定为第一目标向量,示例性的,如图4所示的x轴。获取与眼球朝向垂直的多个向量中,位于第一坐标轴的正方向上方或下方的第二中间向量,该第二中间向量与第一坐标轴通常可以组成了多个方向的平面,具体可以从多个方向的平面中找到竖直平面,进而可以将竖直平面对
应的第二中间向量确定为第二目标向量,示例性的如图4所示的y轴。
63.示例性的,上述三维坐标系也可以是如图6所示三维坐标轴,上述第一目标向量为图6中的rightvec,上述第二目标向量为upvec。可以理解的是,上述水平平面与竖直平面相互垂直,第一目标向量与第二目标向量相互垂直,根据第一目标向量和第二目标向量,可以确定第二坐标轴(比如图4中的x轴)和第三坐标轴(比如图4中的y轴)。
64.具体的,可以设定垂直于眼球朝向的第一目标向量为右向量rightvec,第二目标向量为竖直向量upvec,用于计算光斑贴图旋转的角度。通过代码可以表示为:float3 rightvec=float3(1.0f,0.0f,0.0f);float3 upvec=float3(0.0f,1.0f,0.0f)。
65.上述步骤23中,根据第一目标向量和第二目标向量确定第二坐标轴和第三坐标轴的步骤,一种可能的实施方式:
66.将第一目标向量的向量方向确定为第二坐标轴的正方向;将第二目标向量的向量方向确定为第三坐标轴的正方向;其中,第一目标向量的向量方向在眼球朝向的右侧或左侧,第二目标向量的向量方向在眼球朝向的上方或下方。
67.实际实现时,将眼球朝向设定为第一坐标轴(比如图4中的z轴)的正方向。根据从位于第一坐标轴的正方向的左侧或右侧的第一中间向量得到的第一目标向量的向量方向,确定第二坐标轴(比如x轴)的正方向,由于第一目标向量的向量方向在眼球朝向的右侧或左侧,因此,第二坐标轴(比如图4中的x轴)的正方向在眼球朝向的右侧或左侧。根据位于第一坐标轴的正方向的上方或下方的第二中间向量得到的第二目标向量的向量方向,确定第三坐标轴(比如图4中的y轴)的正方向,由于第二目标向量的向量方向在眼球朝向的上方或下方,因此,第三坐标轴(比如图4中的y轴)的正方向在眼球朝向的上方或下方。
68.根据上述步骤s304,确定光照方向在三维坐标系的指定坐标平面上的投影向量的步骤,一种可能的实施方式:
69.确定光照方向在三维坐标系的第一坐标平面上的第一投影向量;第一坐标平面由三维坐标系的第一坐标轴和第二坐标轴组成;确定光照方向在三维坐标系的第二坐标平面上的第二投影向量;第二坐标平面由三维坐标系的第二坐标轴和第三坐标轴组成。
70.上述第一投影向量通常是指光照方向在三维坐标系的第一坐标平面(由三维坐标系的第一坐标轴和第二坐标轴组成的平面)上的投影向量。上述第二投影向量通常是指光照方向在三维坐标系的第二坐标平面(由三维坐标系的第二坐标轴和第三坐标轴组成的平面)上的投影向量。
71.示例性的,如图7中的(a)所示,以三维坐标系的第一坐标轴为z轴,第二坐标轴为x轴,第三坐标轴为y轴为例进行说明,则第一坐标平面为第一坐标轴和第二坐标轴组成的xz平面,第二坐标平面为第二坐标轴和第三坐标轴组成的xy平面。根据光照方向,如图7中的(a)所示的light向量(该光照方向是从眼睛的右上方射入眼球模型的),可以确定光照方向在第一坐标平面(xz平面)上的第一投影向量,如图7中的(a)所示的light_xz向量,以及光照方向在第二坐标平面(xy平面)上的第二投影向量,如图7中的(a)所示的light_xy向量。
72.由于图7中的(a)为三维图像,将该三维图像转换为二维图像,如图7中的(b)所示的xz平面,以及第一投影向量light_xz;如图7中的(c)所示的xy平面,以及第二投影向量light_xy。
73.具体的,可以设定光照方向在第一坐标平面xz平面,和第二坐标平面xy平面上的
第一投影向量为light_xz和第二投影向量为light_xy。通过代码可以表示为:float3 light_xz=float3(1.x,0.0f,1.z);float3light_xy=float3(1.x,1.b,0.0f)。
74.由前述可知,投影向量包括第一投影向量和第二投影向量;指定坐标轴包括第二坐标轴和第三坐标轴;根据上述步骤s106,确定投影向量和三维坐标系的指定坐标轴之间的目标夹角信息的步骤,一种可能的实施方式:
75.计算第一投影向量与第二坐标轴的第一夹角信息,计算第二投影向量与第三坐标轴的第二夹角信息;根据第一夹角信息更新第二夹角信息,得到目标夹角信息。
76.上述第一夹角信息通常指的是第一投影向量与第二坐标轴的夹角信息,用角度或弧度表示。上述第二夹角信息通常指的是第二投影向量与第三坐标轴的夹角信息,用角度或弧度表示。
77.示例性的,如图7所示,计算第一投影向量light_xz与第二坐标轴(x轴)的第一夹角信息angle_xz。计算第二投影向量light_xy与第三坐标轴(y轴)的第二夹角信息angle_xy。根据第一夹角信息,对第二夹角信息进行更新,更新后的第二夹角信息可以与原来的第二夹角信息相同,也可以对原来的第二夹角信息进行和差运算,将更新后的第二夹角信息确定为目标夹角信息,即光斑贴图的旋转角度。
78.其中,计算第一夹角信息的目的是确认光照方向的射入方向,比如光照是从眼睛朝向的左侧还是右侧射入,然后根据射入方向和第二夹角信息的大小,确定第二夹角信息的更新方式,即可得到上述目标夹角信息。
79.该方式中,通过计算得到的第一夹角信息,对第二夹角信息进行更新,得到目标夹角信息,进而可以确定光斑贴图的旋转的角度,使旋转后的光斑贴图中的光斑更加适合当前的光照方向,进一步提高了眼球模型的光斑效果。
80.上述计算第一投影向量与第二坐标轴的第一夹角信息,计算第二投影向量与第三坐标轴的第二夹角信息的步骤,一种可能的实施方式:
81.计算第一投影向量与第二坐标轴的正方向的第一夹角信息,计算第二投影向量与第三坐标轴的正方向的第二夹角信息。
82.示例性的,如图7所示,第一夹角信息angle_xz为第一投影向量light_xz与第二坐标轴(x轴)的正方向的夹角或夹角对应的弧度值,第二夹角信息angle_x为第二投影向量light_xy与第三坐标轴(y轴)的正方向的夹角或夹角对应的弧度值。其中,如果角度为0度,则对应的弧度值为0,如果角度为180度,则对应的弧度值为1,如果角度为90度,则对应的弧度值为0.5。
83.其中,计算第一夹角信息的目的是确认光照方向的射入方向,比如第一夹角信息如果大于0.5,即第一投影向量与x轴正方向的角度大于90度,则说明,光照是从眼睛朝向的左侧射入。计算第二夹角信息的目的是,确定光斑贴图的旋转角度。具体的确定方式,通常与坐标系的建立、第一夹角信息的大小,以及第二夹角信息的大小相关。
84.通过下述代码可以得到上述第一夹角信息和第二夹角信息,其中light_xz与rightvec之间的第一夹角信息angle_xz用于判断光照方向相对于眼球朝向的左右位置,light_xy与upvec则用于后续控制旋转光斑贴图的uv。具体的实现代码如下:
85.function anglebetweenvectors(light_xz,rightvec)out(float3angle_xz);
86.function anglebetweenvectors(light_xy,upvec)out(float3angle_xy)。
87.其中,function函数anglebetweenvectors是用于计算传入眼球材质的light_xz和rightvec,light_xy和upvec之间夹角信息的函数,输出的值为夹角信息对应的弧度值(1弧度=180角度),代码如下:
[0088][0089]
上述根据第一夹角信息更新第二夹角信息,得到目标夹角信息的步骤,一种可能的实施方式:
[0090]
步骤a,根据第一夹角信息确定光照方向相对于眼球朝向的左右位置;
[0091]
步骤b,根据左右位置更新第二夹角信息,得到目标夹角信息。
[0092]
具体的,可以根据第一夹角信息的角度大小,确定光照方向相对于眼球朝向的左右位置。示例性的,如图7所示的坐标系,如果第一夹角信息小于90度,或者第一夹角信息小于0.5,则说明光照方向相对于眼球朝向的右侧位置,即光照从眼睛朝向的右侧射入。如果第一夹角信息大于90度,或者第一夹角信息大于0.5,则说明光照方向相对于眼球朝向的左侧位置,即光照从眼睛朝向的左侧射入。在确定光照方向相对于眼球朝向的左右位置后,根据左右位置更新第二夹角信息,进而将更新后的第二夹角信息确定为目标夹角信息。
[0093]
该方式中,通过根据第一夹角信息确定光照方向相对于眼球朝向的左右位置,进而更新第二夹角信息来得到目标夹角信息,提高了确定光照方向相对于眼球朝向的左右位置的精确度,进一步提高了眼球模型的光斑效果。
[0094]
根据上述步骤a,根据第一夹角信息确定光照方向相对于眼球朝向的左右位置的步骤,一种可能的实施方式:
[0095]
如果第二坐标轴的正方向在眼球朝向的右侧,且第一夹角信息满足预设条件,确定光照方向在眼球朝向的右侧位置;如果第二坐标轴的正方向在眼球朝向的右侧,且第一夹角信息不满足预设条件,确定光照方向在眼球朝向的左侧位置。
[0096]
上述预设条件为,第一夹角信息小于90度,或小于0.5。
[0097]
示例性的,如图7所示,第二坐标轴(x轴)的正方向在眼球朝向(z轴的正方向)的右侧,且第一夹角信息angle_xz小于90度,或小于0.5,确定光照方向在眼球朝向的右侧位置。
[0098]
示例性的,如图8所示,第二坐标轴(x轴)的正方向在眼球朝向(z轴的正方向)的右侧,且第一夹角信息angle_xz大于90度,或大于0.5,确定光照方向在眼球朝向的左侧位置。
[0099]
另一种可能的实施方式:
[0100]
如果第二坐标轴的正方向在眼球朝向的左侧,且第一夹角信息满足预设条件,确定光照方向在眼球朝向的左侧位置;如果第二坐标轴的正方向在眼球朝向的左侧,且第一
夹角信息不满足预设条件,确定光照方向在眼球朝向的右侧位置。
[0101]
示例性的,如图9所示,第二坐标轴(x轴)的正方向在眼球朝向(z轴的正方向)的左侧,且第一夹角信息angle_xz小于90度,或小于0.5,确定光照方向在眼球朝向的左侧位置。
[0102]
示例性的,如图10所示,第二坐标轴(x轴)的正方向在眼球朝向(z轴的正方向)的左侧,且第一夹角信息angle_xz大于90度,或大于0.5,确定光照方向在眼球朝向的右侧位置。
[0103]
上述步骤b中,根据左右位置更新第二夹角信息,得到目标夹角信息的步骤,一种可能的实施方式:
[0104]
(1)如果光照方向相对于眼球朝向的左右位置为光照方向在眼球朝向的右侧位置,且,第三坐标轴的正方向在眼球朝向的上方,计算第一数值减去第二夹角信息的差值,得到目标夹角信息;
[0105]
上述第一数值通常指的是180度,或者弧度值1。示例性的,如图7所示,光照方向相对于眼球朝向的左右位置为光照方向在眼球朝向的右侧位置(光照从眼球朝向的右上角的方向射入),且,第三坐标轴的正方向在眼球朝向的上方。示例性的,如图7中的(b)所示,如果此时计算得到的第二夹角信息小于90度,比如45度,或弧度值0.25,计算1-0.25=0.75,或者计算180
°‑
45
°
=135
°
。得到目标夹角信息为135度。然后控制光斑贴图顺时针旋转135度。
[0106]
示例性的,如图11中的(b)可知,光照方向相对于眼球朝向的左右位置为光照方向在眼球朝向的右侧位置(图11中的(a)所示,光照从眼球朝向的右下角的方向射入),且,第三坐标轴的正方向在眼球朝向的上方。如图11中的(c)所示,此时计算得到的第二夹角信息angle_xy为135度,或弧度值0.75,计算1-0.75=0.25,或者计算180
°‑
135
°
=45
°
。得到目标夹角信息为45度。如图11中的(a)所示,控制光斑贴图顺时针旋转45度。
[0107]
(2)如果光照方向相对于眼球朝向的左右位置为光照方向在眼球朝向的左侧位置,且,第三坐标轴的正方向在眼球朝向的上方,计算第一数值加上第二夹角信息的和值,得到目标夹角信息。
[0108]
示例性的,如图12中的(b)可知,光照方向相对于眼球朝向的左右位置为光照方向在眼球朝向的左侧位置(图12中的(a)所示,光照从眼球朝向的左下角的方向射入),且,第三坐标轴的正方向在眼球朝向的上方。如图12中的(c)所示,此时计算得到的第二夹角信息为角度值135度,或弧度值0.75,计算1+0.75=1.75,或者计算180
°
+135
°
=315
°
。得到目标夹角信息为315度。如图12中的(a)所示,控制光斑贴图顺时针旋转315度。
[0109]
示例性的,如图13中的(b)可知,光照方向相对于眼球朝向的左右位置为光照方向在眼球朝向的左侧位置(图12中的(a)所示,光照从眼球朝向的左上角的方向射入),且,第三坐标轴的正方向在眼球朝向的上方。如图12中的(c)所示,此时计算得到的第二夹角信息为角度值45度,或弧度值0.25,计算1+0.25=1.25,或者计算180
°
+45
°
=225
°
。得到目标夹角信息为225度。如图13中的(a)所示,控制光斑贴图顺时针旋转225度。
[0110]
另一种可能的实施方式:
[0111]
(1)如果光照方向相对于眼球朝向的左右位置为光照方向在眼球朝向的右侧位置,且,第三坐标轴的正方向在眼球朝向的下方,将第二夹角信息确定为目标夹角信息;
[0112]
示例性的,如图14中的(b)可知,光照方向相对于眼球朝向的左右位置为光照方向
在眼球朝向的右侧位置(比如,如图14中的(a)所示的,光照从眼球朝向的右下角的方向射入),且,第三坐标轴的正方向在眼球朝向的下方。示例性的,如图14中的(c),此时得到的第二夹角信息angle_xy=45度,可以直接将第二夹角信息angle_xy确定为目标夹角信息。然后控制光斑贴图顺时针旋转目标夹角信息的角度值。
[0113]
(2)如果光照方向相对于眼球朝向的左右位置为光照方向在眼球朝向的左侧位置,且,第三坐标轴的正方向在眼球朝向的下方,计算第二数值减去第二夹角信息的差值,得到目标夹角信息;其中,第二数值为第一数值的两倍。
[0114]
上述第二数值通常指的是360度,或者弧度值2。示例性的,如图15中的(b)可知,光照方向相对于眼球朝向的左右位置为光照方向在眼球朝向的左侧位置(比如,如图15中的(a)所示的,光照从眼球朝向的左上角的方向射入),且,第三坐标轴的正方向在眼球朝向的下方。示例性的,如图14中的(c),此时计算得到的第二夹角信息angle_xy=135度,计算360度减去第二夹角信息angle_xy的角度值,或者计算2减去第二夹角信息angle_xy的弧度值,得到目标夹角信息。即,360
°‑
135
°
=225
°
,或者2-0.75=1.25。然后控制光斑贴图顺时针旋转目标夹角信息的角度值。。
[0115]
具体的,以第二坐标轴位于眼球朝向右侧,可以通过下述代码实现,对第一夹角信息angle_xz的判断,同时根据判断结果,通过第二夹角信息计算目标夹角信息。
[0116][0117][0118]
根据上述步骤s108,基于目标夹角信息对预设的光斑贴图进行旋转处理,将旋转后的光斑贴图渲染至眼球模型,得到具有眼球光斑效果的眼球模型的步骤,一种可能的实施方式:
[0119]
以光斑贴图的贴图中心为旋转中心,以目标夹角信息为旋转角度,控制光斑贴图按照顺时针的方向旋转该旋转角度,得到目标光斑贴图;其中,光斑贴图包括光斑形状,光斑形状位于光斑贴图中的指定位置,指定位置与贴图中心距离与瞳孔的半径相同;将目标光斑贴图渲染至眼球模型,得到具有眼球光斑效果的眼球模型。
[0120]
上述目标光斑贴图通常指的是对于包括光斑形状的光斑贴图进行旋转处理后得到的光斑贴图。如图3所示,光斑贴图包括光斑形状,该光斑形状位于光斑贴图中的指定位置,指定位置与贴图中心的距离与瞳孔的半径相同,该指定位置位于光斑贴图的下方。
[0121]
实际上,光斑贴图为uv贴图,可以将旋转得到的uv贴图传入采样函数中对光斑贴图进采样,然后与眼球的其他效果进行结合,即可得到具有眼球光斑效果的眼球模型。示例性的,从眼球模型的角度来看,如图11中的(a)所示,光照方向位于眼球模型的右下角,此时,光斑位于眼球模型的右下角,光照效果位于眼球模型的左上角,如图12中的(a)所示,光照方向位于眼球模型的左下角,此时,光斑位于眼球模型的左下角,光照效果位于眼球模型的右上角,如图13中的(a)所示,光照方向位于眼球模型的左上角,此时,光斑位于眼球模型的左上角,光照效果位于眼球模型的右下角。
[0122]
进一步的,结合具体代码进行说明:
[0123]
customrotator函数是一个旋转光斑贴图的uv(u,v纹理贴图坐标的简称)的函数,通过传入光斑贴图的旋转中心、旋转角度和需要旋转的uv来计算得到旋转后的uv。代码如下:
[0124]
function customrotator(float2(0.5f,0.5f)),rotateangle,uv_iris)out(float2 uv_rotate);
[0125]
其中,使用customrotator函数的详细代码如下:
[0126][0127]
最后,将得到的uv传入采样函数中对贴图进行采样,然后与眼球模型的其他效果进行结合。代码如下:
[0128]
lowp float4 limbus=sample(tex0,uv_rotate);
[0129]
该方式中,通过对光斑贴图进行旋转处理,再渲染至眼球模型,可以得到眼球在不同光照方向上的光斑效果,进一步提高了光斑效果的真实性。
[0130]
对于上述方法实施例,参见图16所示的一种眼球光斑的渲染装置,该装置包括:
[0131]
三维坐标系确定模块161,用于获取虚拟对象的眼球模型,基于眼球模型的眼球朝向,确定三维坐标系;
[0132]
投影向量确定模块162,用于获取射入眼球模型的光照方向,确定光照方向在三维坐标系的指定坐标平面上的投影向量;
[0133]
目标夹角信息确定模块163,用于确定投影向量与三维坐标系的指定坐标轴之间的目标夹角信息;
[0134]
渲染模块164,用于基于目标夹角信息对预设的光斑贴图进行旋转处理,将旋转后的光斑贴图渲染至眼球模型,得到具有眼球光斑效果的眼球模型。
[0135]
上述眼球光斑的渲染装置,获取虚拟对象的眼球模型,基于眼球模型的眼球朝向,确定三维坐标系;获取射入眼球模型的光照方向,确定光照方向在三维坐标系的指定坐标平面上的投影向量;确定投影向量与三维坐标系的指定坐标轴之间的目标夹角信息;基于目标夹角信息对预设的光斑贴图进行旋转处理,将旋转后的光斑贴图渲染至眼球模型,得到具有眼球光斑效果的眼球模型。该方式中,通过光照方向和眼球朝向,可以确定预设的光斑贴图在不同光照下的旋转角度,通过一次贴图采样即可得到具有光斑效果的眼球模型,使得眼睛的光斑能够随着光照方向的改变而改变,实现过程简单,降低了对运行设备的性能消耗,提高了眼球光斑的渲染效果。
[0136]
上述三维坐标系确定模块,还用于:将眼球朝向确定为第一坐标轴的正方向;其中,第一坐标轴的正方向为眼球模型的球心指向眼球模型表面瞳孔的中心的方向;确定与眼球朝向垂直的多个向量,根据多个向量确定第二坐标轴和第三坐标轴;其中,多个向量之间相互垂直;根据第一坐标轴、第二坐标轴,和第三坐标轴,确定三维坐标系。
[0137]
上述三维坐标系确定模块,还用于:获取多个向量中,位于第一坐标轴的正方向的左侧或右侧的第一中间向量;从第一中间向量中获取与第一坐标轴组成的平面为水平平面的第一目标向量;获取多个向量中,位于第一坐标轴的正方向的上方或下方的第二中间向量;从第二中间向量中获取与第一坐标轴组成的平面为竖直平面的第二目标向量;水平平面与竖直平面相互垂直;根据第一目标向量和第二目标向量确定第二坐标轴和第三坐标轴。
[0138]
上述三维坐标系确定模块,还用于:将第一目标向量的向量方向确定为第二坐标轴的正方向;将第二目标向量的向量方向确定为第三坐标轴的正方向;其中,第一目标向量的向量方向在眼球朝向的右侧或左侧,第二目标向量的向量方向在眼球朝向的上方或下方。
[0139]
上述投影向量确定模块,还用于:确定光照方向在三维坐标系的第一坐标平面上的第一投影向量;第一坐标平面由三维坐标系的第一坐标轴和第二坐标轴组成;确定光照方向在三维坐标系的第二坐标平面上的第二投影向量;第二坐标平面由三维坐标系的第二坐标轴和第三坐标轴组成。
[0140]
上述投影向量包括第一投影向量和第二投影向量;指定坐标轴包括第二坐标轴和第三坐标轴;上述目标夹角信息确定模块,还用于:计算第一投影向量与第二坐标轴的第一夹角信息,计算第二投影向量与第三坐标轴的第二夹角信息;根据第一夹角信息更新第二夹角信息,得到目标夹角信息。
[0141]
上述目标夹角信息确定模块,还用于:计算第一投影向量与第二坐标轴的正方向
的第一夹角信息,计算第二投影向量与第三坐标轴的正方向的第二夹角信息。
[0142]
上述目标夹角信息确定模块,还用于:根据第一夹角信息确定光照方向相对于眼球朝向的左右位置;根据左右位置更新第二夹角信息,得到目标夹角信息。
[0143]
上述目标夹角信息确定模块,还用于:如果第二坐标轴的正方向在眼球朝向的右侧,且第一夹角信息满足预设条件,确定光照方向在眼球朝向的右侧位置;如果第二坐标轴的正方向在眼球朝向的右侧,且第一夹角信息不满足预设条件,确定光照方向在眼球朝向的左侧位置。
[0144]
上述目标夹角信息确定模块,还用于:如果第二坐标轴的正方向在眼球朝向的左侧,且第一夹角信息满足预设条件,确定光照方向在眼球朝向的左侧位置;如果第二坐标轴的正方向在眼球朝向的左侧,且第一夹角信息不满足预设条件,确定光照方向在眼球朝向的右侧位置。
[0145]
上述目标夹角信息确定模块,还用于:如果光照方向相对于眼球朝向的左右位置为光照方向在眼球朝向的右侧位置,且,第三坐标轴的正方向在眼球朝向的上方,计算第一数值减去第二夹角信息的差值,得到目标夹角信息;如果光照方向相对于眼球朝向的左右位置为光照方向在眼球朝向的左侧位置,且,第三坐标轴的正方向在眼球朝向的上方,计算第一数值加上第二夹角信息的和值,得到目标夹角信息。
[0146]
上述目标夹角信息确定模块,还用于:如果光照方向相对于眼球朝向的左右位置为光照方向在眼球朝向的右侧位置,且,第三坐标轴的正方向在眼球朝向的下方,将第二夹角信息确定为目标夹角信息;如果光照方向相对于眼球朝向的左右位置为光照方向在眼球朝向的左侧位置,且,第三坐标轴的正方向在眼球朝向的下方,计算第二数值减去第二夹角信息的差值,得到目标夹角信息;其中,第二数值为第一数值的两倍。
[0147]
上述渲染模块,还用于:以光斑贴图的贴图中心为旋转中心,以目标夹角信息为旋转角度,控制光斑贴图按照顺时针的方向旋转上述旋转角度,得到目标光斑贴图;其中,光斑贴图包括光斑形状,光斑形状位于光斑贴图中的指定位置,指定位置与贴图中心距离与瞳孔的半径相同;将目标光斑贴图渲染至眼球模型,得到具有眼球光斑效果的眼球模型。
[0148]
本发明实施例提供的眼球光斑的渲染装置,与上述实施例提供的眼球光斑的渲染方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。
[0149]
本实施例还提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述资源处理方法。该电子设备可以是服务器,也可以是终端设备。
[0150]
参见图17所示,该电子设备包括处理器100和存储器101,该存储器101存储有能够被处理器100执行的机器可执行指令,该处理器100执行机器可执行指令以实现上述眼球光斑的渲染方法,该方法包括以下步骤:
[0151]
获取虚拟对象的眼球模型,基于眼球模型的眼球朝向,确定三维坐标系;获取射入眼球模型的光照方向,确定光照方向在三维坐标系的指定坐标平面上的投影向量;确定投影向量与三维坐标系的指定坐标轴之间的目标夹角信息;基于目标夹角信息对预设的光斑贴图进行旋转处理,将旋转后的光斑贴图渲染至眼球模型,得到具有眼球光斑效果的眼球模型。该方式中,通过光照方向和眼球朝向,可以确定预设的光斑贴图在不同光照下的旋转角度,通过一次贴图采样即可得到具有光斑效果的眼球模型,使得眼睛的光斑能够随着光
照方向的改变而改变,实现过程简单,降低了对运行设备的性能消耗,提高了眼球光斑的渲染效果。
[0152]
上述基于眼球模型的眼球朝向,确定三维坐标系的步骤,包括:将眼球朝向确定为第一坐标轴的正方向;其中,第一坐标轴的正方向为眼球模型的球心指向眼球模型表面瞳孔的中心的方向;确定与眼球朝向垂直的多个向量,根据多个向量确定第二坐标轴和第三坐标轴;其中,多个向量之间相互垂直;根据第一坐标轴、第二坐标轴,和第三坐标轴,确定三维坐标系。该方式中,将眼球朝向确定为第一坐标轴,然后基于眼球朝向确定与第一坐标轴垂直,且相互垂直的第二坐标轴和的第三坐标轴,确定的三维坐标系,能够更加精确的确定光照信息,进而可以提高眼球模型中光斑位置的精确度。
[0153]
上述确定与眼球朝向垂直的多个向量,根据多个向量确定第二坐标轴和第三坐标轴的步骤,包括:获取多个向量中,位于第一坐标轴的正方向的左侧或右侧的第一中间向量;从第一中间向量中获取与第一坐标轴组成的平面为水平平面的第一目标向量;获取多个向量中,位于第一坐标轴的正方向的上方或下方的第二中间向量;从第二中间向量中获取与第一坐标轴组成的平面为竖直平面的第二目标向量;水平平面与竖直平面相互垂直;根据第一目标向量和第二目标向量确定第二坐标轴和第三坐标轴。
[0154]
上述根据第一目标向量和第二目标向量确定第二坐标轴和第三坐标轴的步骤,包括:将第一目标向量的向量方向确定为第二坐标轴的正方向;将第二目标向量的向量方向确定为第三坐标轴的正方向;其中,第一目标向量的向量方向在眼球朝向的右侧或左侧,第二目标向量的向量方向在眼球朝向的上方或下方。
[0155]
上述确定光照方向在三维坐标系的指定坐标平面上的投影向量的步骤,包括:确定光照方向在三维坐标系的第一坐标平面上的第一投影向量;第一坐标平面由三维坐标系的第一坐标轴和第二坐标轴组成;确定光照方向在三维坐标系的第二坐标平面上的第二投影向量;第二坐标平面由三维坐标系的第二坐标轴和第三坐标轴组成。
[0156]
上述投影向量包括第一投影向量和第二投影向量;指定坐标轴包括第二坐标轴和第三坐标轴;确定投影向量和三维坐标系的指定坐标轴之间的目标夹角信息的步骤,包括:计算第一投影向量与第二坐标轴的第一夹角信息,计算第二投影向量与第三坐标轴的第二夹角信息;根据第一夹角信息更新第二夹角信息,得到目标夹角信息。该方式中,通过计算得到的第一夹角信息,对第二夹角信息进行更新,得到目标夹角信息,进而可以确定光斑贴图的旋转的角度,使旋转后的光斑贴图中的光斑更加适合当前的光照方向,进一步提高了眼球模型的光斑效果。
[0157]
上述计算第一投影向量与第二坐标轴的第一夹角信息,计算第二投影向量与第三坐标轴的第二夹角信息的步骤,包括:计算第一投影向量与第二坐标轴的正方向的第一夹角信息,计算第二投影向量与第三坐标轴的正方向的第二夹角信息。
[0158]
上述根据第一夹角信息更新第二夹角信息,得到目标夹角信息的步骤,包括:根据第一夹角信息确定光照方向相对于眼球朝向的左右位置;根据左右位置更新第二夹角信息,得到目标夹角信息。该方式中,通过根据第一夹角信息确定光照方向相对于眼球朝向的左右位置,进而更新第二夹角信息来得到目标夹角信息,提高了确定光照方向相对于眼球朝向的左右位置的精确度,进一步提高了眼球模型的光斑效果。
[0159]
上述根据第一夹角信息确定光照方向相对于眼球朝向的左右位置的步骤,包括:
如果第二坐标轴的正方向在眼球朝向的右侧,且第一夹角信息满足预设条件,确定光照方向在眼球朝向的右侧位置;如果第二坐标轴的正方向在眼球朝向的右侧,且第一夹角信息不满足预设条件,确定光照方向在眼球朝向的左侧位置。
[0160]
上述根据第一夹角信息确定光照方向相对于眼球朝向的左右位置的步骤,包括:如果第二坐标轴的正方向在眼球朝向的左侧,且第一夹角信息满足预设条件,确定光照方向在眼球朝向的左侧位置;如果第二坐标轴的正方向在眼球朝向的左侧,且第一夹角信息不满足预设条件,确定光照方向在眼球朝向的右侧位置。
[0161]
上述根据左右位置更新第二夹角信息,得到目标夹角信息的步骤,包括:如果光照方向相对于眼球朝向的左右位置为光照方向在眼球朝向的右侧位置,且,第三坐标轴的正方向在眼球朝向的上方,计算第一数值减去第二夹角信息的差值,得到目标夹角信息;如果光照方向相对于眼球朝向的左右位置为光照方向在眼球朝向的左侧位置,且,第三坐标轴的正方向在眼球朝向的上方,计算第一数值加上第二夹角信息的和值,得到目标夹角信息。
[0162]
上述根据左右位置更新第二夹角信息,得到目标夹角信息的步骤,包括:如果光照方向相对于眼球朝向的左右位置为光照方向在眼球朝向的右侧位置,且,第三坐标轴的正方向在眼球朝向的下方,将第二夹角信息确定为目标夹角信息;如果光照方向相对于眼球朝向的左右位置为光照方向在眼球朝向的左侧位置,且,第三坐标轴的正方向在眼球朝向的下方,计算第二数值减去第二夹角信息的差值,得到目标夹角信息;其中,第二数值为第一数值的两倍。
[0163]
上述基于目标夹角信息对预设的光斑贴图进行旋转处理,将旋转后的光斑贴图渲染至眼球模型,得到具有眼球光斑效果的眼球模型的步骤,包括:以光斑贴图的贴图中心为旋转中心,以目标夹角信息为旋转角度,控制光斑贴图按照顺时针的方向旋转该旋转角度,得到目标光斑贴图;其中,光斑贴图包括光斑形状,光斑形状位于光斑贴图中的指定位置,指定位置与贴图中心距离与瞳孔的半径相同;将目标光斑贴图渲染至眼球模型,得到具有眼球光斑效果的眼球模型。该方式中,通过对光斑贴图进行旋转处理,再渲染至眼球模型,可以得到眼球在不同光照方向上的光斑效果,进一步提高了光斑效果的真实性。
[0164]
进一步地,图17所示的电子设备还包括总线102和通信接口103,处理器100、通信接口103和存储器101通过总线102连接。
[0165]
其中,存储器101可能包含高速随机存取存储器(ram,random access memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图17中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
[0166]
处理器100可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器100中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器100可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processor,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或
者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器101,处理器100读取存储器101中的信息,结合其硬件完成前述实施例的方法的步骤。
[0167]
本实施例还提供一种机器可读存储介质,机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述眼球光斑的渲染方法。该方法包括以下步骤:
[0168]
获取虚拟对象的眼球模型,基于眼球模型的眼球朝向,确定三维坐标系;获取射入眼球模型的光照方向,确定光照方向在三维坐标系的指定坐标平面上的投影向量;确定投影向量与三维坐标系的指定坐标轴之间的目标夹角信息;基于目标夹角信息对预设的光斑贴图进行旋转处理,将旋转后的光斑贴图渲染至眼球模型,得到具有眼球光斑效果的眼球模型。该方式中,通过光照方向和眼球朝向,可以确定预设的光斑贴图在不同光照下的旋转角度,通过一次贴图采样即可得到具有光斑效果的眼球模型,使得眼睛的光斑能够随着光照方向的改变而改变,实现过程简单,降低了对运行设备的性能消耗,提高了眼球光斑的渲染效果。
[0169]
上述基于眼球模型的眼球朝向,确定三维坐标系的步骤,包括:将眼球朝向确定为第一坐标轴的正方向;其中,第一坐标轴的正方向为眼球模型的球心指向眼球模型表面瞳孔的中心的方向;确定与眼球朝向垂直的多个向量,根据多个向量确定第二坐标轴和第三坐标轴;其中,多个向量之间相互垂直;根据第一坐标轴、第二坐标轴,和第三坐标轴,确定三维坐标系。该方式中,将眼球朝向确定为第一坐标轴,然后基于眼球朝向确定与第一坐标轴垂直,且相互垂直的第二坐标轴和的第三坐标轴,确定的三维坐标系,能够更加精确的确定光照信息,进而可以提高眼球模型中光斑位置的精确度。
[0170]
上述确定与眼球朝向垂直的多个向量,根据多个向量确定第二坐标轴和第三坐标轴的步骤,包括:获取多个向量中,位于第一坐标轴的正方向的左侧或右侧的第一中间向量;从第一中间向量中获取与第一坐标轴组成的平面为水平平面的第一目标向量;获取多个向量中,位于第一坐标轴的正方向的上方或下方的第二中间向量;从第二中间向量中获取与第一坐标轴组成的平面为竖直平面的第二目标向量;水平平面与竖直平面相互垂直;根据第一目标向量和第二目标向量确定第二坐标轴和第三坐标轴。
[0171]
上述根据第一目标向量和第二目标向量确定第二坐标轴和第三坐标轴的步骤,包括:将第一目标向量的向量方向确定为第二坐标轴的正方向;将第二目标向量的向量方向确定为第三坐标轴的正方向;其中,第一目标向量的向量方向在眼球朝向的右侧或左侧,第二目标向量的向量方向在眼球朝向的上方或下方。
[0172]
上述确定光照方向在三维坐标系的指定坐标平面上的投影向量的步骤,包括:确定光照方向在三维坐标系的第一坐标平面上的第一投影向量;第一坐标平面由三维坐标系的第一坐标轴和第二坐标轴组成;确定光照方向在三维坐标系的第二坐标平面上的第二投影向量;第二坐标平面由三维坐标系的第二坐标轴和第三坐标轴组成。
[0173]
上述投影向量包括第一投影向量和第二投影向量;指定坐标轴包括第二坐标轴和第三坐标轴;确定投影向量和三维坐标系的指定坐标轴之间的目标夹角信息的步骤,包括:计算第一投影向量与第二坐标轴的第一夹角信息,计算第二投影向量与第三坐标轴的第二夹角信息;根据第一夹角信息更新第二夹角信息,得到目标夹角信息。该方式中,通过计算得到的第一夹角信息,对第二夹角信息进行更新,得到目标夹角信息,进而可以确定光斑贴图的旋转的角度,使旋转后的光斑贴图中的光斑更加适合当前的光照方向,进一步提高了眼球模型的光斑效果。
[0174]
上述计算第一投影向量与第二坐标轴的第一夹角信息,计算第二投影向量与第三坐标轴的第二夹角信息的步骤,包括:计算第一投影向量与第二坐标轴的正方向的第一夹角信息,计算第二投影向量与第三坐标轴的正方向的第二夹角信息。
[0175]
上述根据第一夹角信息更新第二夹角信息,得到目标夹角信息的步骤,包括:根据第一夹角信息确定光照方向相对于眼球朝向的左右位置;根据左右位置更新第二夹角信息,得到目标夹角信息。该方式中,通过根据第一夹角信息确定光照方向相对于眼球朝向的左右位置,进而更新第二夹角信息来得到目标夹角信息,提高了确定光照方向相对于眼球朝向的左右位置的精确度,进一步提高了眼球模型的光斑效果。
[0176]
上述根据第一夹角信息确定光照方向相对于眼球朝向的左右位置的步骤,包括:如果第二坐标轴的正方向在眼球朝向的右侧,且第一夹角信息满足预设条件,确定光照方向在眼球朝向的右侧位置;如果第二坐标轴的正方向在眼球朝向的右侧,且第一夹角信息不满足预设条件,确定光照方向在眼球朝向的左侧位置。
[0177]
上述根据第一夹角信息确定光照方向相对于眼球朝向的左右位置的步骤,包括:如果第二坐标轴的正方向在眼球朝向的左侧,且第一夹角信息满足预设条件,确定光照方向在眼球朝向的左侧位置;如果第二坐标轴的正方向在眼球朝向的左侧,且第一夹角信息不满足预设条件,确定光照方向在眼球朝向的右侧位置。
[0178]
上述根据左右位置更新第二夹角信息,得到目标夹角信息的步骤,包括:如果光照方向相对于眼球朝向的左右位置为光照方向在眼球朝向的右侧位置,且,第三坐标轴的正方向在眼球朝向的上方,计算第一数值减去第二夹角信息的差值,得到目标夹角信息;如果光照方向相对于眼球朝向的左右位置为光照方向在眼球朝向的左侧位置,且,第三坐标轴的正方向在眼球朝向的上方,计算第一数值加上第二夹角信息的和值,得到目标夹角信息。
[0179]
上述根据左右位置更新第二夹角信息,得到目标夹角信息的步骤,包括:如果光照方向相对于眼球朝向的左右位置为光照方向在眼球朝向的右侧位置,且,第三坐标轴的正方向在眼球朝向的下方,将第二夹角信息确定为目标夹角信息;如果光照方向相对于眼球朝向的左右位置为光照方向在眼球朝向的左侧位置,且,第三坐标轴的正方向在眼球朝向的下方,计算第二数值减去第二夹角信息的差值,得到目标夹角信息;其中,第二数值为第一数值的两倍。
[0180]
上述基于目标夹角信息对预设的光斑贴图进行旋转处理,将旋转后的光斑贴图渲染至眼球模型,得到具有眼球光斑效果的眼球模型的步骤,包括:以光斑贴图的贴图中心为旋转中心,以目标夹角信息为旋转角度,控制光斑贴图按照顺时针的方向旋转该旋转角度,得到目标光斑贴图;其中,光斑贴图包括光斑形状,光斑形状位于光斑贴图中的指定位置,指定位置与贴图中心距离与瞳孔的半径相同;将目标光斑贴图渲染至眼球模型,得到具有
眼球光斑效果的眼球模型。该方式中,通过对光斑贴图进行旋转处理,再渲染至眼球模型,可以得到眼球在不同光照方向上的光斑效果,进一步提高了光斑效果的真实性。
[0181]
本发明实施例所提供的眼球光斑的渲染方法、装置、电子设备以及存储介质的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
[0182]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0183]
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
[0184]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0185]
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
[0186]
最后应说明的是:以上实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1