CN115845363A - 渲染方法、装置和电子设备 - Google Patents
渲染方法、装置和电子设备 Download PDFInfo
- Publication number
- CN115845363A CN115845363A CN202211424846.9A CN202211424846A CN115845363A CN 115845363 A CN115845363 A CN 115845363A CN 202211424846 A CN202211424846 A CN 202211424846A CN 115845363 A CN115845363 A CN 115845363A
- Authority
- CN
- China
- Prior art keywords
- rendering
- virtual camera
- virtual
- rule
- acquired data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本申请公开了一种渲染方法、装置和电子设备。该方法包括:在应用程序中创建用于在第一图形用户界面中显示的虚拟场景,虚拟场景包括第一虚拟相机和第二虚拟相机;控制第一虚拟相机和第二虚拟相机在预设时刻对虚拟场景进行数据采集,获得采集数据,第一虚拟相机和第二虚拟相机在同一时刻对虚拟场景进行数据采集所获得的采集数据相同;控制第一虚拟相机在目标帧按照第一渲染规则对采集数据进行渲染,输出第一渲染图像,以及,控制第二虚拟相机在目标帧按照第二渲染规则对采集数据进行渲染,输出第二渲染图像,第一渲染规则和第二渲染规则不同。该方法可以在同一帧获得对同一虚拟场景执行不同渲染规则对应不同渲染图像,以及更好的满足用户需求。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种渲染方法、装置和电子设备。
背景技术
随着互联网技术的发展,游戏由于其丰富的娱乐性能越来越受到用户的欢迎。在游戏启动时,需要先进行渲染,来显示与游戏相关的游戏场景,渲染完成之后,用户可以根据渲染结果进行相应的触控操作。
为提升用户游玩游戏的体验,开发人员对游戏进行开发时有以下需求:需要在同一个用户界面(user interface,UI)显示对同一游戏虚拟场景执行不同渲染规则获得的不同渲染图像,以及对不同渲染图像的效果进行调试。传统渲染方法中,利用不同应用程序中设置的不同虚拟相机对各自程序中创建的虚拟场景进行数据采集,并利用不同程序中设置的不同虚拟相机对采集获得的数据按照不同渲染规则进行渲染,难以保证上述不同虚拟相机所获得的采集数据是相同的,基于此,也难以在同一帧获得对同一虚拟场景执行不同渲染规则对应的不同渲染图像,以及难以满足用户的需求。
因此,亟需一种渲染方法,该方法可以在同一帧获得对同一虚拟场景执行不同渲染规则对应的不同渲染图像,以更好的满足用户需求。
发明内容
本申请提供了一种渲染方法、装置和电子设备,该方法可以在同一帧获得对同一虚拟场景执行不同渲染规则对应的不同渲染图像,以更好的满足用户需求。
本申请实施例第一方面提供了一种渲染方法,该方法包括:在应用程序中创建用于在第一图形用户界面中显示的虚拟场景,其中,所述虚拟场景包括第一虚拟相机和第二虚拟相机;控制所述第一虚拟相机和所述第二虚拟相机在预设时刻对所述虚拟场景进行数据采集,获得采集数据,其中,所述第一虚拟相机和所述第二虚拟相机在同一时刻对所述虚拟场景进行数据采集所获得的采集数据相同;控制所述第一虚拟相机在目标帧按照第一渲染规则对所述采集数据进行渲染,输出第一渲染图像,以及,控制所述第二虚拟相机在所述目标帧按照第二渲染规则对所述采集数据进行渲染,输出第二渲染图像,其中,所述第一渲染规则和所述第二渲染规则不同。
本申请实施例第二方面提供了一种渲染装置,该装置包括:创建单元用于:在应用程序中创建用于在第一图形用户界面中显示的虚拟场景,其中,所述虚拟场景包括第一虚拟相机和第二虚拟相机;采集单元用于:控制所述第一虚拟相机和所述第二虚拟相机在预设时刻对所述虚拟场景进行数据采集,获得采集数据,其中,所述第一虚拟相机和所述第二虚拟相机在同一时刻对所述虚拟场景进行数据采集所获得的采集数据相同;第一渲染单元用于:控制所述第一虚拟相机在目标帧按照第一渲染规则对所述采集数据进行渲染,输出第一渲染图像;第二渲染单元用于:控制所述第二虚拟相机在所述目标帧按照第二渲染规则对所述采集数据进行渲染,输出第二渲染图像,其中,所述第一渲染规则和所述第二渲染规则不同。
本申请实施例第三方面还提供一种电子设备,包括:处理器;以及存储器,用于存储数据处理程序,该服务器通电并通过所述处理器运行该程序后,执行如上所述的渲染方法。
本申请实施例第四方面还提供了一种计算机可读存储介质,其上存储有一条或多条计算机指令,其特征在于,该指令被处理器执行以实现上述任意一种技术方案所述的渲染方法。
应当理解,本部分所描述的内容并非旨在标识本申请公开的实施例的关键或重要特征,也不用于限制本申请公开的范围。本申请公开的其它特征将通过以下的说明书而变得容易理解。
本申请实施例所提供的渲染方法的技术方案,第一虚拟相机和第二虚拟相机是在同一应用程序创建的第一图形用户界面中显示的同一虚拟场景中设置的,这种设置方式,可以保证第一虚拟相机和第二虚拟相机在预设时刻对该虚拟场景进行数据采集所获得的采集数据是相同的。基于此,第一虚拟相机和第二虚拟相机中的任意一个虚拟相机在目标帧对该采集数据利用对应的渲染规则进行渲染,可以获得第一渲染规则对应的第一渲染图像和第二渲染规则对应的第二渲染图像。也就是说,该方法可以在同一帧(即,目标帧)获得对同一虚拟场景执行不同渲染规则对应的不同渲染图像,以更好的满足用户需求。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是适用于本申请实施例提供的渲染方法的一种应用场景的示意图。
图2是本申请实施例提供的一种渲染方法的示意图。
图3是本申请实施例提供的另一种渲染方法的示意图。
图4A是上述图3所提供的渲染方法所描述的用户界面1的示意图。
图4B是上述图3所提供的渲染方法所描述的用户界面2的一种示意图。
图4C是上述图3所提供的渲染方法所描述的用户界面2的另一种示意图。
图4D是上述图3所提供的渲染方法所描述的用户界面2显示的渲染的示意图。
图5是本申请实施例提供的渲染方法所描述的第二图形用户界面的示意图。
图6是本申请实施例提供的一种渲染装置的结构示意图。
图7是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本领域的技术人员能够更好的理解本申请的技术方案,下面结合本申请实施例中的附图,对本申请进行清楚、完整地描述。但本申请能够以很多不同于上述描述的其他方式进行实施,因此,基于本申请提供的实施例,本领域普通技术人员在不经过创造性劳动的情况下,所获得的所有其他实施例,都应属于本申请保护的范围。
需要说明的是,本申请的权利要求书、说明书及附图中的术语“第一”、“第二”、“第三”等是用于区别类似的对象,并不用于描述特定的顺序或先后次序。这样使用的数据在适当情况下是可以互换的,以便于本文所描述的本申请的实施例,能够以除了在本文图示或描述的内容以外的顺序实施。此外,术语“包括”、“具有”以及他们的变形形式,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于理解,首先对本申请实施例中可能涉及的技术术语进行简单介绍。
1,游戏引擎(game engine)
游戏引擎又称为物理引擎。游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。
2,Unity
Unity是实时3D互动内容创作和运营平台。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助Unity将创意变成现实。Unity平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。
3,渲染(render)
渲染指的是在给定虚拟相机、三维物体、光源、光照模式、纹理等诸多条件的情况下,生成或绘制成一幅二维图像的过程。
4,遮挡剔除(occlusion culling)
当物体在虚拟相机的可视范围内,但被其他物体遮挡时,虚拟相机对其不进行渲染。遮挡剔除可以降低被渲染对象的个数,从而降低每帧渲染时间。
5,过度绘制(overdraw)
过度绘制是指对同一个像素进行多次渲染,因为一个像素最终只会显示一个颜色,所有过度绘制是一种有损性能的表现。最优情况是同一个像素每次只被绘制一次。
6,应用程序接口(application programming interface,API)
API又称为应用编程接口,就是软件系统不同组成部分衔接的约定。由于近年来软件的规模日益庞大,常常需要把复杂的系统划分成小的组成部分,编程接口的设计十分重要。程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的维护性和扩展性。应用程序接口通常是软件开发工具包(softwaredevelopment kit,SDK)的一部分。
下面,结合附图对适用于本申请实施例的渲染方法的应用场景、渲染方法进行详细说明。可以理解的是,本申请提供的各实施例之间不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
首先,结合附图1介绍适用于本申请实施例的渲染方法的应用场景。
图1是适用于本申请实施例提供的渲染方法的一种应用场景的示意图。示例性的,图1示出的应用场景包括终端101和服务器102。其中,终端101通过网络103与服务器102进行通信和数据交互。
终端101为安装应用程序的客户端。其中,该应用程序可以是需要下载安装的应用程序,也可以是即点即用的应用程序,本申请实施例对此不作限定。示例性的,终端101可以但不限于是以下任意一种设备:智能手机、平板电脑、游戏主机、电子书阅读器、多媒体播放设备、可穿戴设备(例如,智能手表)、个人计算机(personal computer,PC)等电子设备。
在本申请实施例中,上述应用程序可以是任何能够提供虚拟场景,以供用户代入和操作的虚拟对象在该虚拟场景中进行活动的应用程序。典示例性的,该应用程序可以为游戏应用程序,如大型多人在线角色扮演(massively multiplayer online role-playing,MMORP)游戏、大型多人在线(massively multiplayer online,MMO)游戏、大型多人在线战略(massively multiplayer online simulation,MMOS)游戏、第三人称射击游戏(Third-Personal Shooting Game,TPS)和多人枪战类生存游戏等。当然,除了游戏应用程序之外,其它类型的应用程序中也可以向用户展示虚拟对象,并给虚拟对象提供相应的功能。例如,虚拟现实(virtual reality,VR)类应用程序、增强现实(augmented reality,AR)类应用程序、三维地图程序、军事仿真程序、社交类应用程序、互动娱乐类应用程序等,本申请实施例对此不作限定。另外,对于不同的应用程序来说,其所提供的虚拟对象的形态也会有所不同,且相应的功能也会有所不同,这都可以根据实际需求预先进行配置,本申请实施例对此不作限定。在一些实施例中,上述应用程序是基于三维的虚拟场景引擎开发的应用程序,比如该虚拟场景引擎是Unity引擎,该虚拟场景引擎能够构建三维的虚拟场景、虚拟对象和虚拟道具等,给用户带来更加沉浸式的游戏体验。上述虚拟场景可以是对真实世界的仿真环境,也可以是半仿真半虚构的环境,还可以是纯虚构的环境。虚拟场景可以是二维虚拟场景,也可以是2.5维虚拟场景,或者是三维虚拟场景,本申请实施例对此不作限定。上述虚拟对象可以是用户帐号在应用程序中控制的虚拟角色,也可以是由应用程序中的计算机程序控制的虚拟角色。以应用程序为游戏应用程序为例,虚拟对象可以是用户帐号在游戏应用程序中控制的游戏角色,也可以是游戏应用程序中的计算机程序控制的游戏怪物。虚拟对象可以是人物形态,可以是动物、卡通或者其它形态,本申请实施例对此不作限定。虚拟对象可以三维形式展示,也可以二维形式展示,本申请实施例对此不作限定。
服务器102用于为终端101中的应用程序提供后台服务。例如,服务器102可以是上述应用程序的后台服务器。服务器102可以是一台服务器,也可以是由多台服务器组成的服务器集群,或者是一个云计算服务中心。可选地,服务器102可以同时为多个终端101中的应用程序提供后台服务。
上述图1示出的应用场景中的设备可以执行本申请实施例提供的渲染方法。在一些实现方式中,当终端101的图形用户界面显示的内容所关联的数据是终端101中运行的应用程序生成的数据时,可以由上述终端101执行本申请实施例提供的渲染方法。例如,终端101从游戏应用程序中获取生成的游戏数据,终端101可以对该游戏数据进行渲染,并将渲染后的结果通过终端101的图形用户界面显示给用户。可选的,在另一些实现方式中,当终端101的图形用户界面显示的内容所关联的数据是服务器102中运行的云游戏生成的数据时,可以由上述服务器102执行本申请实施例提供的渲染方法。例如,服务器102对服务器102中运行的云游戏生成的数据进行渲染获得渲染结果,并通过网络103将该渲染结果发送给终端101,以实现在终端101的图形用户界面显示该渲染结果的目的。下面,以终端101获取终端101中运行的应用程序对应的虚拟场景生成的数据为例,描述终端101获取该虚拟场景生成的数据的方法。在一些实现方式中,上述应用程序提供的图形用户界面中显示的的虚拟场景中设置有虚拟相机,终端101通过控制该虚拟相机可以实现对该虚拟场景的数据采集。在虚拟相机获得采集数据后,终端101控制虚拟相机调用终端101的处理器(例如,CPU和GPU)对该获得的采集数据进行渲染,以获得渲染结果。此后,终端101还可以将渲染结果通过该应用程序关联的图形用户界面进行输出。上述渲染过程中,虚拟相机需要调用终端101的处理器(例如,CPU和GPU),以对该虚拟相机获得的采集数据执行渲染操作。终端101的处理器对待处理数据进行处理时,是有先后顺序的。例如,终端101的处理器对先调用该处理器的待处理数据执行处理操作。基于此,当上述虚拟场景中设置多个虚拟相机时,该多个虚拟相机可以在多个时刻分别调用终端101的处理器,以使终端101的处理器在该多个时刻分别对该多个虚拟相机获得的采集数据执行渲染操作,以获得对应的多个渲染结果,该多个时刻与该多个虚拟相机一一对应。
网络103可以是有线网络或无线网络,本申请对此不作具体限定。上述无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网、但也能够是任何网络,包括但不限于局域网(local area network,LAN)、城域网(metropolitan area network,MAN)、广域网(wide area network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合)。在一些实施例中,使用包括超文本标记语言(hyper text mark-up language,HTML)、可扩展标记语言(extensible markup language,XML)等的技术和/或格式来代表通过网络交换的数据。此外还能够使用诸如安全套接字层(secure socket layer,SSL)、传输层安全(transport layer security,TLS)、虚拟专用网络(virtual private network,VPN)、网际协议安全(internet protocol security,IPsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还能够使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
应理解,上述图1示出的应用场景仅为示意,并不对适用于本申请实施例提供的渲染方法的应用场景构成任何限定。可选的,上述应用场景还可以包括更多数目的用户、终端101或服务器102。
随着互联网技术的发展,游戏由于其丰富的娱乐性能越来越受到用户的欢迎。在游戏启动时,需要先进行渲染,来显示与游戏相关的游戏场景,渲染完成之后,用户可以根据渲染结果进行相应的触控操作。示例性的,在上述图1示出的应用场景中,终端101需要先对终端101中的游戏应用程序所关联的运行数据进行渲染,以使将获得的渲染图像通过终端101提供的用户界面展示给用户。为提升用户游玩游戏的体验,开发人员对游戏进行开发时有以下需求:需要在同一个用户界面中显示对同一游戏虚拟场景执行不同渲染规则获得的不同的渲染图像,以及对不同的渲染图像的效果进行调试。
传统技术中提供了一种渲染方法,该方法的工作原理如下:在程序A中创建的目标虚拟场景中设置虚拟相机A,在程序B中创建的目标虚拟场景中设置虚拟相机B,虚拟相机A执行的渲染规则与虚拟相机B执行的渲染规则不同。例如,虚拟相机A执行的渲染规则为过度绘制的渲染规则,虚拟相机B的执行的渲染规则为遮挡剔除的渲染规则。然后,在预设时刻1,控制程序A内的机器人A按照预设路径对程序A中创建的目标虚拟场景包括的所有物体进行数据采集,获得采集数据A;以及控制程序B内的机器人B按照所述预设路径对程序B中创建的目标虚拟场景包括的所有物体进行数据采集,获得采集数据B。其中,程序A中创建的目标虚拟场景与程序B中创建的目标虚拟场景相同。此后,在预设时刻2,控制程序A对采集数据A进行渲染获得渲染图像A;以及在预设时刻2,控制程序B对采集数据B进行渲染,获得渲染图像B。最后,开发人员通过人机交互的方式将程序A获得的渲染图像A和程序B获得的渲染图像B合并至终端的同一个用户界面进行显示。但上述传统技术所提供的渲染方法,即利用多个程序中设置的多个虚拟相机对各自程序中创建的目标虚拟场景进行数据采集,以及利用该多个虚拟相机对采集获得的数据执行不同渲染规则时存在以下问题:(1)上述采集数据A是由程序A中设置的虚拟相机对程序A中创建的目标虚拟场景进行采集获得的,上述采集数据B是由程序B中设置的虚拟相机对程序B中创建的目标虚拟场景进行采集获得的,这种采集方式难以保证获得的采集数据A和采集数据B具有一致性(即,时间一致性和空间一致性)。也就是说,上述采集方式难以保证虚拟相机A和虚拟相机2在同一预设时刻(即,预设时刻1)采集获得的采集数据A和采集数据B完全相同。这样,导致程序A获得的渲染图像A和程序B获得的渲染图像B不是针对同一虚拟场景的渲染结果。进一步,根据这两个渲染图像进行渲染效果对比时,会存在误判现象,影响渲染效果的检测效率,无法满足用户的渲染需求。(2)上述渲染图像的合并采用半自动的合并方式,即需要人工将渲染图像A和渲染图像B合并。当检测图片的份数增加时,会花费更多的时间成本和人力成本、效率低下。同时,这种渲染显示方式,是在获得渲染图像A和渲染图像B后,通过人工方式将渲染图像A和渲染图像B进行合并以通过一个用户界面进行显示。也就是说,该方法不能实现在虚拟相机A执行渲染操作和虚拟相机B执行渲染操作时,在同一用户界面实时显示对同一虚拟场景执行不同渲染规则的不同渲染效果。(3)运行两个程序执行渲染方法会消耗更多的资源,也会增加人工成本。
为解决上述存在的问题,本申请实施例提供了一种渲染方法、装置和电子设备。接下来,结合附图介绍本申请实施例提供的渲染方法。
图2是本申请实施例提供的一种渲染方法的示意图。示例性的,图2所描述的渲染方法可以应用于上述图1示出的应用场景。在一些实现方式中,当终端101的用户界面显示游戏画面,且该游戏为云游戏时,图2所描述的渲染方法的执行主体可以是上述图1示出的服务器102。在另一些实现方式中,当终端101的用户界面显示游戏画面,且该游戏为终端101中安装的游戏应用程序所关联的游戏时,图2所述描述的渲染方法的执行主体可以是上述图1示出的终端101。如图2所示,本申请实施例提供的渲染方法包括S210至S230。下面,对S210至S230进行详细介绍。
S210,在应用程序中创建用于在第一图形用户界面中显示的虚拟场景,其中,虚拟场景包括第一虚拟相机和第二虚拟相机。
示例性的,当上述图1示出的终端101执行图2所描述的渲染方法时,上述S210中的应用程序可以是安装在终端101中的应用程序。示例性的,当上述图1示出的服务器102执行图2所描述的渲染方法时,上述S210中的应用程序可以是安装在服务器102中的应用程序。对应用程序的类型不作具体限定。在一些实现方式中,上述S210所描述的应用程序是基于物理引擎运行的应用程序,虚拟场景为游戏虚拟场景。可选的,在另一些实现方式中,上述S210所描述的应用程序是基于物理引擎运行的视频应用程序,虚拟场景可以为真实世界的仿真场景。对上述物理引擎程序的类型不作具体限定。例如,物理引擎程序可以但不限于是:Unity、UE、PhysX、或者Bullet。上述S210中所描述的应用程序中的第一图形用户界面,还可以理解为是该应用程序的一个运行窗口。示例性的,图4A示出的显示游戏虚拟场景的用户界面1,可以为上述第一图形用户界面显示的虚拟场景的一个具体示例。参见图4A,该用户界面1显示的虚拟场景包括虚拟相机1、虚拟相机2、虚拟人物1、虚拟人物2和虚拟建筑物。
虚拟场景,可以理解为是营造出的供虚拟对象进行活动(如游戏竞技)的场景(如虚拟房屋、虚拟岛屿、虚拟地图和虚拟建筑等),且在本申请实施例中,该虚拟场景包括多个虚拟相机。也就是说,本申请实施例中,虚拟场景可以包括以下内容:2个或2个以上的虚拟相机,以及供这2个或2个以上的虚拟对象进行活动的场景。可选的,该虚拟场景还可以包括在该虚拟场景中进行活动的一个或多个虚拟对象。对虚拟相机的类型不作具体限定。例如,虚拟相机可以是2D虚拟相机或3D虚拟相机。虚拟场景可以是对真实世界的仿真场景,也可以是半仿真半虚构的场景,还可以是纯虚构的场景。虚拟场景可以是二维虚拟场景,也可以是2.5维虚拟场景,或者是三维虚拟场景,本申请实施例对此不作具体限定。对虚拟对象不作具体限定。其中,虚拟对象可以是用户帐号在应用程序中控制的虚拟角色,也可以是由应用程序中的计算机程序控制的虚拟角色。
在一些实现方式中,执行上述S210,即在应用程序中创建用于在第一图形用户界面中显示的虚拟场景包括:根据预设虚拟相机参数,在应用程序中创建用于在第一图形用户界面中显示的虚拟场景,其中,预设虚拟相机参数指示第一虚拟相机和第二虚拟相机位于虚拟场景中的同一位置,以及指示第一虚拟相机的旋转角度和第二虚拟相机的旋转角度相同,第一虚拟相机和第二虚拟相机中的任意一个虚拟相机的旋转角度表示任意一个虚拟相机对虚拟场景进行数据采集所对应的拍摄视角。可选的,这种实现方式中,在执行上述S210之前还可以执行以下步骤:获取预设虚拟相机参数。对预设虚拟相机参数的来源不作具体限定。例如,预设虚拟相机参数可以是从源代码编辑器中获取的,例如该源代码编辑器可以是UE编辑器。又如预设虚拟相机参数可以是从电子设备的存储器或电子设备所关联的数据库中获得的。
可选的,在另一些实现方式中,执行上述S210,在应用程序中创建用于在第一图形用户界面中显示的虚拟场景包括:根据预设虚拟相机参数和预设虚拟对象信息,在应用程序中创建用于在第一图形用户界面中显示的虚拟场景,其中,预设虚拟相机参数指示第一虚拟相机和第二虚拟相机位于虚拟场景中的同一位置,以及指示第一虚拟相机的旋转角度和第二虚拟相机的旋转角度相同,第一虚拟相机和第二虚拟相机中的任意一个虚拟相机的旋转角度表示任意一个虚拟相机对虚拟场景进行数据采集所对应的拍摄视角;预设虚拟对象信息用于指示虚拟场景包括的虚拟对象的属性(例如,虚拟对象的形状、位置、运动状态和运行轨迹等)。对预设虚拟对象信息的来源不作具体限定。例如,预设虚拟对象信息可以是从源代码编辑器中获取的,例如该源代码编辑器可以是UE编辑器。又如,预设虚拟对象信息可以是从电子设备的存储器或电子设备所关联的数据库中获得的。
上述在应用程序中创建用于在第一图形用户界面中显示虚拟场景的方式中,创建好的虚拟场景包括的第一虚拟相机和第二虚拟相机设置于虚拟场景中的同一位置,且第一虚拟相机的旋转角度和第二虚拟相机的旋转角度相同。其中,虚拟场景包括的第一虚拟相机和第二虚拟相机在虚拟场景中的同一位置设置,即该第一虚拟相机和第二虚拟相机在该同一位置处于完全重叠放置。虚拟场景包括的第一虚拟相机和第二虚拟相机位于虚拟场景的同一位置是指,该第一虚拟相机和第二虚拟相机在虚拟场景中的空间位置相同。例如,在虚拟场景中的空间位置可以通过(x,y,z)表示的情况下,多个虚拟相机对应的多个(x,y,z)是相同的,单位:米(m)。一个虚拟相机的旋转角度,可以理解为该一个虚拟相机对虚拟场景进行拍摄的拍摄视角。一个虚拟相机的旋转角度可以表示为(x°,y°,z°),其中,x°代表绕该x轴旋转的度数,y°代表绕该y轴旋转的度数,z°代表绕该z轴旋转的度数。示例性的,图4A示出了本申请实施例提供的在虚拟场景中的位置1处设置两个虚拟相机的示意图。下文中的S301对图4A进行了描述,此处未详细赘述的内容可以参见下文S301。
S220,控制第一虚拟相机和第二虚拟相机在预设时刻对虚拟场景进行数据采集,获得采集数据,其中,第一虚拟相机和第二虚拟相机在同一时刻对虚拟场景进行数据采集所获得的采集数据相同。
对预设时刻不作具体限定。预设时刻可以是用户预定义的时刻,也可以是系统自定义的时刻。第一虚拟相机和第二虚拟相机中的任意一个虚拟相机在预设时刻对虚拟场景进行数据采集所持续的采集时长相同,且该任意一个虚拟相机在预设时刻对虚拟场景进行数据采集所持续的采集时长可以根据实际需求进行设置。例如,第一虚拟相机和第二虚拟相机中的任意一个个虚拟相机在预设时刻对虚拟场景进行数据采集所持续的采集时长为12毫秒(ms)。
执行上述S220,即控制第一虚拟相机和第二虚拟相机在预设时刻对虚拟场景进行数据采集,获得采集数据,包括:控制第一虚拟相机按照预设采集参数,在预设时刻对虚拟场景进行数据采集,获得采集数据;以及,控制第二虚拟相机按照预设采集参数,在预设时刻对虚拟场景进行数据采集,获得采集数据。其中,预设采集参数包括预定义的虚拟相机的旋转角度,且第一虚拟相机和第二虚拟相机在同一时刻的的旋转角度是相同的。可选的,在另一些实现方式中,上述预设采集参数还可以包括数据采用频率和/或相机转速。
对触发执行上述S220的触发条件不作具体限定。其中,触发条件可以包括以下至少一种条件:满足预设采集时刻、或者接收到用户输入的采集指令。例如,用户根据实际需求,可以确定在某个时刻通过安装有应用程序的终端的交互界面将采集指令发送给应用程序。
执行上述S210和S220,即在应用程序创建用于在第一图形用户界面中显示的虚拟场景中的同一位置设置多个虚拟相机(即,第一虚拟相机和第二虚拟相机),且该第一虚拟相机的旋转角度和第二虚拟相机的旋转角度相同。控制该多个虚拟相机按照相同的旋转角度在同一时刻对虚拟场景进行数据采集获得采集数据。上述实现方式可以保证第一虚拟相机和第二虚拟相机在同一时刻对虚拟场景执行采集操作所获得的采集数据具有一致性,即保证第一虚拟相机在预设时刻对虚拟场景进行数据采集获得的采集数据,与第二虚拟相机在预设时间对虚拟场景进行数据采集获得的采集数据是完全相同的。
S230,控制第一虚拟相机在目标帧按照第一渲染规则对采集数据进行渲染,输出第一渲染图像,以及,控制第二虚拟相机在目标帧按照第二渲染规则对采集数据进行渲染,输出第二渲染图像,其中,第一渲染规则和第二渲染规则不同。
第一渲染规则和第二渲染规则中的任意一个渲染规则表示对上述采集数据执行渲染的逻辑。对第一渲染规则对应的渲染逻辑和第二渲染规则对应的渲染逻辑不作具体限定,可以根据实际需求进行设置。在一些实现方式中,上述S230所描述的采集数据记录虚拟场景中的被遮挡的物体和未被遮挡的物体,其中,第一渲染规则是用于对被遮挡的物体和未被遮挡的物体进行渲染的规则;第二渲染规则是用于对未被遮挡的物体进行渲染的规则;或者第二渲染规则是用于对被遮挡的物体和未被遮挡的物体进行过度绘制的规则。
对第一渲染规则所指示的渲染流程和第二渲染规则所指示的渲染流程不作具体限定。在一些实现方式中,本申请实施例中的渲染规则(例如,第一渲染规则或第二渲染规则)所指示的渲染流程可以包括以下三个阶段:应用阶段、几何阶段和光栅化阶段。其中,应用阶段可以理解为数据准备阶段,包括位置信息,光照信息等,并设置模型材质、着色器(shader)等,上述数据又称为渲染状态。应用阶段会输出渲染所需的几何信息即渲染图元,交由几何阶段做渲染绘制处理。几何阶段可以理解为就是shader中的顶点(vert)和片元(frag),逐顶点逐片元对渲染图元做处理并将结果丢给第三阶段。光栅化阶段实现具体绘制,对得到的逐顶点数据做插值再进行逐像素处理。示例性的,下面,以控制虚拟相机执行对虚拟场景中的未被遮挡的物体进行渲染的规则为例,该渲染规则对应的渲染流程可以包括以下步骤:控制应用程序关联的CPU准备好需要被渲染的对象。也就是哪些物体需要被渲染,哪些物体需要被剔除(culled),剔除的常用方式包括视锥体剔除和遮挡剔除,并对需要渲染的对象进行排序;控制应用程序关联的CPU设置每个对象的渲染状态。渲染状态包括所使用的着色器、光源、材质等;控制应用程序关联的CPU发送绘制调用(drawcall)。当给定一个drawcall时,控制应用程序关联的GPU会根据渲染状态和输入的顶点数据进行计算;GPU根据渲染状态和输入的顶点数据进行渲染,并获得渲染图像。
实际应用中,终端提供的图形用户界面显示的内容(例如,视频或游戏画面)都是以“帧”为单位显示的。其中,一帧所耗费的时间非常短暂(毫秒级)。例如,当终端以每秒60帧刷新屏幕时,一帧所耗费的时间约为16.7ms。又如,当终端以每秒30帧刷新屏幕时,一帧所耗费的时间约为33ms。基于此,在一些实现方式中,目标帧包括第一时刻和第二时刻,控制第一虚拟相机在目标帧按照第一渲染规则对采集数据进行渲染,输出第一渲染图像,包括:控制第一虚拟相机在第一时刻按照第一渲染规则对采集数据进行渲染,输出第一渲染图像;控制第二虚拟相机在目标帧按照第二渲染规则对采集数据进行渲染,包括:控制第二虚拟相机在第二时刻按照第二渲染规则对采集数据进行渲染,输出第二渲染图像。这种实现方式中,应用程序中创建用于在第一图形用户界面中显示的一个虚拟场景包括的第一虚拟相机和第二虚拟相机,在目标帧按照每个虚拟相机对应的渲染规则对相同的采集数据执行渲染操作,可以实现在目标帧获得对同一虚拟场景的同一份采集数据执行不同渲染规则获得的不同渲染图像(即,第一渲染图像和第二渲染图像)。
本申请实施例中,对第一渲染规则和第二渲染规则中的任意一个渲染规则所采用的封装形式不作具体限定。在一些实现方式中,第一渲染规则通过第一应用程序接口封装,第二渲染规则通过第二应用程序接口封装,第一应用程序接口和第二应用程序接口不同,控制第一虚拟相机在目标帧按照第一渲染规则对采集数据进行渲染,包括:根据第一渲染规则,控制第一虚拟相机在目标帧调用第一应用程序接口封装对采集数据进行渲染;以及,控制第二虚拟相机在目标帧按照第二渲染规则对采集数据进行渲染,包括:根据第二渲染规则,控制第二虚拟相机在目标帧调用第二应用程序接口封装对采集数据进行渲染。可选的,上述渲染规则还可以通过除API以外的形式进行封装。例如,渲染规则还可以直接通过函数封装,这种方式中,可以通过调用渲染规则对应的函数以实现渲染规则所指示的渲染操作。
上述S230中,第一渲染图像是第一虚拟相机利用第一渲染规则对采集数据执行渲染操作获得的,第二渲染图像是第二虚拟相机利用第二渲染规则对该采集数据执行渲染操作获得的,第一渲染规则和第二渲染规则不同,即第一渲染图像和第二渲染图像是存在差异的、不完全相同。
实际应用中,可能存在渲染规则和该渲染规则对应的代码不匹配的问题。这种情况下,调用与该渲染规则不匹配的代码执行该渲染规则所获得的渲染结果并不能满足用户需求。可选的,在执行上述S230之后还可以执行以下步骤:根据第一渲染图像,确定第一渲染规则对应的第一代码和第一渲染规则是否匹配;如果第一代码和第一渲染规则不匹配,根据第一渲染规则对第一代码进行修改,以使修改后的第一代码与第一渲染规则匹配。可选的,在执行上述S230之后还可以执行以下步骤:根据第二渲染图像,确定第二渲染规则对应的第二代码和第二渲染规则是否匹配;如果第二代码与第二渲染规则不匹配,根据第二渲染规则对第二代码进行修改,以使修改后的第二代码与第二渲染规则匹配。对上述第一代码和第二代码的类型不作具体限定。例如,上述第一代码和上述第二代码的类型可以是逻辑代码。又如,上述第一代码和上述第二代码的类型可以是对逻辑代码进行编译后获得的编译代码,如二进制编辑代码。其中,每个渲染规则对应的代码与该每个渲染规则匹配,可以理解为,每个渲染规则对应的虚拟相机对采集数据按照该渲染规则执行的渲染操作所获得的渲染图像的效果,与该渲染规则所指示的渲染效果匹配。例如,一个虚拟相机对应的渲染规则为过度绘制的渲染规则,该一个虚拟相机执行该过度绘制的渲染规则获得的渲染图像的效果为对采集数据执行过度绘制的渲染效果,则可以认为该一个虚拟相机的渲染规则对应的源代码与该一个虚拟相机的渲染规则匹配。示例性的,下文中的S306中的方式一至方式三举例描述了“根据多个虚拟相机的多个渲染图像,确定每个虚拟相机的渲染规则对应的源代码与每个虚拟相机的渲染规则是否匹配”的具体示例,下文中的S307举例描述了“根据每个虚拟相机的渲染规则对源代码进行修改,以使修改后的源代码与每个虚拟相机的渲染规则匹配”的具体示例,此处未详细赘述的内容可以参见下文中的S306或S307。可选的,如果每个虚拟相机的渲染规则对应的源代码与每个虚拟相机的渲染规则不匹配,则结束渲染流程。
可选的,在一些实现方式中,上述应用程序中还创建有用于显示渲染图像的第二图形用户界面,第二图形用户界面包括第一区域和第二区域。这种实现方式中,执行上述S230,即控制第一虚拟相机在目标帧按照第一渲染规则对采集数据进行渲染,输出第一渲染图像,包括:控制第一虚拟相机在目标帧按照第一渲染规则在第一区域中对采集数据进行渲染,以使第一区域输出第一渲染图像;控制第二虚拟相机在目标帧按照第二渲染规则对采集数据进行渲染,输出第二渲染图像,包括:控制第二虚拟相机在目标帧按照第二渲染规则在第二区域中对采集数据进行渲染,以使第二区域输出第二渲染图像。上述第一区域和第二区域可以是第二图像用户界面包括的两个不存在重叠的区域。上述实现方式中,应用程序中创建用于在第一图形用户界面中显示的一个虚拟场景包括的第一虚拟相机和第二虚拟相机,在目标帧按照每个虚拟相机对应的渲染规则在每个虚拟相机关联的第二图形用户界面中的区域内对相同的采集数据执行渲染操作,使得第二图形用户界面可以在目标帧显示对同一虚拟场景的同一份采集数据执行不同渲染规则所获得的不同渲染图像。可选的,在创建第二图形用户界面后还可以执行以下步骤:调整第二图形用户界面中的第一区域和/或第二区域的位置和大小。例如,可以根据第二图形用户界面的大小确定第一区域和第二区域的大小。示例性的,图4B示出的用户界面2为上述第二图形用户界面的一种示意图。在图4B中,用户界面2中的第一区域和第二区域完全占据第二图形用户界面。示例性的,图4C示出的用户界面2为上述第二图形用户界面的另一种示意图。在图4C中,用户界面2中的第一区域和第二区域占用第二图形用户界面的部分界面,第二图形用户界面中未被占用的界面用黑色背景进行填充。示例性的,图4B示出的用户界面2可以是在上述应用程序中首次创建的第二图形用户界面的一种示意图,图4C示出的用户界面2可以是对上述首次创建的第二图形用户界面中的第一区域和第二区域进行大小调整后获得的用户界面示意图。
在本申请实施例中,对第一图形用户界面和第二图形用户界面不作具体限定。在一些实现方式中,第二图形用户界面和第一图形用户界面是在应用程序中创建的两个不同的图形用户界面。对第二图形用户界面中的第一区域和第二区域的形状和位置不作具体限定,具体可以根据用户需求进行设置。在一些实现方式中,第二图形用户界面中的第一区域和第二区域的大小是相同的。示例性的,下文中的S305中结合图4A举例描述了用户界面1中显示的虚拟场景包括2个虚拟相机,且该2个虚拟相机获得的渲染图像通过用户界面2中的2个区域输出,此处未详细赘述的内容可以参见下文S305,该用户界面1位上述第一图形用户界面的一个示例。示例性的,下文中的图4D中的(1)示出的用户界面2的第一区域显示了第一虚拟相机采用第一渲染规则渲染获得的第一渲染图像,第二区域显示了第二虚拟相机采用第二渲染规则渲染获得的第二渲染图像,此时,第二渲染规则是用于对虚拟场景包括的被遮挡的物体和未被遮挡的物体进行过度绘制的规则。可以理解的是,图4D中的(1)示出的用户界面2可以为上述应用程序的第二图形用户界面。
可选的,在另一些实现方式中,上述第一图形用户界面显示的虚拟场景中包括两个以上的虚拟相机,该两个以上的虚拟相机对应两个以上的渲染规则,且每个虚拟相机将获得的渲染图像通过第二图形用户界面中的对应区域输出。在一些实现方式中,上述两个以上的虚拟相机包括第一虚拟相机、第二虚拟相机和第三虚拟相机,每个虚拟相机在预设时刻对虚拟场景进行数据采集所获得的采集数据相同,且该采集数据记录虚拟场景中的被遮挡的物体和未被遮挡的物体。第一虚拟相机执行第一渲染规则,第二虚拟相机执行第二渲染规则,第三虚拟相机执行第三渲染规则;其中,第一渲染规则是用于对虚拟场景中的被遮挡的物体和未被遮挡的物体进行渲染的规则;第二渲染规则是用于对未被遮挡的物体进行渲染的规则;第三渲染规则是用于对虚拟场景中的被遮挡的物体和未被遮挡的物体进行过度绘制的规则。示例性的,图5示出了这种实现方式中,应用程序中的第二图形用户界面的示意图。参见图5,图5示出的第二图形用户界面的第一区域可以用于显示第一虚拟相机对该采集数据执行第一渲染规则获得的第一虚拟图像;第二区域可以用于显示第二虚拟相机对该采集数据执行第二渲染规则获得的第二虚拟图像;第三区域可以用于显示第三虚拟相机对该采集数据执行第三渲染规则获得的第三虚拟图像。可以理解的是,本申请实施例中创建的虚拟场景还可以设置更多数目的虚拟相机,应用程序中的第二图形用户界面还可以包括多个区域,该多个区域与多个虚拟相机关联,每个虚拟相机用于在关联的第二图形用户界面中的区域中对每个虚拟相机的采集数据进行渲染,并通过该关联的第二图形用户界面中的区域进行显示,且该每个虚拟相机的采集数据相同。
应理解的是,上述图2示出的渲染方法仅为示意,并不对本申请提供的渲染方法构成任何限定。上述图2示出的渲染方法以在第一图形用户界面显示的虚拟场景中创建两个虚拟相机,以及控制这两个虚拟相机利用两个渲染规则执行对应的渲染操作。可选的,在另一些实现方式中,还可以在第一图形用户界面显示的虚拟场景中创建两个以上的虚拟相机,以及控制这两个以上的虚拟相机利用两个以上的渲染规则执行对应的渲染操作。
在本申请实施例中,第一虚拟相机和第二虚拟相机是在同一应用程序创建的第一图形用户界面中显示的同一虚拟场景中设置的,这种设置方式,可以保证第一虚拟相机和第二虚拟相机在预设时刻对该虚拟场景进行数据采集所获得的采集数据是相同的。基于此,第一虚拟相机和第二虚拟相机中的任意一个虚拟相机在目标帧对同一份采集数据(对应同一虚拟场景)利用对应的渲染规则进行渲染,可以获得第一渲染规则对应的第一渲染图像和第二渲染规则对应的第二渲染图像。也就是说,该方法可以在同一帧(即,目标帧)获得对同一虚拟场景执行不同渲染规则对应的不同渲染图像,以更好的满足用户需求。上述在同一帧获得的对同一虚拟场景执行不同渲染规则对应的不同渲染图像,还可以通过上述同一应用程序中的第二图形用户界面中的对应区域进行输出展示给用户,即该方法可以在同一帧实时显示对同一虚拟场景执行不同渲染规则所获得的不同渲染图像,进一步满足用户需求。在第一渲染图像和第二渲染图像通过第二图形用户界面中对应的区域进行显示,这种显示方式可以方便开发人员检测渲染功能效果,以及也可以方便测试检测人员快速检测渲染功能是否有问题。上述渲染方法中,通过运行一个应用程序即可实现在同一帧(即,目标帧)获得对同一虚拟场景执行不同渲染规则对应的不同渲染图像,该方法还可以降低对运行该一个应用程序的资源的消耗。
下面,结合图3介绍本申请实施例提供的另一种渲染方法。可以理解的是,图3所述描述的渲染方法为上述图2所描述的渲染方法的一个具体示例。具体来说,图3所描述的渲染方法,是以上述图2所描述的渲染方法中的第一图形用户界面中显示的虚拟场景包括第一虚拟相机和第二虚拟相机,且该第一虚拟相机为虚拟相机1,第二虚拟相机为虚拟相机2;上述图2所描述的渲染方法中的应用程序为应用程序1;以及,上述图2所描述的渲染方法中的第一图形用户界面为用户界面1,第二图形用户界面为用户界面2为例进行描述的。
图3是本申请实施例提供的另一种渲染方法的示意图。应理解,图3的例子仅仅是为了帮助本领域技术人员理解本申请实施例,而非要将申请实施例限制于所示例的具体数值或具体场景。本领域技术人员根据下面所给出的图3的例子,显然可以进行各种等价的修改或变化,这样的修改和变化也落入本申请实施例的范围内。可以理解的是,图3示出的渲染方法可以以上述图1示出的终端101作为渲染方法的执行主体。如图3所示,该渲染方法包括S301至S305。可选的,该方法还可以包括S306至S308。下面,对S301至S308进行详细描述。
S301,获取虚拟场景配置信息,虚拟场景配置信息用于指示包括虚拟对象、虚拟相机1和虚拟相机2的游戏虚拟场景,且虚拟相机1和虚拟相机2均位于游戏虚拟场景中的位置1处,虚拟相机1的旋转角度和虚拟相机2的旋转角度相同。
游戏虚拟场景可以是对真实世界的仿真场景,也可以是半仿真半虚构的场景,还可以是纯虚构的场景。游戏虚拟场景可以是二维虚拟场景,也可以是2.5维虚拟场景,或者是三维虚拟场景,本申请实施例对此不作具体限定。对虚拟对象不作具体限定。其中,虚拟对象可以是用户帐号在应用程序1中控制的虚拟角色,也可以是由应用程序1中的计算机程序控制的虚拟角色。对虚拟场景配置信息的来源不作具体限定。例如,虚拟场景配置信息可以是从源代码编辑器中获取的,例如该源代码编辑器可以是UE编辑器。又如,虚拟场景配置信息可以是从电子设备的存储器或电子设备所关联的数据库中获得的。
在游戏虚拟场景的同一位置(即位置1)处设置两个虚拟相机(即虚拟相机1和虚拟相机2),该同一位置是指在虚拟场景中的空间位置相同。示例性的,所述虚拟场景中的空间位置可以通过(x,y,z)表示,单位:米(m)。一个虚拟相机的旋转角度可以表示为(x°,y°,z°),其中,x°代表绕该x轴旋转的度数,y°代表绕该y轴旋转的度数,z°代表绕该z轴旋转的度数。示例性的,可以通过查看相机属性信息,获取虚拟相机1的旋转角度和虚拟相机2的旋转角度。对上述位置1在游戏虚拟场景中的位置不作具体限定。例如,位置1可以是系统随机确定的游戏虚拟场景中的一个位置。又如,位置1可以是用户指定的游戏虚拟场景中的一个位置。示例性的,图4A示出了本申请实施例提供的在游戏虚拟场景中的位置1处设置两个虚拟相机的示意图。可以理解的是,图4A示出的虚拟相机包括虚拟相机1和虚拟相机2,这两个虚拟相机完全重叠放置,且这两个虚拟相机的旋转角度完全相同。对上述虚拟相机1和虚拟相机2的类型不作具体限定。例如,虚拟相机1和虚拟相机2可以为2D虚拟相机、或3D虚拟相机。
S302,根据虚拟场景配置信息,在应用程序1中的用户界面1中创建游戏虚拟场景。
应用程序1可以是图1示出的终端101中安装的基于游戏引擎运行的游戏应用程序。对该游戏应用程序的类型不作具体限定。例如,该游戏应用程序可以为以下任意一种:MMORP游戏、MMO游戏或MMOS游戏。
对在游戏虚拟场景的位置1处设置虚拟相机1和虚拟相机2的实现方式中不作具体限定。在一些实现方式中,将相机工具运行所需的所有的资源打包成游戏引擎兼容的资源包,游戏引擎可以是Unity引擎。例如,利用终端101运行的Unity引擎提供的ExportPackage功能将相机工具运行所需的资源打包成Unity资源包,当需要使用相机工具时,在游戏引擎中可以利用Import Package导入该资源包,将相机工具拖入虚拟现实场景即可使用。通过将相机工具打包成资源包,可以使相机工具的使用更加便捷,而且对游戏项目没有依赖,实现即插即用的效果。
S303,控制虚拟相机1和虚拟相机2在时刻1按照预设的相机的旋转角度对游戏虚拟场景进行采集,虚拟相机1获得采集数据1,以及虚拟相机2获得采集数据2,采集数据1与采集数据2相同。
时刻1是执行上述S301和S302之后的一个时刻。采集数据1与采集数据2相同。具体来说,采集数据1包括用于记录在时刻1游戏虚拟场景所包括的所有物体的数据,同样的,采集数据2也包括用于记录在时刻1游戏虚拟场景所包括的所有物体的数据。示例性的,以图4A示出的场景为上述游戏虚拟场景在时刻1的场景,这种实现方式中,采集数据1包括用于记录图4A示出的场景所包括的2个虚拟人物和一个虚拟建筑物的数据,同样的,采集数据2也包括用于记录图4A示出的场景所包括的2个虚拟人物和一个虚拟建筑物的数据。虚拟相机1的采集频率和虚拟相机2的采集频率可以相同或不同。
对控制虚拟相机在时刻1按照预设的相机的旋转角度对游戏虚拟场景生成的数据进行数据采集的实现方式不作限定。示例性的,控制虚拟相机1在时刻1按照预设的相机的旋转角度对游戏虚拟场景的数据进行采集,包括:虚拟相机1在时刻1按照预设的相机的旋转角度跟随游戏虚拟场景中移动的虚拟对象的移动而移动。对触发执行上述S303的触发条件不作具体限定。在一些实现方式中,响应于满足预设条件,执行上述S303。其中,所述预设条件可以为以下至少一种条件:预设采集时间、或用户输入采集指令。
S304,控制虚拟相机1在目标帧的时刻#1调用第一渲染函数在应用程序1的用户界面2的第一区域对采集数据1进行渲染,以使在第一区域输出虚拟相机1获得的第一渲染图像。
S305,控制虚拟相机2在目标帧的时刻#2调用第二渲染函数在应用程序1的用户界面2的第二区域对采集数据2进行渲染,以使在第二区域输出虚拟相机2获得的第二渲染图像。
上述S304中,第一渲染图像是控制虚拟相机1在目标帧的时刻#1调用第一渲染函数对采集数据1进行渲染获得的渲染图像。上述S305中,第二渲染图像是控制虚拟相机2在目标帧的时刻#2调用第二渲染函数对采集数据2进行渲染获得的渲染图像。
实际应用中,终端提供的用户界面显示的内容(例如,视频或游戏画面)都是以“帧”为单位显示的。基于此,上述S304中所描述的虚拟相机1执行的渲染操作和上述S305中所描述的虚拟相机2所执行的渲染操作都是在同一帧(即,目标帧)实现的。换句话说,执行上述S304和上述S305,即在到达目标帧时,开启虚拟相机1执行上述S304所描述的渲染操作,以及开启虚拟相机2执行上述S305所描述的渲染操作。其中,一帧所耗费的时间非常短暂(毫秒级),也就是说,用户认为终端提供的用户界面2包括第一区域显示的第一渲染图像和第二区域显示的第二渲染图像是实时渲染出来的,以及通过同一帧(即,目标帧)所对应的帧图像在用户界面2中进行显示的。
上述S304中的时刻#1与上述S305中的时刻#2不同。也就是说,时刻#1和时刻#2分别为目标帧所包括的多个时刻中的不同的两个时刻。示例性的,以每秒60帧为例,这种方式中,一帧所耗费的时间约为16.7ms,上述S304所描述的目标帧的时刻#1可以是该一帧所耗费16.7ms中的第8ms,也就是说,在该第8ms虚拟相机1执行对应的渲染操作;上述S305所描述的目标帧的时刻#2可以是该一帧所耗费16.7ms中的第12ms,也就是说,在该第12ms虚拟相机2执行对应的渲染操作。
第一渲染函数用于指示对采集数据1进行渲染的方式。第二渲染函数用于指示对采集数据2进行渲染的方式。其中,第一渲染函数的功能与第二渲染函数的渲染功能不同。相应的,第一渲染函数对应的渲染方式与第二渲染函数对应的渲染方式也不同。在本申请实施例中,对第一渲染函数的渲染功能和第二渲染函数的渲染功能不作具体限定,仅需满足第一渲染函数的功能与第二渲染函数的渲染功能不同。实际应用中,可以根据用户需求选择第一渲染函数的功能和第二渲染函数的功能。例如,第一渲染函数的渲染功能用于指示对采集数据1所记录的所有物体进行渲染;第二渲染函数的渲染功能用于指示对采集数据2所记录的所有物体进行过度绘制渲染。例如,第一渲染函数的渲染功能用于指示对采集数据1所记录的所有物体进行渲染,第二渲染函数的渲染功能用于指示对采集数据2所记录的所有物体中的未被遮挡的物体进行渲染。例如,第一渲染函数的渲染功能用于指示对采集数据1所记录的所有物体中的不透明物体进行渲染;第二渲染函数的渲染功能用于指示对采集数据2所记录的所有物体进行过度绘制渲染。其中,上述示例中的所有物体包括被遮挡的物体和未被遮挡的物体。
第一渲染图像和第二渲染图像是针对相同的采集数据执行不同渲染函数获得的渲染图像,故第一渲染图像与第二渲染图像不完全相同。也就是说,第一渲染图像和第二渲染图像是存在差异的。示例性的,图4D中的(1)示出的用户界面2的第一区域显示的第一渲染图像为对虚拟场景包括的所有物体进行渲染的渲染图像,第二区域显示的第二渲染图像为对虚拟场景包括的所有物体进行过度绘制的渲染图像。对比4C中的(1)示出的两个渲染结果,可知这两个渲染结果是对游戏虚拟场景中的同一时刻同一位置的不同渲染效果的实时渲染显示结果。
在本申请实施例中,可以将第一渲染函数封装为第一API接口,将第二渲染函数封装为第二API接口。这种实现方式中,控制虚拟相机1调用第一渲染函数对采集数据1进行渲染获得第一渲染图像,包括:控制虚拟相机1调用第一API接口,通过第一API接口对采集数据1进行渲染获得第一渲染图像。控制虚拟相机2调用第二渲染函数对采集数据2进行渲染获得第二渲染图像,包括:控制虚拟相机2调用第二API接口,通过第二API接口对采集数据2进行渲染获得第二渲染图像。
应用程序1的用户界面2的第一区域和应用程序1的用户界面2的第二区域不存在重叠。在一些实现方式中,第一区域和第二区域各占应用程序1的用户界面2的一半界面。示例性的,图4B示出的用户界面2中的第一渲染图像所在区域为第一区域,第二渲染图像所在区域为第二区域。可选的,在另一些实现方式中,第一区域和第二区域共占用应用程序1的用户界面2的部分界面。这种实现方式,应用程序1的用户界面2中除去第一区域和第二区域之外的其他区域还可以设置为背景颜色(例如,白色或黑色)。可选的,应用程序1的用户界面2中除去第一区域和第二区域之外的其他区域还可以显示其他虚拟相机的渲染结果。示例性的,图4C示出的用户界面2中的第一渲染图像所在区域为第一区域,第二渲染图像所在区域为第二区域,除去第一区域和第二区域以外的区域被设置为黑色填充。可以理解的是,上述以第一区域的大小与第二区域的大小相同,且第一区域和第二区域分别位于应用程序1的用户界面2的两侧为例进行了说明。可选的,在另一些实现方式中,第一区域的大小与第二区域的大小可以不同,例如第一区域小于或大于第二区域。可选的,在执行上述S304之前还可以执行以下步骤:调整虚拟相机1所关联的第一区域的位置和大小。可选的,在执行上述S305之前还可以执行以下步骤:调整虚拟相机2所关联的第二区域的位置和大小。示例性的,上述S304和S305中所描述的应用程序1的用户界面2的分辨率可以为1920×1080,这种场景中,第一渲染图像的大小可以为960×540,第二渲染图像的大小可以为960×540,第一渲染图像的第一区域可以位于应用程序1的用户界面2的左侧,第二渲染图像的第二区域可以位于应用程序1的用户界面2的右侧。这种实现方式中,用户界面2仅包括第一区域和第二区域。示例性的,图4B示出了这种实现方式中用户界面2的示意图。
执行上述S301至上述S305,可以理解为,在运行一个应用程序(即,应用程序1)的情况下,通过在该一个应用程序创建的游戏虚拟场景中的同一位置设置两个虚拟相机(即,虚拟相机1和虚拟相机2),且设置这两个虚拟相机的旋转角度相同,以保证这两个相机在同一时刻从游戏虚拟场景获取到的数据是一致的。此后,通过该两个虚拟相机调用不同渲染函数对该获取的一致的数据执行不同渲染功能,最后通过该一个应用程序的用户界面(即,用户界面2)实时显示不同的渲染结果。上述渲染方法,避免了传统技术中获得的待渲染数据存在时间不一致和空间不一致的问题,根据该渲染方法获得的渲染结果能够更好的满足用户需求。
实际应用中,可能存在第一渲染函数的渲染功能和/或第二渲染函数的渲染功能不能满足用户预设的渲染需求,其中,用户预设的渲染需求,是指控制虚拟相机对采集数据执行渲染操作的渲染需求。例如,用户需要虚拟相机2关联的第二渲染函数的渲染功能实现遮挡剔除的渲染结果,但实际执行第二渲染函数获得的渲染结果把未被遮挡的物体也进行了剔除,即没有渲染未被遮挡的物体。这种情况下,可以认为第二渲染函数的渲染功能不能满足用户预设的渲染需求。上述一个渲染函数的渲染功能不能满足用户预设的渲染需求,还可以理解为,该一个渲染函数对应的源代码不能满足用户预设的渲染需求。为解决上述渲染函数的渲染功能与用户预设的渲染需求不匹配问题,本申请基于上述渲染方法,进一步提供了以下技术方案以解决上述不匹配的问题。该方法的基本原理包括:通过对比上述用户界面2第一区域显示的第一渲染函数的第一渲染图像和第二区域显示的第二渲染函数的第二渲染图像,确定第一渲染函数的渲染功能和/或第二渲染函数的渲染功能是否满足用户的预设渲染需求。
下面,结合S306至S308以“对比上述用户界面2第一区域显示的第一渲染函数的第一渲染图像和第二区域显示的第二渲染函数的第二渲染图像,确定第二渲染函数的渲染功能是否满足用户的预设渲染需求。”为例进行描述。可以理解的是,第一渲染函数的渲染功能是否满足用户的预设渲染需求的判断原理与S306至S308描述的判断原理是类似或相同的。
S306,根据第一渲染图像和第二渲染图像,确定第二渲染函数的渲染功能是否满足用户的预设渲染需求。
其中,根据第一渲染图像和第二渲染图像,确定第二渲染函数的渲染功能是否满足用户的预设渲染需求,包括:在确定第二渲染函数的渲染功能满足用户的预设渲染需求情况下,在执行S306之后执行S308;或者,在确定第二渲染函数的渲染功能不满足用户的预设渲染需求的情况下,在执行S306之后执行S307。
下面,结合具体示例,描述不同实现方式中“确定第二渲染函数的渲染功能是否满足用户的预设渲染需求”的方法。
实现方式一:
实现方式一中,第一渲染函数的渲染功能用于指示对采集数据1所记录的所有物体执行渲染,第二渲染函数的渲染功能用于指示对采集数据2所记录的所有物体执行过度绘制渲染,其中,所有物体包括被遮挡的物体和未被遮挡的物体。执行正常渲染即对同一像素点仅执行一次渲染操作,过度绘制渲染即对同一像素点执行多次渲染操作。可以理解的是,被执行多次渲染操作的像素点的亮度高于被执行一次渲染操作的像素点的亮度。示例性的,图4D中的(1)示出了用户界面2的第一区域显示第一渲染图像为对虚拟场景包括的所有物体进行渲染的渲染图像,第二区域显示第二渲染图像为对虚拟场景包括的所有物体进行过度绘制的渲染图像。与第一区域显示的第一渲染图像相比,可以发现第二区域示出的渲染图像中的一些像素点的颜色亮度高于对应第一区域示出的渲染图像中的像素点的颜色亮度。也就是说,第二区域显示的第二渲染图像是过度绘制渲染的渲染结果,可以认为该第二渲染图像所关联的第二渲染函数的渲染功能可以满足用户的预设渲染需求。
实现方式二:
实现方式一中,第一渲染函数的渲染功能用于指示对采集数据1所记录的所有物体执行渲染,第二渲染函数的渲染功能用于指示对采集数据2所记录的所有物体中的未被遮挡的物体进行渲染,其中,所有物体包括被遮挡的物体和未被遮挡的物体。示例性的,图4D中的(2)示出了用户界面2的第一区域显示第一渲染图像为对虚拟场景包括的未被遮挡的物体进行渲染的渲染图像,第二区域显示第二渲染图像为对虚拟场景包括的所有物体进行渲染的渲染图像。与第二区域显示的第一渲染图像相比,可以发现被遮挡的物体在第一区域示出的渲染图像中并未被渲染,即被遮挡的物体在第一区域示出的渲染图像中没有显示。同时,未被遮挡的物体成功在第二区域示出的渲染图像中显示。也就是说,第二区域显示的第二渲染图像是遮挡剔除的渲染结果,该第二渲染图像所关联的第二渲染函数的渲染功能能够满足用户的预设渲染需求。
上述实现方式一和实现方式二描述了“确定第二渲染函数的渲染功能满足用户的预设渲染需求”的示例。下面,结合实现方式三,描述“确定第二渲染函数的渲染功能不满足用户的预设渲染需求”的示例。
实现方式三:
实现方式一中,第一渲染函数的渲染功能用于指示对采集数据1所记录的所有物体执行渲染,第二渲染函数的渲染功能用于指示对采集数据2所记录的所有物体中的未被遮挡的物体进行渲染,其中,所有物体包括被遮挡的物体和未被遮挡的物体。示例性的,图4D中的(3)示出了用户界面2的第一区域显示第一渲染图像为对虚拟场景包括的未被遮挡的物体进行渲染的渲染图像,第二区域显示第二渲染图像为对虚拟场景包括的所有物体进行渲染的渲染图像。通过比较上述两个渲染结果,可以发现第二区域显示的渲染结果中未被遮挡的物体也并未被渲染出来,如第一区域中虚线圆圈内的未被遮挡的物体并未在第二区域内渲染。也就是说,该第二渲染图像所关联的第二渲染函数的渲染功能不能够满足用户的预设渲染需求。
需说明的是,上述实现方式一至上述实现方式三中均以“第一渲染函数的渲染功能用于指示对采集数据1所记录的所有物体执行渲染”为例进行描述。可选的,上述第一渲染函数的渲染功能还可以为其他渲染功能,例如,第一渲染函数的渲染功能用于指示对采集数据1所记录的所有不透明的物体执行渲染。又如,第一渲染函数的渲染功能用于指示对采集数据1所记录的所有物体中的大于预设大小的物体进行渲染。
S307,对第二渲染函数所关联的代码进行修改。
在执行上述S307之后,还可重新执行本申请实施例提供的渲染流程。具体来说,重新执行渲染流程时,上述S305中的第二渲染函数已经是根据上述S307修改后的渲染函数,且上述S305中的第二区域显示的第二渲染图像也是根据执行修改后的第二渲染函数对采集数据2进行渲染获得的渲染图像。
执行上述S306和S307,即可以通过对比同一个用户界面2包括的不同区域分别显示的对同一数据执行不同渲染功能的渲染结果,确定不同渲染功能所关联的函数功能是否有误。例如,程序中设置执行遮挡剔除渲染,但渲染结果中将未被遮挡的物体也给剔除掉了,即渲染结果中并未显示该未被遮挡的物体。上述通过一个用户界面2显示对同一数据的不同渲染功能对应的不同渲染几个,可以方便开发人员检测渲染功能效果,也可以方便测试检测人员快速检测渲染函数的渲染功能是否有问题。
S308,结束渲染流程。
应理解的是,上述图3所描述的渲染方法仅为示意,并不对本申请实施例提供的渲染方法构成任何限定。上述图3所描述的渲染方法以在游戏虚拟场景的同一位置和视场角设置两个虚拟相机为例描述了本申请实施例提供的渲染方法。可选的,在另一些实现方式中,还可以在游戏虚拟场景的同一位置和视场角设置两个以上的虚拟相机,相应的,应用程序1的用户界面2设置两个以上的区域,该两个以上的区域与该两个以上的虚拟相机一一对应,每个区域用于显示对应的虚拟相机执行对应的渲染函数的渲染结果。示例性的,游戏虚拟场景的同一位置设置有3虚拟相机(虚拟相机1、虚拟相机2和虚拟相机3),且这3个虚拟相机具体相同的旋转角度。也就是说,虚拟相机1采集到的采集数据#1,虚拟相机2采集到的采集数据#2,以及虚拟相机3采集到的采集数据#3中的任意两个采集数据是相同的。其中,虚拟相机1执行对采集数据1所记录的所有物体进行渲染的操作,虚拟相机2对采集数据2所记录的所有物体中的未被遮挡的物体进行渲染的操作,虚拟相机3对采集数据3所记录的所有物体进行过渡绘制渲染的操作。这种实现方式中,应用程序1的用户界面2可以设置有3个区域,具体参见图5示出的第二图形用户界面为该应用程序1的用户界面2的一种示意图,图5中示出的第一渲染图像可以显示虚拟相机1的渲染结果,第二渲染图像可以显示虚拟相机2的渲染结果,第三渲染图像可以显示虚拟相机3的渲染结果。
在本申请实施例中,在终端中的一个应用程序中创建一个游戏虚拟场景,且在该游戏虚拟场景中的同一位置设置两个虚拟相机(即,虚拟相机1和虚拟相机2),且设置这两个虚拟相机的旋转角度相同,这种设置方式可以保证这两个虚拟相机在同一时刻从游戏虚拟场景获取到的采集数据(即,采集数据1和采集数据2)具有一致性(即,时间一致性和空间一致性)。接下来,通过控制这两个虚拟相机在同一帧(即,目标帧)调用不同渲染函数在用户界面2中的两个区域(即,第一区域和第二区域)对该获取的具有一致性的采集数据执行不同的渲染功能,使得在该同一帧内通过用户界面2中的两个区域实时显示这两个虚拟相机获得的两个不同的渲染结果(即,第一渲染图像和第二渲染图像)。上述渲染方法,避免了传统技术中不同虚拟相机采集获得的采集数据存在时间不一致和空间不一致的问题,以及避免了传统技术中不能实现在同一帧实时渲染不同虚拟相机获得的不同渲染结果的问题。上述渲染方法,保证不同虚拟相机是对具有一致性的数据(即,同一份数据)执行不同逻辑的渲染,进一步,基于该渲染方法获得的渲染结果能够更好的满足用户(例如,开发人员)需求。综上,该方法可以在同一帧实时显示对同一虚拟场景执行不同渲染规则所获得的不同渲染图像,以及更好的满足用户需求。此外,上述第一渲染图像和第二渲染图像通过同一个用户界面2中的两个区域进行显示,这种显示方式可以方便开发人员检测渲染功能效果,以及也可以方便测试检测人员快速检测渲染功能是否有问题。
上文,结合图1至图5详细介绍了本申请提供的渲染方法适用的应用场景和渲染方法。下面,结合图6和图7介绍本申请提供的渲染装置和电子设备。应理解,上文中渲染方法与下文中的渲染装置、电子设备相对应。下文中未详细描述的内容可以参见上述方法实施例中的相关描述。
图6是本申请实施例提供的一种渲染装置的结构示意图。如图6所示,该装置包括处理单元601、采集单元602、第一渲染单元603和第二渲染单元604,其中,
所述处理单元601用于:在应用程序中创建用于在第一图形用户界面中显示的虚拟场景,其中,所述虚拟场景包括第一虚拟相机和第二虚拟相机;所述采集单元602用于:控制所述第一虚拟相机和所述第二虚拟相机在预设时刻对所述虚拟场景进行数据采集,获得采集数据,其中,所述第一虚拟相机和所述第二虚拟相机在同一时刻对所述虚拟场景进行数据采集所获得的采集数据相同;所述第一渲染单元603用于:控制所述第一虚拟相机在目标帧按照第一渲染规则对所述采集数据进行渲染,输出第一渲染图像;所述第二渲染单元604用于:控制所述第二虚拟相机在所述目标帧按照第二渲染规则对所述采集数据进行渲染,输出第二渲染图像,其中,所述第一渲染规则和所述第二渲染规则不同。
可选的,在一些实现方式中,所述目标帧包括第一时刻和第二时刻,所述第一渲染单元603还用于:控制所述第一虚拟相机在所述第一时刻按照所述第一渲染规则对所述采集数据进行渲染,输出所述第一渲染图像;所述第二渲染单元604还用于:控制所述第二虚拟相机在所述第二时刻按照所述第二渲染规则对所述采集数据进行渲染,输出所述第二渲染图像。
可选的,在另一些实现方式中,所述应用程序中还创建有用于显示渲染图像的第二图形用户界面,所述第二图形用户界面包括第一区域和第二区域,所述第一渲染单元603还用于:控制所述第一虚拟相机在所述目标帧按照所述第一渲染规则在所述第一区域中对所述采集数据进行渲染,以使所述第一区域输出所述第一渲染图像;所述第二渲染单元604还用于:控制所述第二虚拟相机在所述目标帧按照所述第二渲染规则在所述第二区域中对所述采集数据进行渲染,以使所述第二区域输出所述第二渲染图像。
可选的,在另一些实现方式中,所述第一渲染规则通过第一应用程序接口封装,所述第二渲染规则通过第二应用程序接口封装,所述第一应用程序接口和所述第二应用程序接口不同,所述第一渲染单元603还用于:根据所述第一渲染规则,控制所述第一虚拟相机在所述目标帧调用所述第一应用程序接口封装对所述采集数据进行渲染;所述第二渲染单元604还用于:根据所述第二渲染规则,控制所述第二虚拟相机在所述目标帧调用所述第二应用程序接口封装对所述采集数据进行渲染。
可选的,在另一些实现方式中,所述处理单元601还用于:根据预设虚拟相机参数,在所述应用程序中创建用于在所述第一图形用户界面中显示的所述虚拟场景,其中,所述预设虚拟相机参数指示所述第一虚拟相机和所述第二虚拟相机位于所述虚拟场景中的同一位置,以及指示所述第一虚拟相机的旋转角度和所述第二虚拟相机的旋转角度相同,所述第一虚拟相机和所述第二虚拟相机中的任意一个虚拟相机的旋转角度表示所述任意一个虚拟相机对所述虚拟场景进行数据采集所对应的拍摄视角。
可选的,在另一些实现方式中,所述处理单元601还用于:根据所述第一渲染图像,确定所述第一渲染规则对应的第一代码和所述第一渲染规则是否匹配;如果所述第一代码和所述第一渲染规则不匹配,根据所述第一渲染规则对所述第一代码进行修改,以使修改后的第一代码与所述第一渲染规则匹配。
可选的,在另一些实现方式中,所述处理单元601还用于:根据所述第二渲染图像,确定所述第二渲染规则对应的第二代码和所述第二渲染规则是否匹配;如果所述第二代码与所述第二渲染规则不匹配,根据所述第二渲染规则对所述第二代码进行修改,以使修改后的第二代码与所述第二渲染规则匹配。
可选的,在另一些实现方式中,所述采集数据记录所述虚拟场景中被遮挡的物体和未被遮挡的物体,其中,所述第一渲染规则是用于对所述被遮挡的物体和所述未被遮挡的物体进行渲染的规则;所述第二渲染规则是用于对所述未被遮挡的物体进行渲染的规则;或者所述第二渲染规则是用于对所述被遮挡的物体和所述未被遮挡的物体进行过度绘制的规则。
可选的,在另一些实现方式中,所述应用程序是基于游戏引擎运行的应用程序,所述虚拟场景为游戏虚拟场景。
图7是本申请实施例提供的一种电子设备的结构示意图。如图7所示,包括存储器701、处理器702、通信接口703以及通信总线704。其中,存储器701、处理器702、通信接口703通过通信总线704实现彼此之间的通信连接。
存储器701可以是只读存储器(read only memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(random access memory,RAM)。存储器701可以存储程序,当存储器701中存储的程序被处理器702执行时,处理器702和通信接口703用于执行本申请实施例的渲染方法的各个步骤。
处理器702可以采用通用的中央处理器(central processing unit,CPU),微处理器,应用专用集成电路(application specific integrated circuit,ASIC),图形处理器(graphics processing unit,GPU)或者一个或多个集成电路,用于执行相关程序,以实现本申请实施例的渲染装置中的单元所需执行的功能。
处理器702还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请提供的渲染方法的各个步骤可以通过处理器702中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器702还可以是通用处理器、数字信号处理器(digital signalprocessing,DSP)、专用集成电路(ASIC)、现成可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器701,处理器702读取存储器701中的信息,结合其硬件完成本申请实施例的渲染装置中包括的单元所需执行的功能,或者执行本申请方法实施例的渲染方法。
通信接口703使用例如但不限于收发器一类的收发装置,来实现图7所示的设备与其他设备或通信网络之间的通信。
通信总线704可包括在图7所示的设备各个部件(例如,存储器701、处理器702、通信接口703)之间传送信息的通路。
本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质包括计算机指令,计算机指令在被处理器执行时用于实现本申请实施例中任意一种渲染方法的技术方案。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个计算机可读介质上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本申请公开实施方式的方法。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储介质或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
Claims (12)
1.一种渲染方法,其特征在于,所述方法包括:
在应用程序中创建用于在第一图形用户界面中显示的虚拟场景,其中,所述虚拟场景包括第一虚拟相机和第二虚拟相机;
控制所述第一虚拟相机和所述第二虚拟相机在预设时刻对所述虚拟场景进行数据采集,获得采集数据,其中,所述第一虚拟相机和所述第二虚拟相机在同一时刻对所述虚拟场景进行数据采集所获得的采集数据相同;
控制所述第一虚拟相机在目标帧按照第一渲染规则对所述采集数据进行渲染,输出第一渲染图像,以及,控制所述第二虚拟相机在所述目标帧按照第二渲染规则对所述采集数据进行渲染,输出第二渲染图像,其中,所述第一渲染规则和所述第二渲染规则不同。
2.根据权利要求1所述的方法,其特征在于,所述目标帧包括第一时刻和第二时刻,
所述控制所述第一虚拟相机在目标帧按照第一渲染规则对所述采集数据进行渲染,输出第一渲染图像,包括:
控制所述第一虚拟相机在所述第一时刻按照所述第一渲染规则对所述采集数据进行渲染,输出所述第一渲染图像;
所述控制所述第二虚拟相机在所述目标帧按照第二渲染规则对所述采集数据进行渲染,包括:
控制所述第二虚拟相机在所述第二时刻按照所述第二渲染规则对所述采集数据进行渲染,输出所述第二渲染图像。
3.根据权利要求1或2所述的方法,其特征在于,所述应用程序中还创建有用于显示渲染图像的第二图形用户界面,所述第二图形用户界面包括第一区域和第二区域,
所述控制所述第一虚拟相机在目标帧按照第一渲染规则对所述采集数据进行渲染,输出第一渲染图像,包括:
控制所述第一虚拟相机在所述目标帧按照所述第一渲染规则在所述第一区域中对所述采集数据进行渲染,以使所述第一区域输出所述第一渲染图像;
所述控制所述第二虚拟相机在所述目标帧按照第二渲染规则对所述采集数据进行渲染,输出第二渲染图像,包括:
控制所述第二虚拟相机在所述目标帧按照所述第二渲染规则在所述第二区域中对所述采集数据进行渲染,以使所述第二区域输出所述第二渲染图像。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述第一渲染规则通过第一应用程序接口封装,所述第二渲染规则通过第二应用程序接口封装,所述第一应用程序接口和所述第二应用程序接口不同,
所述控制所述第一虚拟相机在目标帧按照第一渲染规则对所述采集数据进行渲染,包括:
根据所述第一渲染规则,控制所述第一虚拟相机在所述目标帧调用所述第一应用程序接口封装对所述采集数据进行渲染;以及,
所述控制所述第二虚拟相机在所述目标帧按照第二渲染规则对所述采集数据进行渲染,包括:
根据所述第二渲染规则,控制所述第二虚拟相机在所述目标帧调用所述第二应用程序接口封装对所述采集数据进行渲染。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述在应用程序中创建用于在第一图形用户界面中显示的虚拟场景,包括:
根据预设虚拟相机参数,在所述应用程序中创建用于在所述第一图形用户界面中显示的所述虚拟场景,其中,所述预设虚拟相机参数指示所述第一虚拟相机和所述第二虚拟相机位于所述虚拟场景中的同一位置,以及指示所述第一虚拟相机的旋转角度和所述第二虚拟相机的旋转角度相同,所述第一虚拟相机和所述第二虚拟相机中的任意一个虚拟相机的旋转角度表示所述任意一个虚拟相机对所述虚拟场景进行数据采集所对应的拍摄视角。
6.根据权利要求1至5任一项所述的方法,其特征在于,在所述输出第一渲染图像之后,所述方法还包括:
根据所述第一渲染图像,确定所述第一渲染规则对应的第一代码和所述第一渲染规则是否匹配;
如果所述第一代码和所述第一渲染规则不匹配,根据所述第一渲染规则对所述第一代码进行修改,以使修改后的第一代码与所述第一渲染规则匹配。
7.根据权利要求1至6任一项所述的方法,其特征在于,在所述输出第二渲染图像之后,所述方法还包括:
根据所述第二渲染图像,确定所述第二渲染规则对应的第二代码和所述第二渲染规则是否匹配;
如果所述第二代码与所述第二渲染规则不匹配,根据所述第二渲染规则对所述第二代码进行修改,以使修改后的第二代码与所述第二渲染规则匹配。
8.根据权利要求1至7任一项所述的方法,其特征在于,所述采集数据记录所述虚拟场景中被遮挡的物体和未被遮挡的物体,
其中,所述第一渲染规则是用于对所述被遮挡的物体和所述未被遮挡的物体进行渲染的规则;所述第二渲染规则是用于对所述未被遮挡的物体进行渲染的规则;或者所述第二渲染规则是用于对所述被遮挡的物体和所述未被遮挡的物体进行过度绘制的规则。
9.根据权利要求1至8任一项所述的方法,其特征在于,
所述应用程序是基于游戏引擎运行的应用程序,所述虚拟场景为游戏虚拟场景。
10.一种渲染装置,其特征在于,包括:
创建单元用于:在应用程序中创建用于在第一图形用户界面中显示的虚拟场景,其中,所述虚拟场景包括第一虚拟相机和第二虚拟相机;
采集单元用于:控制所述第一虚拟相机和所述第二虚拟相机在预设时刻对所述虚拟场景进行数据采集,获得采集数据,其中,所述第一虚拟相机和所述第二虚拟相机在同一时刻对所述虚拟场景进行数据采集所获得的采集数据相同;
第一渲染单元用于:控制所述第一虚拟相机在目标帧按照第一渲染规则对所述采集数据进行渲染,输出第一渲染图像;
第二渲染单元用于:控制所述第二虚拟相机在所述目标帧按照第二渲染规则对所述采集数据进行渲染,输出第二渲染图像,其中,所述第一渲染规则和所述第二渲染规则不同。
11.一种电子设备,其特征在于,包括:存储器和处理器、所述存储器和所述处理器耦合;
所述存储器用于存储一条或多条计算机指令;
所述处理器用于执行所述一条或多条计算机指令,以实现如权利要求1至9任意一项所述的方法。
12.一种计算机可读存储介质,其上存储有一条或多条计算机指令,其特征在于,该指令被处理器执行以实现如权利要求1至9任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211424846.9A CN115845363A (zh) | 2022-11-14 | 2022-11-14 | 渲染方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211424846.9A CN115845363A (zh) | 2022-11-14 | 2022-11-14 | 渲染方法、装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115845363A true CN115845363A (zh) | 2023-03-28 |
Family
ID=85663447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211424846.9A Pending CN115845363A (zh) | 2022-11-14 | 2022-11-14 | 渲染方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115845363A (zh) |
-
2022
- 2022-11-14 CN CN202211424846.9A patent/CN115845363A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112215934A (zh) | 游戏模型的渲染方法、装置、存储介质及电子装置 | |
US9588651B1 (en) | Multiple virtual environments | |
US20230230311A1 (en) | Rendering Method and Apparatus, and Device | |
CN112669194B (zh) | 虚拟场景中的动画处理方法、装置、设备及存储介质 | |
CN111739142A (zh) | 场景渲染方法、装置、电子设备及计算机可读存储介质 | |
CN101477702B (zh) | 计算机显卡的植入式真三维立体驱动方法 | |
US20230316541A1 (en) | Method and apparatus for capturing motion trajectory of to-be-rendered virtual object and electronic device | |
CN111142967B (zh) | 一种增强现实显示的方法、装置、电子设备和存储介质 | |
CN112423111A (zh) | 图形引擎和适用于播放器的图形处理方法 | |
RU2680355C1 (ru) | Способ и система удаления невидимых поверхностей трёхмерной сцены | |
CN113470153A (zh) | 虚拟场景的渲染方法、装置及电子设备 | |
CN116958344A (zh) | 虚拟形象的动画生成方法、装置、计算机设备及存储介质 | |
CN113192173B (zh) | 三维场景的图像处理方法、装置及电子设备 | |
CN115845363A (zh) | 渲染方法、装置和电子设备 | |
CN112891940A (zh) | 图像数据处理方法及装置、存储介质、计算机设备 | |
CN116670719A (zh) | 一种图形处理方法、装置及电子设备 | |
Gil et al. | A Shader-Based Architecture for Virtual Reality Applications on Mobile Devices | |
CN112396683B (zh) | 虚拟场景的阴影渲染方法、装置、设备及存储介质 | |
CN114049425B (zh) | 图像中的照明仿真方法、装置、设备及存储介质 | |
CN117372602B (zh) | 一种异构三维多对象融合渲染方法、设备及系统 | |
CN117596377B (zh) | 画面推流方法、装置、电子设备、存储介质及程序产品 | |
CN116450017B (zh) | 显示对象的显示方法、装置、电子设备及介质 | |
Elmqvist et al. | View projection animation for occlusion reduction | |
Yuniarti et al. | Implementation of reconstruction filter to create motion blur effect in Urho3D game engine | |
Alanko | Dynamic Benchmark for Graphics Rendering |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |