眼睛模拟方法及装置与流程

文档序号:14047210阅读:378来源:国知局
眼睛模拟方法及装置与流程

本发明涉及图像处理技术领域,具体而言,涉及一种眼睛模拟方法及装置。



背景技术:

游戏中经常需要利用光照模型去模拟一些现实中的物体。光照模型有很多种,涉及到基础色、镜面高光等。一个物体在游戏渲染中的最终光照表现是由物体的基础色、镜面高光等光照部分相加所得。

目前,在对游戏中眼睛进行模拟时,一般是通过正常的光照模型得到眼睛,但是通过上述方式模拟出的眼睛不真实。



技术实现要素:

为了克服现有技术中的上述不足,本发明所要解决的技术问题是提供一种眼睛模拟方法及装置,其能够在添加虚拟辅光后,根据添加有虚拟辅光的游戏当前环境的系数信息及颜色信息得到眼睛的最终颜色,通过该方式模拟的眼睛即使在黑暗环境下也存在高光点,且不会出现黑洞洞的现象,符合实际情况,更真实。

本发明实施例提供一种眼睛模拟方法,应用于电子设备,所述方法包括:

对添加虚拟辅光的游戏当前环境进行计算,得到当前环境的系数信息;

获得当前环境的颜色信息;

根据当前环境的所述系数信息及颜色信息得到眼睛的最终颜色,以完成眼睛模拟。

本发明实施例还提供一种眼睛模拟装置,应用于电子设备,所述装置包括:

系数获得模块,用于对添加虚拟辅光的游戏当前环境进行计算,得到当前环境的系数信息;

颜色获得模块,用于获得当前环境的颜色信息;

计算模块,用于根据当前环境的所述系数信息及颜色信息得到眼睛的最终颜色,以完成眼睛模拟。

相对于现有技术而言,本发明具有以下有益效果:

本发明实施例提供一种眼睛模拟方法及装置。所述方法应用于电子设备。对添加有虚拟辅光的游戏当前环境进行计算,获得当前环境的系数信息及颜色信息。根据所述系数信息及颜色信息得到眼睛的最终颜色,以便完成眼睛模拟。在添加虚拟辅光的情况下计算眼睛的最终颜色,通过该方式模拟出的眼睛在黑暗环境下依然存在高光点,且不会出现黑洞洞的现象,符合实际情况。

为使发明的上述目的、特征和优点能更明显易懂,下文特举本发明较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1是本发明实施例提供的电子设备的方框示意图。

图2是光照示意图。

图3是本发明实施例提供的眼睛模拟方法的流程示意图。

图4是图3中步骤s110包括的子步骤的流程示意图。

图5是图4中子步骤s112包括的子步骤的流程示意图。

图6是n·h的结果示意图。

图7是图3中步骤s120包括的子步骤的流程示意图。

图8是本发明实施例提供的眼睛模拟装置的方框示意图。

图标:100-电子设备;110-存储器;120-存储控制器;130-处理器;200-眼睛模拟装置;210-系数获得模块;220-颜色获得模块;230-计算模块。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。

请参照图1,图1是本发明实施例提供的电子设备100的方框示意图。所述电子设备100可以是,但不限于,智能手机、平板电脑、台式电脑等。所述电子设备100包括:存储器110、存储控制器120及处理器130。

所述存储器110、存储控制器120及处理器130各元件之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。存储器110中存储有眼睛模拟装置200,所述眼睛模拟装置200包括至少一个可以软件或固件(firmware)的形式存储于所述存储器110中的软件功能模块。所述处理器130通过运行存储在存储器110内的软件程序以及模块,如本发明实施例中的眼睛模拟装置200,从而执行各种功能应用以及数据处理,即实现本发明实施例中的眼睛模拟方法。

其中,所述存储器110可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。其中,存储器110用于存储程序,所述处理器130在接收到执行指令后,执行所述程序。所述处理器130以及其他可能的组件对存储器110的访问可在所述存储控制器120的控制下进行。

所述处理器130可能是一种集成电路芯片,具有信号的处理能力。上述的处理器130可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等。还可以是数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

可以理解,图1所示的结构仅为示意,电子设备100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。

请参照图2,图2是光照示意图。在游戏场景中一般只存在一道主光(比如,太阳光),而普通物体在背光(图2中的暗面)时不会出现高光现象,因此普通物体在这种情况下使用简单的光照模型进行模拟没有问题。但是,眼睛因为构造特殊,即使在背光时也会微微发亮,因此使用普通的光照模型模拟出的眼睛不真实,不符合实际情况。而通过在背光处添加一虚拟辅光则可以避免上述情况,模拟出的眼睛存在高光点。

请参照图3,图3是本发明实施例提供的眼睛模拟方法的流程示意图。所述方法应用于所述电子设备100。下面对眼睛模拟方法的具体流程进行详细阐述。

步骤s110,对添加虚拟辅光的游戏当前环境进行计算,得到当前环境的系数信息。

