一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

虚拟对象渲染方法、装置、可读存储介质和电子装置与流程

2022-04-09 05:05:51 来源:中国专利 TAG:


1.本发明涉及计算机领域,具体而言,涉及一种虚拟对象渲染方法、装置、可读存储介质和电子装置。


背景技术:

2.在相关技术中,对游戏场景中的月食效果是通过模型贴图坐标(uv)的流动使黑色月亮对象覆盖原有月亮对象,从而实现月食的一个效果,但月食图像无法随着视野变化而变化,从而存在对虚拟月亮对象的月食效果进行展现的灵活性低的问题。
3.针对现有技术中对虚拟月亮对象的月食效果进行展现的灵活性低的问题,目前尚未提出有效的解决方案。


技术实现要素:

4.本发明至少部分实施例提供了一种虚拟对象渲染方法、装置、可读存储介质和电子装置,以至少解决对虚拟月亮对象的月食效果进行展现的灵活性低的技术问题。
5.为了实现上述目的,根据本发明其中一实施例,提供了一种虚拟对象渲染方法。通过终端设备提供图形用户界面,图形用户界面至少部分地显示一游戏场景,游戏场景至少部分地包括一虚拟对象。该方法可以包括:确定游戏场景的观察角度;基于观察角度对第一目标贴图进行溶解处理,得到溶解结果,其中,第一目标贴图用于表征虚拟对象的纹理图像;基于溶解结果确定虚拟对象的目标透明值;根据目标透明值,以渲染显示虚拟对象。
6.可选地,获取游戏场景的观察角度,包括:实时获取游戏角色在游戏场景的观察视野,其中,游戏场景包括通过终端设备控制的游戏角色;根据观察视野,确定虚拟对象的观察角度。
7.可选地,获取第二目标贴图,其中,第二目标贴图用于表征游戏场景中虚拟云层的纹理图像,且随着时间的变化而变化;基于第二目标贴图确定虚拟对象的目标颜色;根据目标透明值,以渲染显示虚拟对象,包括:根据目标透明值和目标颜色,以渲染虚拟对象。
8.可选地,根据目标透明值和目标颜色,以渲染虚拟对象,包括:根据虚拟对象上目标纹理坐标对应的目标透明值和目标颜色,以渲染虚拟对象。
9.可选地,基于观察角度对第一目标贴图进行溶解处理,得到溶解结果,包括:基于观察角度确定目标平滑参数;基于目标平滑参数对第一目标贴图进行平滑处理,得到溶解结果。
10.可选地,基于观察角度确定目标平滑参数,包括:确定与观察角度对应的目标位置,其中,预设摄像机用于在目标位置上对游戏场景进行拍摄,以得到游戏场景中观察角度的场景画面;确定目标位置相对于虚拟对象的位置的第一旋转角度;基于第一旋转角度确定目标平滑参数。
11.可选地,基于第一旋转角度确定目标平滑参数,包括:将第一旋转角度转换至第一值域范围内的第二旋转角度,其中,在第二旋转角度为第一值域范围的上限值时,渲染显示
后的虚拟对象呈现第一显示状态,在第二旋转角度为第一值域范围的下限值时,渲染显示后的虚拟对象呈现第二显示状态;基于第二旋转角度确定目标平滑参数。
12.可选地,基于第二旋转角度确定所述目标平滑参数,包括:将第二旋转角度转换为第二值域范围内的第三旋转角度,其中,第二值域范围小于第一值域范围;基于第三旋转角度确定平滑函数的第一平滑参数和第二平滑参数;基于目标平滑参数对第一目标贴图进行平滑处理,得到溶解结果,包括:将第一平滑参数、第二平滑参数和第一目标贴图输入至平滑函数中进行平滑处理,得到溶解结果,其中,溶解结果处于第一平滑参数和第二平滑参数之间。
13.可选地,确定与观察角度对应的目标位置,包括:在模型空间中确定与观察角度对应的目标位置。
14.为了实现上述目的,根据本发明的另一方面,还提供了一种虚拟对象渲染装置,通过终端设备提供图形用户界面,图形用户界面至少部分地显示一游戏场景,游戏场景至少部分地包括一虚拟对象,该装置可以包括:第一确定单元,用于确定游戏场景的观察角度;溶解单元,用于基于观察角度对第一目标贴图进行溶解处理,得到溶解结果,其中,第一目标贴图用于表征虚拟对象的纹理图像;第二确定单元,用于基于溶解结果确定虚拟对象的目标透明值;渲染单元,用于根据目标透明值,以渲染显示虚拟对象。
15.为了实现上述目的,根据本发明的另一方面,还提供了一种计算机可读存储介质。该计算机可读存储介质中存储有计算机程序,其中,在计算机程序被处理器运行时控制计算机可读存储介质所在设备执行本发明实施例的虚拟对象渲染方法。
16.为了实现上述目的,根据本发明的另一方面,还提供了一种电子装置。该电子装置可以包括存储器和处理器,其特征在于,存储器中存储有计算机程序,处理器被设置为被处理器运行计算机程序以执行本发明实施例的虚拟对象渲染方法。
17.在本发明至少部分实施例中,确定游戏场景的观察角度;基于观察角度对第一目标贴图进行溶解处理,得到溶解结果,其中,第一目标贴图用于表征虚拟对象的纹理图像;基于溶解结果确定虚拟对象的目标透明值;根据目标透明值,以渲染显示虚拟对象。也就是说,本技术通过对目标贴图进行溶解处理,得到溶解结果,基于溶解结果确定虚拟月亮对象的目标透明通道,从而实现随视线变化而出现月圆月缺的目的,提高了对月亮对象的月食效果进行展现的灵活性,进而解决了对虚拟月亮对象的月食效果进行展现的灵活性低的技术问题,达到了提高对月亮对象的月食效果进行展现的灵活性的技术效果。
附图说明
18.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
19.图1是根据本发明其中一实施例的一种虚拟对象渲染方法的移动终端的硬件结构框图;
20.图2是根据本发明其中一实施例的一种虚拟对象渲染方法的流程图;
21.图3是根据本发明相关技术中的一种月食效果的示意图;
22.图4是根据本发明其中一实施例的一种月食效果的示意图;
23.图5是根据本发明实施例中的一种模型空间内球面上某点的坐标的示意图;
24.图6是根据本发明实施例中的一种世界空间内球面上某点的坐标的示意图;
25.图7是根据本发明中的一种计算角度的转换结果的示意图;
26.图8是根据本发明中的一种值域范围的转换结果的示意图;
27.图9是根据本发明中的另一种值域范围的转换结果的示意图;
28.图10是根据本发明中的一种溶解贴图的示意图;
29.图11是根据本发明其中一实施例的一种虚拟对象渲染装置的结构框图。
具体实施方式
30.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
31.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
32.首先,在对本技术实施例进行描述的过程中出现的部分名词或术语使用于如下解释:
33.光照贴图(lightmap),描述记录了场景光照数据的纹理,常用于增加场景的光照氛围和美术效果;
34.法线,生成lightmap的方法一般叫做烘焙,一般游戏引擎unity/ue4是自带这项功能的;
35.模型空间(model space),模型空间在不同的游戏引擎或者是软件中又称作对象空间(object space)或者局部空间(local space),比如,如图5所示,图5是根据本发明实施例中的一种模型空间内球面上某点的坐标的示意图;
36.世界空间(world space),世界空间是一个宏观的特殊坐标系,其代表了我们关心的最大坐标系,比如,如图6所示,图6是根据本发明实施例中的一种世界空间内球面上某点的坐标的示意图;
37.归一化,把向量的长度变为1;
38.uv流动,uv流动或uv平移是指沿着水平(u)方向,或垂直(v)方向移动纹理的uv坐标,以产生复杂的动画错觉;uv流动可以创建诸如火焰、流水或烟雾之类的效果;
39.根据本发明其中一实施例,提供了一种虚拟对象渲染方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
40.该方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,该移动终端可以是智能手机(如android手机、ios手机等)、平板电脑、掌上电脑以及移动互联网设备(mobileinternetdevices,简称为mid)、pad、游戏机等终端设备。图1是根据本发明其中一实施例的一种虚拟对象渲染方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于中央处理器(cpu)、图形处理器(gpu)、数字信号处理(dsp)芯片、微处理器(mcu)、可编程逻辑器件(fpga)、神经网络处理器(npu)、张量处理器(tpu)、人工智能(ai)类型处理器等的处理装置)和用于存储数据的存储器104。可选地,上述移动终端还可以包括用于通信功能的传输设备106、输入输出设备108以及显示设备110。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
41.存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的虚拟对象渲染方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的对象处理方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
42.传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(network interface controller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(radio frequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
43.输入输出设备108中的输入可以来自多个人体学接口设备(human interface device,简称为hid)。例如:键盘和鼠标、游戏手柄、其他专用游戏控制器(如:方向盘、鱼竿、跳舞毯、遥控器等)。部分人体学接口设备除了提供输入功能之外,还可以提供输出功能,例如:游戏手柄的力反馈与震动、控制器的音频输出等。
44.显示设备110可以例如平视显示器(hud)、触摸屏式的液晶显示器(lcd)和触摸显示器(也被称为“触摸屏”或“触摸显示屏”)。该液晶显示器可使得用户能够与移动终端的用户界面进行交互。在一些实施例中,上述移动终端具有图形用户界面(gui),用户可以通过触摸触敏表面上的手指接触和/或手势来与gui进行人机交互,此处的人机交互功能可选的包括如下交互:创建网页、绘图、文字处理、制作电子文档、游戏、视频会议、即时通信、收发电子邮件、通话界面、播放数字视频、播放数字音乐和/或网络浏览等、用于执行上述人机交互功能的可执行指令被配置/存储在一个或多个处理器可执行的计算机程序产品或可读存储介质中。
45.在本公开其中一种实施例中的虚拟对象渲染方法可以运行于本地终端设备或者是服务器。当虚拟对象渲染方法运行于服务器时,该方法则可以基于云交互系统来实现与执行,其中,云交互系统包括服务器和客户端设备。
46.在一可选的实施方式中,云交互系统下可以运行各种云应用,例如:云游戏。以云
游戏为例,云游戏是指以云计算为基础的游戏方式。在云游戏的运行模式下,游戏程序的运行主体和游戏画面呈现主体是分离的,虚拟对象渲染方法的储存与运行是在云游戏服务器上完成的,客户端设备的作用用于数据的接收、发送以及游戏画面的呈现,举例而言,客户端设备可以是靠近用户侧的具有数据传输功能的显示设备,如,移动终端、电视机、计算机、掌上电脑等;但是进行信息处理的为云端的云游戏服务器。在进行游戏时,玩家操作客户端设备向云游戏服务器发送操作指令,云游戏服务器根据操作指令运行游戏,将游戏画面等数据进行编码压缩,通过网络返回客户端设备,最后,通过客户端设备进行解码并输出游戏画面。
47.在一可选的实施方式中,以游戏为例,本地终端设备存储有游戏程序并用于呈现游戏画面。本地终端设备用于通过图形用户界面与玩家进行交互,即,常规的通过电子设备下载安装游戏程序并运行。该本地终端设备将图形用户界面提供给玩家的方式可以包括多种,例如,可以渲染显示在终端的显示屏上,或者,通过全息投影提供给玩家。举例而言,本地终端设备可以包括显示屏和处理器,该显示屏用于呈现图形用户界面,该图形用户界面包括游戏画面,该处理器用于运行该游戏、生成图形用户界面以及控制图形用户界面在显示屏上的显示。
48.在本实施例中提供了一种运行于上述移动终端的一种虚拟对象渲染方法,通过终端设备提供图形用户界面,其中,终端设备可以是前述提到的本地终端设备,也可以是前述提到的云交互系统中的客户端设备,图形用户界面至少部分地显示一游戏场景,游戏场景至少部分地包括一虚拟对象,其中,虚拟对象可以为月亮、太阳、或其他模型。
49.图2是根据本发明其中一实施例的一种虚拟对象渲染方法的流程图,通过终端设备提供一图形用户界面,如图2所示,该方法包括如下步骤:
50.步骤s202,确定游戏场景的观察角度。
51.在本发明上述步骤s202提供的技术方案中,游戏场景可以为游戏场景中由预设摄像机拍摄所得到的画面,游戏场景可以包括虚拟对象。观察角度可以为相对于游戏场景的观察角度,也可以为随着虚拟游戏角色的移动而变换的信息。
52.在该实施例中,通过将虚拟相机与朝向进行绑定,实现控制虚拟角色观察角度的目的,通过控制朝向,引起虚拟相机的转动,从而得到变化的游戏场景;而如果虚拟相机并不与朝向绑定,此时,只能对虚拟相机进行直接的限定,才能引起游戏场景观察角度的变化。
53.可选地,可以通过移动虚拟相机的位置,以改变虚拟对象在游戏场景中的观察角度,比如,在移动端,通过向上下左右某一方向滑动屏幕,实现改变虚拟对象在游戏场景中的观察角度的目的,或者在电脑端,通过鼠标上下左右都有方向长按滑动游戏场景画面实现观察角度的改变。
54.可选地,游戏场景中由预设摄像机拍摄,得到场景画面,通过获取游戏场景中的信息,确定该场景画面中虚拟游戏角色的观察角度。
55.步骤s204,基于观察角度对第一目标贴图进行溶解处理,得到溶解结果,其中,第一目标贴图用于表征虚拟对象的纹理图像。
56.在本发明上述步骤s204提供的技术方案中,基于确定的游戏场景的观察角度对第一目标贴图进行溶解处理,得到溶解结果,其中,第一目标贴图可以为溶解贴图,可以用于
生成虚拟对象溶解图片,可以用dissolve_tex表示。溶解处理可以为基于游戏视野信息对目标贴图进行平滑阶梯函数(smoothstep)溶解,从而得到溶解结果。溶解结果用于实现场景画面上的图形的消失,可以用step_dissolve表示。
57.步骤s206,基于溶解结果确定虚拟对象的目标透明值。
58.在本发明上述步骤s206提供的技术方案中,目标透明值可以为溶解值,可以作为目标透明通道,可以为alpha通道,用于表示图像中像素点的透明信息,可以通过改变虚拟对象的透明通道从而达到使虚拟对象消失的效果,目标透明通道可以为带云层的月亮的透明通道。
59.可选地,通过对基于观察角度对第一目标贴图进行溶解处理,得到的溶解结果,对溶解结果进行处理,得到虚拟对象的目标透明值,将确定的目标透明值作为虚拟对象的透明通道。
60.步骤s208,根据目标透明值,以渲染显示虚拟对象。
61.在本发明上述步骤s208提供的技术方案中,将计算得到的目标透明值作为虚拟对象的透明通道,对带透明通道的虚拟对象进行渲染显示,从而得到跟随观察角度变化的虚拟对象。
62.在该实施例中,可以将得到的溶解结果作为虚拟对象的透明值,将透明值作为虚拟对象的透明通道,渲染显示虚拟对象。
63.通过本技术上述步骤s202至步骤s208,获取场景画面的游戏视野信息;基于游戏视野信息对目标贴图进行溶解处理,得到溶解结果,其中,目标贴图用于生成虚拟月亮对象的月食图像;基于溶解结果确定虚拟月亮对象的目标透明通道,以将虚拟月亮对象的图像由第一月食图像转换为第二月食图像。也就是说,本技术通过对目标贴图进行溶解处理,得到溶解结果,基于溶解结果确定虚拟月亮对象的目标透明通道,从而实现随视线变化而出现月圆月缺的目的,提高了对月亮对象的月食效果进行展现的灵活性,进而解决了对虚拟月亮对象的月食效果进行展现的灵活性低的技术问题,达到了提高对月亮对象的月食效果进行展现的灵活性的技术效果。
64.下面对该实施例上述方法进行进一步介绍。
65.作为一种可选的实施方式,步骤s202,获取游戏场景的观察角度,包括:实时获取游戏角色在游戏场景的观察视野,其中,游戏场景包括通过终端设备控制的游戏角色;根据观察视野,确定虚拟对象的观察角度。
66.在该实施例中,随着游戏角色(虚拟游戏角色)(虚拟游戏角色)的移动,实时获取游戏角色在游戏场景的观察视野,根据获取的观察视野,确定虚拟对象的观察角度,其中,可以通过终端设备控制游戏角色的视野的观察角度。
67.可选地,对视野的调整可以通过对游戏中的自由视角的调整,从而引起游戏场景的观察角度的变化;或者当视野与游戏角色的朝向绑定时,可以通过调整游戏角色的视野,从而调整游戏场景的观察角度。
68.作为一种可选的实施方式,获取第二目标贴图,其中,第二目标贴图用于表征游戏场景中虚拟云层的纹理图像,且随着时间的变化而变化;基于第二目标贴图确定虚拟对象的目标颜色;根据目标透明值,以渲染显示虚拟对象,包括:根据目标透明值和目标颜色,以渲染虚拟对象。
69.可选地,第二目标贴图可以为云层的纹理贴图,用于调整虚拟对象的目标颜色,第二目标贴图可以云层的纹理贴图是随着时间变化而变化的,通过将第二目标贴图渲染显示得到的目标颜色和目标透明值进行叠加,对叠加结果进行渲染显示,得到随着时间变化的虚拟对象图片。
70.可选地,将云层的纹理贴图与月亮贴图进行叠加得到月食变化,其中,两个贴图是通过与虚拟目标上的uv坐标对应,然后实现对虚拟对象的渲染显示,需要说明的是,云层的纹理贴图调整的是颜色,而月亮贴图调整的是透明度,两者相互不干扰。
71.作为一种可选的实施方式,根据目标透明值和目标颜色,以渲染虚拟对象,包括:根据虚拟对象上目标纹理坐标对应的目标透明值和目标颜色,以渲染虚拟对象。
72.在该实施例中,目标纹理信息用于表示在目标时间内按照目标速度进行变化的云层图像的纹理坐标;基于溶解结果确定虚拟月亮对象的目标透明通道,包括:基于目标纹理信息、溶解结果将虚拟月亮对象的原始透明通道转换为目标透明通道。
73.可选地,目标纹理信息用于表示在目标时间内按照目标速度进行变化的云层图像的纹理坐标,可以用tex2,input.uv表示,纹理坐标可以为uv坐标,用于定位图像上任意一个像素,通过纹理坐标可以将多边形的顶点和图像文件上的像素对应起来,从而实现在多边形表面定位纹理贴图,其中,贴图的u和v坐标的数值范围可以都是0到1。
74.可选地,通过给虚拟月亮对象的纹理坐标加上目标时间内的每帧画面的生成时间(frametime)和云层移动的目标速度(cloudmovespeed)的乘积得到目标纹理信息,其中,目标纹理信息可以用tex2color表示,可以通过下述公式进行表示:
75.half4
76.tex2color=sample_texture_level(tex2,input.uv float2(frametime*cloudmovespeed,0),-1)
77.其中,sample_texture_level表示纹理采样,用于使云层uv流动。
78.在该实施例中,基于目标纹理信息、溶解结果将虚拟月亮对象的原始透明通道转换为目标透明值,根据虚拟对象上目标纹理坐标对应的目标透明值和目标颜色,以渲染虚拟对象,其中,原始透明通道可以用alphamt1表示。
79.作为一种可选的实施方式,基于观察角度对第一目标贴图进行溶解处理,得到溶解结果,包括:基于观察角度确定目标平滑参数;基于目标平滑参数对第一目标贴图进行平滑处理,得到溶解结果。
80.在该实施例中,基于目标纹理信息、溶解结果将虚拟月亮对象的原始透明通道转换为目标透明通道,包括:将目标纹理信息对应的云层图像添加至原始透明通道;基于溶解结果对带有云层图像的原始透明通道进行溶解处理,得到目标透明通道。
81.可选地,将目标纹理信息对应的云层图像添加至原始透明通道,比如,给月亮的原始透明通道加上云层uv流动的效果,对带有目标纹理信息的原始透明通道进行溶解处理,得到目标透明通道,其中,目标透明通道可以用finalcolor表示,可以通过下述公式进行表示:
82.half4
83.finalcolor=half4((text0color.rgb*lerp(float3(1.0),text2color.rgb,cloudintensity) text3color.rgb*text3color.a*emissiveintensity),text0color.a*
step_dissolve*alphamt1)*colorfactor
84.其中,text0color.rgb表示:基础色的红绿蓝通道,lerp(float3(1.0)用于决定云彩强度的效果,cloudintensity表示云层强度参数,text3color.rgb表示云彩图的红绿蓝通道,text3color.a表示云彩图的阿尔法通道,emissiveintensity表示目标对象发光强度参数,colorfactor用于控制颜色灰度。
85.在该实施例中,平滑参数用于使图像变化更顺滑,可以为平滑参数最小值,s_min和平滑参数最大值,s_max,平滑处理可以为对目标贴片进行平滑阶梯溶解。可选地,将目标平滑参数作为平滑阶梯函数的前两个参数,目标贴片输入为最后一个参数,从而得到溶解结果,可以为:
86.float step_dissolve=smoothstep(s_min,s_max,dissolve_tex)
87.作为一种可选的实施方式,基于观察角度确定目标平滑参数,包括:确定与观察角度对应的目标位置,其中,预设摄像机用于在目标位置上对游戏场景进行拍摄,以得到游戏场景中观察角度的场景画面;确定目标位置相对于虚拟月亮对象的位置的第一旋转角度;基于第一旋转角度确定目标平滑参数。
88.在该实施例中,预设摄像机用于在目标位置上对游戏场景进行拍摄,以得到场景画面,从而确定与游戏视野信息对应的目标位置。其中,目标位置可以为将摄像机拍摄的场景转换到模型空间的位置,可以用locao_camera_position来表示,可以通过下述公式进行表示:
89.float4 local_camera_position=mul(float4(cameraposition.xyz,1.0),world);
90.frag.local_camera_position=local_camera_position.xyz
91.可选地,确定目标位置相对于虚拟月亮对象的位置的第一旋转角度,其中,虚拟月亮对象的位置可以为相机中各个顶点的位置,可以用cam_object表示,第一旋转角度可以为目标位置到虚拟月亮对象的中心点的角度,可以用distance表示,可以用atan2函数计算角度。
92.可选地,将计算出来的角度先加pi除以2,之后再将计算出来的角度先加pi除以2的结果除以pi,从而实现将第一旋转角度转换到0-1范围内,可以通过下述公式进行表示:
93.float3 cam_object=normalize(input.local_camera_position)
94.float distance=(atan2(cam_object.z,abs(cam_object.x)) pi/2.0)/pi;//1-0.5-0
95.其中,normalize为归一化函数,用于将虚拟月亮对象的目标位置处理在0-1之间,abs(cam_object.x)函数用于求取目标位置在x轴上的绝对值,cam_object.z表示为目标位置在z轴上的值。
96.作为一种可选的实施方式,基于第一旋转角度确定所述目标平滑参数,包括:将第一旋转角度转换至第一值域范围内的第二旋转角度,其中,在第二旋转角度为第一值域范围的上限值时,渲染显示后的虚拟对象呈现第一显示状态,在第二旋转角度为第一值域范围的下限值时,渲染显示后的虚拟对象呈现第二显示状态;基于第二旋转角度确定目标平滑参数。
97.在该实施例中,由于需求要求,当虚拟月亮对象转到侧面90度的时候就消失,转到
180度的时候再出现,所以通过计算将第一旋转角度转换至第一值域范围内的第二旋转角度,其中,第一值域范围可以为0-1范围内,即,上限值为靠近0的值,下限值为靠近1的值的值域范围,可以包括,将第一旋转角度中小于0的变为0,超过1的变成1,从而得到第二旋转角度,可以通过下述公式进行表示:
98.float distance=(atan2(cam_object.z,abs(cam_object.x)) pi/2.0)/pi;//1-0.5-0;
99.float distance_fix=saturate(abs((distance-0.5)*2.0));//1-0-1
100.其中,distance_fix用于表示第二旋转角度,saturate用于把一个数限制在0-1范围内,小于0的变为0,超过1的变成1。
101.可选地,在第二旋转角度为第一值域范围的上限值时,渲染显示后的虚拟对象呈现第一显示状态,比如,虚拟对象为月亮,则第一显示状态可以为满月状态,在第二旋转角度为第一值域范围的下限值时,渲染显示后的虚拟对象呈现第二显示状态,比如,虚拟对象为月亮,则第二显示状态可以为月全食状态,基于第二旋转角度确定目标平滑参数。
102.作为一种可选的实施方式,基于第二旋转角度确定目标平滑参数,包括:将第二旋转角度转换为第二值域范围内的第三旋转角度,其中,第二值域范围小于第一值域范围;基于第三旋转角度确定平滑函数的第一平滑参数和第二平滑参数;基于目标平滑参数对第一目标贴图进行平滑处理,得到溶解结果,包括:将第一平滑参数、第二平滑参数和第一目标贴图输入至平滑函数中进行平滑处理,得到溶解结果,其中,溶解结果处于第一平滑参数和第二平滑参数之间。
103.在该实施例中,由于在旋转相机角度的过程中,靠近0-1的变化会很慢,因此,需要将第一值域范围稍微缩小一下,从而使角度变化更顺滑,可选地,将第二旋转角度转换为第二值域范围内的第三旋转角度,其中,第二值域范围小于第一值域范围。比如,第一值域范围可以为0-1,那么第二值域范围就可以为0.1-0.9或者是0.05-0.95,此处不做限定。
104.可选地,使用平滑阶梯函数对第二旋转角度进行调整,得到第三旋转角度,第三旋转角度可以用distance_fix_smooth表示,可以通过下述公式进行表示:
105.float distance_fix=saturate(abs((distance-0.5)*2.0));//1-0-1;
106.float distance_fix_smooth=smoothstep(0.05,0.95,distance_fix);//0.9-1-0.9
107.其中,smoothstep函数具体为smoothstep(a,b,c),会把c的值域变到a-b之间,用于让整体的值域从0-1变成0.1-0.9或者是0.05-0.95。
108.在该实施例中,将第三旋转角度的结果分别转换为第一平滑参数和第二平滑参数,其中,第一平滑参数可以用s_min表示,第二平滑参数可以用s_max表示,将第一平滑参数、第二平滑参数和第一目标贴图输入平滑函数中进行平滑处理,得到溶解结果,可以通过下述公式进行表示:
109.float s_min=saturate(distance_fix_smooth*(-2.0) 1.0);//saturate(-1~1)
110.float s_max=1.0-(saturate(distance_fix_smooth-0.5)*2.0
111.float step_dissolve=smoothstep(s_min,s_max,dissolve_tex)
112.可选地,平滑函数使用可以为smoothstep(a,b,c),会把c的值域变到a-b之间,因
而,溶解结果会处于第一平滑参数和第二平滑参数之间。
113.作为一种可选的实施方式,确定与游戏视野信息对应的目标位置,包括:在模型空间中确定与游戏视野信息对应的目标位置。
114.在该实施例中,可以将游戏视野信息对应的位置转换到模型空间,从而得到在模型空间的目标位置。
115.需要说明的是,关于模型空间与时间空间,可以为一个相对坐标与世界坐标的换算,通常建立模型空间坐标系是为了便于实时调整控制虚拟模型的角度和方位,只是模型空间坐标系要显示在图形用户界面,须换算成世界坐标系,然后由世界坐标系换算成屏幕(图形用户界面)坐标系,即可完成屏幕映射显示。
116.在该实施例中,获取场景画面的游戏视野信息;基于游戏视野信息对目标贴图进行溶解处理,得到溶解结果,其中,目标贴图用于生成虚拟月亮对象的月食图像;基于溶解结果确定虚拟月亮对象的目标透明通道,以将虚拟月亮对象的图像由第一月食图像转换为第二月食图像。也就是说,本技术通过对目标贴图进行溶解处理,得到溶解结果,基于溶解结果确定虚拟月亮对象的目标透明通道,从而实现随视线变化而出现月圆月缺的目的,提高了对月亮对象的月食效果进行展现的灵活性,进而解决了对虚拟月亮对象的月食效果进行展现的灵活性低的技术问题,达到了提高对月亮对象的月食效果进行展现的灵活性的技术效果。
117.下面结合优选的实施方式对本发明实施例的技术方案进行进一步地举例介绍。
118.在现有技术方案中,对月食效果这一种自然现象是通过uv流动黑色月亮覆盖原有月亮,从而实现月食的一个效果,如图3所示,图3是根据本发明相关技术中的一种月食效果的示意图,现有技术方案无法实现随着视线变化而变化的特征。
119.因而,本方案提出了一种可以跟随视线变化出现月圆月缺的效果方案,实现了跟随实现变换月食效果,如图4所示,图4是根据本发明其中一实施例的一种月食效果的示意图,纯正面的时候是一个正圆,但是随着视角的移动逐渐消散,到纯背面的时候就直接没有了,消散的时候星空粒子不是片状消散,有z轴上的变化,与月食的效果相似。
120.下面对该实施例的上述方法进行进一步介绍。
121.第一步,在顶点阶段,把相机位置转换到模型空间。可以为:
122.float4 local_camera_position=mul(float4(cameraposition.xyz,1.0),world);
123.frag.local_camera_position=local_camera_position.xyz。
124.第二步,计算相机到模型中心点的角度,包括:用atan2函数计算角度(这里是弧度为单位,把角度/2pi,转换到0-1范围内,此时的值域是转换为0-0.5-1,如图7所示,图7是根据本发明中的一种计算角度的转换结果的示意图,可以为:
125.float3 cam_object=normalize(input.local_camera_position)
126.float distance=(atan2(cam_object.z,abs(cam_object.x)) pi/2.0)/pi。
127.第三步,因为需求要求月亮转到侧面90度的时候就消失,转到180再出现,所以通过计算对值域范围进行转换,如图8所示,图8是根据本发明中的一种计算值域范围的转换结果的示意图,可以为:
128.float distance=(atan2(cam_object.z,abs(cam_object.x)) pi/2.0)/pi;
129.float distance_fix=saturate(abs((distance-0.5)*2.0))。
130.其中,物体中心位于十字交叉的中心点,相机位于各个位置的时候,对应的角度数值,线性均匀变化,计算为saturate(abs((distance-0.5)*2)),abs为取一个数的绝对值,saturate为把一个数限制在0-1范围内,小于0的变为0,超过1的变成1,这样计算出的结果就实现图8中从左到右的变化,即,将值域从0-0.5-1转换为在1-0-1的范围内了。
131.第四步,把0-1的值域调整变小,由于在旋转相机角度的时候,靠近0和1的变化会很慢,所以要通过设置参数实现稍微缩小域值范围,从而使角度变化更加顺滑,这里使用平滑阶梯函数调整,如图9所示,图9是根据本发明中的另一种计算值域范围的转换结果的示意图,可以为:
132.float distance_fix=saturate(abs((distance-0.5)*2.0));
133.float distance_fix_smooth=smoothstep(0.05,0.95,distance_fix);
134.其中,靠近1的时候月亮是完整的,靠近0的时候就是月全食,这里使用smoothstep函数让整体的值域从1-0-1变成0.9-1-0.9或者是0.05-0.95,这样就会变成图9右图中的样子。函数具体使用为smoothstep(a,b,c),会把c的值域变到a-b之间。
135.第五步,对溶解贴图利用平滑阶梯函数进行溶解,图10是根据本发明中的一种溶解贴图的示意图,如图10所示,包括:将第四步中的结果分别转换为s_min和s_max两个值作为smoothstep的前两个参数,贴图输入作为最后一个参数,将溶解值作为月亮的透明通道实现溶解的效果,可以为:
136.float s_min=saturate(distance_fix_smooth*(-2.0) 1.0);//saturate(-1~1)
137.float s_max=1.0-(saturate(distance_fix_smooth-0.5)*2.0
138.float step_dissolve=smoothstep(s_min,s_max,dissolve_tex)
139.第六步,给月亮图加上云层uv流动的效果,即,uv 时间*速度,这样就可以实现一个简单的uv流动效果,可以为:
140.half4
141.tex2color=sample_texture_level(tex2,input.uv float2(frametime*cloudmovespeed,0),-1)。
142.第七步,给把带云层的月亮的透明通道,根据第四步的结果进行溶解,从而实现跟随视线变化的月食效果,可以为:
143.half4
144.finalcolor=half4((text0color.rgb*lerp(float3(1.0),text2color.rgb,cloudintensity) text3color.rgb*text3color.a*emissiveintensity),text0color.a*step_dissolve*alphamt1)*colorfactor。
145.在该实施例中,通过把相机位置转换到模型空间内,计算相机相对于模型中心点的旋转角度,把角度值转化到0-1之间,再对溶解贴图按照这个值进行溶解,最后把溶解值作为月亮的透明通道,进而解决了对虚拟月亮对象的月食效果进行展现的灵活性低的技术问题,达到了提高对月亮对象的月食效果进行展现的灵活性的技术效果。
146.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多
情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
147.本发明实施例还提供了一种虚拟对象渲染装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“单元”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
148.图11是根据本发明实施例的一种虚拟对象渲染装置的结构框图,通过终端设备提供图形用户界面,图形用户界面至少部分地显示一游戏场景,游戏场景至少部分地包括一虚拟对象,如图11所示,该虚拟对象渲染装置110可以包括:获取单元111、溶解单元112和确定单元113。
149.第一确定单元111,用于确定游戏场景的观察角度。
150.溶解单元112,用于基于观察角度对第一目标贴图进行溶解处理,得到溶解结果,其中,第一目标贴图用于表征虚拟对象的纹理图像。
151.第二确定单元113,用于基于溶解结果确定虚拟对象的目标透明值。
152.渲染单元114,用于根据目标透明值,以渲染显示虚拟对象。
153.在该实施例的虚拟对象渲染装置中,本技术通过第一确定单元,确定游戏场景的观察角度;利用溶解单元,基于观察角度对第一目标贴图进行溶解处理,得到溶解结果,其中,第一目标贴图用于表征虚拟对象的纹理图像;利用第二确定单元,基于溶解结果确定虚拟对象的目标透明值;利用渲染单元,根据目标透明值,以渲染显示虚拟对象,从而基于溶解结果确定虚拟月亮对象的目标透明通道,实现随视线变化而出现月圆月缺的目的,提高了对月亮对象的月食效果进行展现的灵活性,进而解决了对虚拟月亮对象的月食效果进行展现的灵活性低的技术问题,达到了提高对月亮对象的月食效果进行展现的灵活性的技术效果。
154.需要说明的是,上述各个单元是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述单元均位于同一处理器中;或者,上述各个单元以任意组合的形式分别位于不同的处理器中。
155.本发明的实施例还提供了一种非易失性存储介质,该非易失性存储介质中存储有计算机程序,其中,计算机程序被设置为被处理器运行时执行本发明实施例的虚拟对象渲染方法。
156.可选地,在本实施例中,上述非易失性存储介质可以被设置为存储用于执行以下步骤的计算机程序:
157.s1,确定游戏场景的观察角度;
158.s2,基于观察角度对第一目标贴图进行溶解处理,得到溶解结果,其中,第一目标贴图用于表征虚拟对象的纹理图像;
159.s3,基于溶解结果确定虚拟对象的目标透明值。
160.s4,根据目标透明值,以渲染显示虚拟对象。
161.可选地,在本实施例中,上述非易失性存储介质可以包括但不限于:u盘、只读存储
器(read-only memory,简称为rom)、随机存取存储器(random access memory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
162.本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
163.可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
164.可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
165.s1,确定游戏场景的观察角度;
166.s2,基于观察角度对第一目标贴图进行溶解处理,得到溶解结果,其中,第一目标贴图用于表征虚拟对象的纹理图像;
167.s3,基于溶解结果确定虚拟对象的目标透明值。
168.s4,根据目标透明值,以渲染显示虚拟对象。
169.可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
170.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
171.在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
172.在本技术所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
173.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
174.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
175.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
176.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人
员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献