请参照图4,图4是图3中步骤s110包括的子步骤的流程示意图。所述系数信息包括环境光系数、漫射光系数及镜面高光系数。步骤s110可以包括子步骤s111、子步骤s112及子步骤s113。

子步骤s111,获得预先设定的主光方向,并根据采集到的虚拟相机的观察视角确定辅光方向。

在本实施例中,由于主光方向是预先配置的,因此可以通过查询配置信息得到主光方向。虚拟辅光是指真实的游戏当前环境中是没有该辅光的。接下来对辅光方向进行阐述。

假设主光方向为d1(x,y,z),其中,y表示垂直向上的方向。当辅光方向为d2(-x,y,-z)时,眼睛在背光处也会微微发亮,存在高光点,但是眼睛可能或出现两个分散的高光点。因此,若添加的虚拟辅光的方向固定,模拟出的眼睛效果依然不理想。理想效果是高光点相对集中在眼睛的中央偏上部位。

为了达到高光点相抵集中在眼睛中央的效果,可以使添加的虚拟辅光正对眼睛。眼睛在脸部、头部等有动作时会转动,因此虚拟辅光也需要转动。为了达到上述效果,根据采集的虚拟相机的观察视角(也就是,虚拟相机的方向)确定辅光方向。当眼睛离虚拟相机很近时,虚拟相机的方向就是正视眼睛的方向;当眼睛离虚拟相机很远时,眼睛表现相对模糊,也可近似认为虚拟相机的方向为正视眼睛的方向。

比如,游戏场景中有至少一个游戏角色,观察游戏角色和游戏场景时有一个对应的虚拟相机,可能是主角视角,也可能是第三方视角。在对某游戏角色的眼睛进行模拟时,则可以根据虚拟相机的方向确定辅光的方向。

子步骤s112,计算获取法线。

请参照图5,图5是图4中子步骤s112包括的子步骤的流程示意图。子步骤s112可以包括子步骤s1121及子步骤s1122。

子步骤s1121,通过眼睛模型的模型法线和眼睛模型的世界矩阵计算眼睛模型在世界坐标下的初始法线方向。

子步骤s1122,根据眼睛模型的法线贴图及所述初始法线方向计算得到法线方向。

子步骤s113,根据所述主光方向、辅光方向、法线计算获得所述环境光系数、主光下的漫射光系数、主光下的镜面高光系数、辅光下的漫射光系数、辅光下的镜面高光系数。

在本实施例中,可以通过以下方式获得所述系数信息。

ambient=1

diffuse=((n·l)<0)?0:n·l

specular=((n·l)<0)||((n·h)<0)?0:((n·h)m)

其中,ambient表示环境光系数,diffuse表示漫射光系数,n表示法线,l表示光照方向,specular表示镜面高光系数,h表示观察方向和光照方向的半角方向,m表示镜面高光指数,与眼睛的粗糙度有关。

请参照图6,图6是n·h的结果示意图。其中,n·h的结果与n和h的夹角有关,具体关系如图6所示。

通过所述主光方向、辅光方向、法线及上述表达式可获得所述环境光系数、主光下的漫射光系数、主光下的镜面高光系数、辅光下的漫射光系数、辅光下的镜面高光系数。

步骤s120,获得当前环境的颜色信息。

请参照图7,图7是图3中步骤s120包括的子步骤的流程示意图。所述颜色信息包括环境光颜色、主光颜色、辅光颜色、眼睛基础色及镜面高光颜色。步骤s120可以包括子步骤s121、子步骤s122及子步骤s123。

其中,环境光颜色是物体所处环境的环境色。基础色是物体本身颜色在光照下的颜色反应。镜面高光是指物体本身根据物体本身根据物体高光属性(比如,高光颜色、粗糙度等)在光照下的颜色反应。

子步骤s121,根据与当前环境对应的环境区域获得当前环境中的环境光颜色、主光颜色及辅光颜色。

在本实施例中,由于环境光颜色、主光颜色及辅光颜色都是预先配置的,因此可以获得当前环境的环境区域,进而根据该环境区域得到当前环境中的环境光颜色、主光颜色及辅光颜色。一般情况下,辅光颜色比主光颜色弱。

子步骤s122,根据眼睛模型的基础色贴图及纹理坐标计算得到眼睛基础色。

在本实施例中,可以根据眼睛模型的纹理坐标、纹理采样方式及纹理过滤方式从所述基础色贴图中获得对应纹理坐标的眼睛基础色。

子步骤s123,根据眼睛模型的高光贴图及纹理坐标计算得到镜面高光颜色。

在本实施例中,可以根据眼睛模型的眼睛模型的高光贴图、纹理采样方式及纹理过滤方式从所述高光贴图中获得对应纹理坐标的镜面高光颜色。

步骤s130,根据当前环境的所述系数信息及颜色信息得到眼睛的最终颜色,以完成眼睛模拟。

在本实施例中,可以根据当前环境的所述系数信息、颜色信息及预设公式计算得到眼睛的最终颜色。其中,所述预设公式为:

r=env*ambient+texdiffuse*diffuse1*light1

+texspecular*specular1*light1+texdiffuse*diffuse2*light2

+texspecular*specular2*light2

r表示最终颜色,env表示环境光颜色,texdiffuse表示眼睛基础色,diffuse1表示主光下的漫射光系数,light1表示主光颜色,texspecular表示镜面高光颜色,specular1表示主光下的镜面高光系数,diffuse2表示辅光下的漫射光系数,light2表示辅光颜色,specular2表示辅光下的镜面高光系数。

根据虚拟相机的观察视角向游戏场景中添加一虚拟辅光,获得添加虚拟辅光后当前环境的系数信息及颜色信息,进而获得眼睛的最终颜色,完成眼睛的模拟。通过该方式模拟出的眼睛即使在黑暗环境中也存在高光点,符合实际情况,不会没有高光点且黑洞洞的,因而更真实。

请参照图8,图8是本发明实施例提供的眼睛模拟装置200的方框示意图。所述眼睛模拟装置200应用于所述电子设备100。所述眼睛模拟装置200可以包括系数获得模块210、颜色获得模块220及计算模块230。

所述系数获得模块210,用于对添加虚拟辅光的游戏当前环境进行计算,得到当前环境的系数信息。

所述系数信息可以包括环境光系数、漫射光系数及镜面高光系数。所述系数获得模块210对添加虚拟辅光的游戏当前环境进行计算,得到当前环境的系数信息的方式包括:

获得预先设定的主光方向,并根据采集到的虚拟相机的观察视角确定辅光方向;

计算获取法线;

根据所述主光方向、辅光方向、法线计算获得所述环境光系数、主光下的漫射光系数、主光下的镜面高光系数、辅光下的漫射光系数、辅光下的镜面高光系数。

其中,所述系数获得模块210计算获取法线的方式包括:

通过眼睛模型的模型法线和眼睛模型的世界矩阵计算眼睛模型在世界坐标下的初始法线方向;

根据眼睛模型的法线贴图及所述初始法线方向计算得到法线方向。

在本实施例中,所述系数获得模块210用于执行图3中的步骤s110,关于所述系数获得模块210的具体描述可以参照图3中步骤s110的描述。

所述颜色获得模块220,用于获得当前环境的颜色信息。

所述颜色信息可以包括环境光颜色、主光颜色、辅光颜色、眼睛基础色及镜面高光颜色。所述颜色获得模块220获得当前环境的颜色信息的方式包括:

根据与当前环境对应的环境区域获得当前环境中的环境光颜色、主光颜色及辅光颜色;

根据眼睛模型的基础色贴图及纹理坐标计算得到眼睛基础色;

根据眼睛模型的高光贴图及纹理坐标计算得到镜面高光颜色。

其中,所述颜色获得模块220根据眼睛模型的基础色贴图及纹理坐标计算得到眼睛基础色的方式包括:

根据眼睛模型的纹理坐标、纹理采样方式及纹理过滤方式从所述基础色贴图中获得对应纹理坐标的眼睛基础色。

在本实施例中,所述颜色获得模块220用于执行图3中的步骤s120,关于所述颜色获得模块220的具体描述可以参照图3中步骤s120的描述。

所述计算模块230,用于根据当前环境的所述系数信息及颜色信息得到眼睛的最终颜色,以完成眼睛模拟。

所述计算模块230根据当前环境的所述系数信息及颜色信息得到眼睛的最终颜色,以完成眼睛模拟的方式包括:

根据当前环境的所述系数信息、颜色信息及预设公式计算得到眼睛的最终颜色;

其中,所述预设公式为:

r=env*ambient+texdiffuse*diffuse1*light1

+texspecular*specular1*light1+texdiffuse*diffuse2*light2

+texspecular*specular2*light2

r表示最终颜色,env表示环境光颜色,ambient表示环境光系数,texdiffuse表示眼睛基础色,diffuse1表示主光下的漫射光系数,light1表示主光颜色,texspecular表示镜面高光颜色,specular1表示主光下的镜面高光系数,diffuse2表示辅光下的漫射光系数,light2表示辅光颜色,specular2表示辅光下的镜面高光系数。

在本实施例中,所述计算模块230用于执行图3中的步骤s130,关于所述计算模块230的具体描述可以参照图3中步骤s130的描述。

综上所述,本发明提供一种眼睛模拟方法及装置。所述方法应用于电子设备。对添加虚拟辅光的游戏当前环境进行计算,得到当前环境的系数信息,并获得当前环境的颜色信息。根据当前环境的系数信息及颜色信息得到眼睛的最终颜色,以完成眼睛模拟。在添加虚拟辅光后,根据添加虚拟辅光的游戏当前环境的系数信息及颜色信息得到眼睛的最终颜色,通过该方式在黑暗环境下模拟出的眼睛依然存在高光点,且不会黑洞洞的,符合实际情况。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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