CN108305316A - 基于ar场景的渲染方法、装置、介质和计算设备 - Google Patents
基于ar场景的渲染方法、装置、介质和计算设备 Download PDFInfo
- Publication number
- CN108305316A CN108305316A CN201810190967.9A CN201810190967A CN108305316A CN 108305316 A CN108305316 A CN 108305316A CN 201810190967 A CN201810190967 A CN 201810190967A CN 108305316 A CN108305316 A CN 108305316A
- Authority
- CN
- China
- Prior art keywords
- rendering
- thread
- order
- camera
- scenes
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
Abstract
本发明的实施方式提供了一种基于AR场景的渲染方法、装置。该方法包括:通过工作线程获取到指定AR场景帧的渲染命令;基于交互命令缓冲方式,将所述渲染命令提交到渲染线程;利用所述渲染线程基于所述渲染命令对所述指定AR场景帧渲染,提升AR场景渲染的效率和灵活性,利用完善和强大的工具链,资源异步加载以及多线程渲染,缩小了渲染引擎编译的体积,提升了染质量。
Description
技术领域
本发明的实施方式涉及通信及计算机技术领域,更具体地,本发明的实施方式涉及基于增强现实技术(Augmented Reality,简称”AR”)场景的渲染方法、装置、介质和计算设备。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
在市面上有许多游戏引擎,包括开源的和商业的。开源的游戏引擎如Ogre,Irrlicht,cocos2d-x,gameplay3d等,这些免费的开源引擎一般都有自己的渲染系统,资源加载系统,UI系统,网格和动画系统等,其渲染系统大多都是跨平台,较小巧,代码量可控的。有的有自己独立的编辑器,他们都是单线程的引擎,渲染都在主线程完成。商业的游戏引擎如unity3d,unreal4等,他们都有很完善的工具链,包含的功能非常丰富。
在实现本发明的过程中,发明人发现,开源的引擎都是单线程的引擎,有的没有自己的编辑器,有的编辑器比较简陋且每个编辑器都是分离的,如:单独的网格(mesh)转换工具,单独的界面编辑器,单独的动画编辑器,单独的地形编辑器,单独的材质编辑器。这样对于游戏或AR的应用开发者效率很低。而商业的引擎没有开放源代码或源代码太过庞大,且编译出来的库很大,很难把不需要的组件分离出来。比如:我们不需要物理引擎,地形系统,人工智能(Artificial Intelligence)系统。
发明内容
现有的开源的引擎,对于游戏或AR的应用开发者效率很低。而商业的引擎没有开放源代码或源代码太过庞大,且编译出来的库很大,很难把不需要的组件分离出来。
为此,非常需要一种改进的基于AR场景的渲染方法、装置、介质和计算设备,以提升AR场景渲染的效率和灵活性。
在本上下文中,本发明的实施方式期望提供一种基于AR场景的渲染方法和装置。
在本发明实施方式的第一方面中,提供了一种基于AR场景的渲染方法,包括:
通过工作线程获取到指定AR场景帧的渲染命令;
基于交互命令缓冲方式,将所述渲染命令提交到渲染线程;
利用所述渲染线程基于所述渲染命令对所述指定AR场景帧渲染。
在一些实施例中,基于前述方案,通过工作线程获取到指定AR场景帧的渲染命令,包括:
所述工作线程遍历所述指定AR场景帧,以获取到所述指定AR场景帧中的每个相机;
所述工作线程获取到所述每个相机的渲染对象集合;
所述工作线程根据所述每个相机的渲染对象集合生成对应于每个最小可渲染单元的渲染命令。
在一些实施例中,基于前述方案,所述工作线程获取到所述每个相机的渲染对象集合,包括:
所述工作线程根据所述每个相机的cullMask以及视锥,获取到每个相机的渲染对象集合。
在一些实施例中,基于前述方案,所述渲染命令包括:最小可渲染单元的渲染状态参数以及对应的相机参数。
在一些实施例中,基于前述方案,利用所述渲染线程基于所述渲染命令对所述指定AR场景帧渲染,包括:
所述渲染线程对所述渲染命令中的渲染状态参数做哈希计算,以获取到每个渲染命令的渲染状态哈希值;
所述渲染线程根据每个渲染命令中的渲染状态哈希值以及相机参数,对所述渲染命令排序;
所述渲染线程根据所述渲染命令的排序,依次执行每个渲染命令,以对所述指定AR场景帧渲染。
在一些实施例中,基于前述方案,所述渲染线程根据每个渲染命令中的渲染状态哈希值以及相机参数,对所述渲染命令排序,包括:
所述渲染线程根据每个渲染命令所对应的相机参数获取每个渲染命令对应的相机编号;
所述渲染线程按照所述相机编号对对应于每个相机的渲染命令进行排序;
所述渲染线程根据对应于每个渲染命令中的渲染状态哈希值,对对应于同一个相机的多个渲染命令进行排序。
在一些实施例中,基于前述方案,基于交互命令缓冲方式,将所述渲染命令提交到渲染线程,包括:
将所述工作线程与所述渲染线程中的渲染命令交换,以使所述渲染线程获取到所述工作线程中的渲染命令。
在一些实施例中,基于前述方案,所述方法还包括:
获取所述指定AR场景帧;
对所述指定AR场景帧预处理,以获取到预处理参数;
在所述渲染线程基于所述渲染命令对所述指定AR场景帧渲染之后,利用所述预处理参数对所述渲染线程渲染后的指定AR场景帧进行后续处理。
在一些实施例中,基于前述方案,对所述指定AR场景帧预处理,以获取到预处理参数,包括:
利用动态环境探测器对所述指定AR场景帧预渲染,以渲染出立方体贴图;
利用所述预处理参数对所述渲染线程渲染后的指定AR场景帧进行后续处理,包括:
利用所述立方体贴图对所述渲染线程渲染后的指定AR场景帧进行后渲染处理。
在本发明实施方式的第二方面中,提供了一种基于AR场景的渲染装置,包括:
第一获取模块,用于通过工作线程获取到指定AR场景帧的渲染命令;
提交模块,用于基于交互命令缓冲方式,将所述渲染命令提交到渲染线程;
渲染模块,用于利用所述渲染线程基于所述渲染命令对所述指定AR场景帧渲染。
在一些实施例中,基于前述方案,所述第一获取模块,包括:
第一获取单元,用于通过所述工作线程遍历所述指定AR场景帧,以获取到所述AR场景帧中的每个相机;
第二获取单元,用于通过所述工作线程获取到所述每个相机的渲染对象集合;
生成单元,用于通过所述工作线程根据所述每个相机的渲染对象集合生成对应于每个最小可渲染单元的渲染命令。
在一些实施例中,基于前述方案,第二获取单元,配置为通过所述工作线程根据所述每个相机的cullMask以及视锥,获取到每个相机的渲染对象集合。
在一些实施例中,基于前述方案,所述渲染命令包括:最小可渲染单元的渲染状态参数以及对应的相机参数。
在一些实施例中,基于前述方案,所述渲染模块,包括:
获取单元,用于通过所述渲染线程对所述渲染命令中的渲染状态参数做哈希计算,以获取到每个渲染命令的渲染状态哈希值;
排序单元,用于通过所述渲染线程根据每个渲染命令中的渲染状态哈希值以及相机参数,对所述渲染命令排序;
渲染单元,用于通过所述渲染线程根据所述渲染命令的排序,依次执行每个渲染命令,以对所述指定AR场景帧渲染。
在一些实施例中,基于前述方案,所述排序单元,包括:
获取子单元,用于通过所述渲染线程根据每个渲染命令所对应的相机参数获取每个渲染命令对应的相机编号;
第一排序子单元,用于通过所述渲染线程按照所述相机编号对对应于每个相机的渲染命令进行排序;
第二排序子单元,用于通过所述渲染线程根据对应于每个渲染命令中的渲染状态哈希值,对对应于同一个相机的多个渲染命令进行排序。
在一些实施例中,基于前述方案,所述提交模块,配置为将所述工作线程与所述渲染线程中的渲染命令交换,以使所述渲染线程获取到所述工作线程中的渲染命令。
在一些实施例中,基于前述方案,所述渲染装置还包括:
第二获取模块,用于获取所述指定AR场景帧;
第三获取模块,用于对所述指定AR场景帧预处理,以获取到预处理参数;
后处理模块,用于在所述渲染线程基于所述渲染命令对所述指定AR场景帧渲染之后,利用所述预处理参数对所述渲染线程渲染后的指定AR场景帧进行后续处理。
在一些实施例中,基于前述方案,所述第三获取模块,配置为利用动态环境探测器对所述指定AR场景帧预渲染,以渲染出立方体贴图;
所述后处理模块,配置为利用所述立方体贴图对所述渲染线程渲染后的指定AR场景帧进行后渲染处理。
在本发明实施方式的第三方面中,提供了一种可读存储介质,其上存储有程序,该程序被处理器执行时实现如第一方面中的方法。
本发明实施例中,通过工作线程获取到指定AR场景帧的渲染命令;基于交互命令缓冲方式,将所述渲染命令提交到渲染线程;利用所述渲染线程基于所述渲染命令对所述指定AR场景帧渲染,提升AR场景渲染的效率和灵活性,利用完善和强大的工具链,资源异步加载以及多线程渲染,缩小了渲染引擎编译的体积,提升了渲染质量。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性示出根据本发明实施方式的基于AR场景的渲染方法的流程图;
图2示意性示出本发明实施方式的基于AR场景的渲染装置的框图;
图3示意性示出本发明实施方式的第一获取模块210的框图;
图4示意性示出本发明实施方式的渲染模块230的框图;
图5示意性示出本发明实施方式的排序单元232的框图;
图6示意性示出本发明实施方式的另一种基于AR场景的渲染装置的框图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本发明更加透彻和完整,并且能够将本发明的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种基于AR场景的渲染的方法和装置。
在本文中,需要理解的是,所涉及的术语AR(Augmented Reality,增强现实技术)是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。游戏引擎表示已编写好的可编辑游戏系统或者一些交互式实时图像应用程序的核心组件,游戏软件的主程序。异步加载表示非阻塞加载,开启另一个线程加载资源。此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,现有的基于AR场景的渲染均是利用开源的引擎或者商业的引擎,而开源的引擎都是单线程的引擎,有的没有自己的编辑器,有的编辑器比较简陋且每个编辑器都是分离的,这样对于游戏或AR的应用开发者效率很低,增加了AR场景渲染的复杂度,而商业的引擎没有开放源代码或源代码太过庞大,且编译出来的库很大,很难把不需要的组件分离出来,导致引擎体积庞大冗余。
为此,本发明的实施方式提供了基于AR场景的渲染方法和装置,通过工作线程获取到指定AR场景帧的渲染命令,基于交互命令缓冲方式,将所述渲染命令提交到渲染线程,以及利用所述渲染线程基于所述渲染命令对所述指定AR场景帧渲染。基于交互命令缓冲的方式实现了多线程渲染,减少渲染状态切换代价,提升渲染的效率和灵活性。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
该应用场景是本发明可应用于其中的一个示例性应用场景,应当理解,这里描述的应用场景仅是示例性的,而不是对本发明的限制。
本发明实施例中的模型、纹理贴图和shader都是采用离线工具编译,没有使用第三方插件或库,所有功能都是采用较为简洁的方式来为移动端的AR应用量身打造。从而既可以使引擎支持多种模型和纹理格式,也可以有效控制代码的体积,以及最终产品的体积。
在工具链方面,本发明实施例中采用现有的unity3d的工具链,并将美术资源导入untiy3d,通过unity3d脚本导出本发明实施例中的引擎需要的资源格式。从而在现有引擎的基础上进一步开发,节约了开发成本,极大提高了开发效率。
示例性方法
下面结合上述应用场景,参考图1来描述根据本发明示例性实施方式的基于AR场景的渲染方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
图1示意性示出根据本发明实施方式的基于AR场景的渲染方法的流程图。该方法可应用于前面描述的应用场景,并在集成在移动端的AR渲染引擎执行,但该方法的应用场景不限于此。
如图1所示,在步骤S110中,通过工作线程获取到指定AR场景帧的渲染命令。
需要说明的是,本发明实施例中的AR渲染引擎在底层架构上采用多线程的方式优化渲染性能。该多线程可以包括工作线程和渲染线程。
根据一些实施例,工作线程可以遍历所述指定AR场景帧,以获取到所述AR场景帧中的每个相机,并获取到所述每个相机的渲染对象集合,进一步的,根据所述每个相机的渲染对象集合生成对应于每个最小可渲染单元的渲染命令。
根据一些实施例,在获取到指定AR场景帧时,工作线程可以对该指定AR场景帧预处理,以获取到预处理参数。进而在渲染线程基于渲染命令对指定AR场景帧渲染之后,渲染线程可以利用该预处理参数对渲染线程渲染后的指定AR场景帧进行后续处理。其中,该预处理参数可以包括但不限于:各相机的ViewID,各相机的视矩阵(viewMatrix),投影矩阵(projectMatrix)。
需要指出的是,AR场景中设置有一些场景预处理器,如动态环境探测器,其对所述指定AR场景帧预渲染,以渲染出立方体贴图,然后利用立方体贴图对所述渲染线程渲染后的指定AR场景帧进行后渲染处理。
需要说明的是,本发明实施例中的相机是指AR场景中的各个需要渲染的视角,如各个光源所对应的阴影。
根据一些实施例,工作线程根据所述每个相机的cullMask以及视锥,获取到每个相机的渲染对象集合。
需要说明的是,cullingMask是指摄像机按层渲染,用于按层(即GameObject.layer)有选择性的渲染场景中的物体。
本发明实施例中,在遍历到该指定AR场景帧中的各个相机后,可以基于cullMask以及视锥获取到每个相机对应的渲染对象集合,进一步的,工作线程可以根据所述每个相机的渲染对象集合生成对应于每个最小可渲染单元的渲染命令,需要说明的是,每个相机对应至少一个渲染对象,每个相机对应的渲染对象所组成的集合为该相机的渲染对象集合。每个渲染对象集合可以包括多个最小可渲染单元,每个最小可渲染单元对应一个渲染命令。
例如,指定AR场景帧中有虚拟对象N1、虚拟对象N2以及虚拟对象N3,光源A照射到虚拟对象N1和N2上,光源B照射到虚拟对象N1和N3上,在对该AR场景渲染时,遍历该指定AR场景帧,获取到光源A对应的相机A和光源B对应的相机B,通过cullMask以及视锥获取到相机A对应的虚拟对象集合,该虚拟对象集合中包括虚拟对象N1和N2,相机B对应的虚拟对象集合,该虚拟对象集合中包括虚拟对象N1和N3。假设虚拟对象N1、N2和N3分别都是一个最小可渲染单元,则可以生成相机A中对应于N1和N2的两个渲染命令,相机B中对应于N1和N3的两个渲染命令。
需要说明的是,渲染对象与最小可渲染单元并不是一一对应的关系,一个渲染对象可能包括多个最小可渲染单元,一个最小可渲染单元也可以包括多个渲染对象。
根据一些实施例,渲染命令可以包括:最小可渲染单元的渲染状态参数以及对应的相机参数。其中,该渲染状态参数可以包括但不限于:最小可渲染单元是否写深度缓冲、是否深度测试、顶点渲染顺序以及像素混合模式。
在步骤S120中,基于交互命令缓冲方式,将所述渲染命令提交到渲染线程。
根据一些实施例,交互命令缓冲的方式,主要是指将工作线程与渲染线程中的命令缓冲交互,从而使得渲染线程能够获取到工作线程中的渲染命令缓冲。例如,工作线程可以提交一个命令缓冲给渲染线程,发送完之后,可以交换工作线程以及渲染线程中的命令缓冲,在渲染线程处理渲染命令时,处理的是主线程提交的命令缓冲,渲染线程处理完毕后,主线程继续提交渲染命令到交换之后的缓冲,从而实现了无锁的多线程渲染,保证了线程的安全性,能够克服现有技术AR渲染引擎成本高、维护难度大和灵活性差等缺陷,以实现成本低、维护难度小和灵活性好的优点。
在步骤S130中,利用渲染线程基于渲染命令对该指定AR场景帧渲染。
根据一些实施例,渲染线程中在获取到工作线程中的渲染命令后,对渲染命令进行排序,进而根据渲染命令的排序依次执行渲染命令。
根据一些实施例,渲染线程可以对渲染命令中的渲染状态参数做哈希计算,以获取到每个渲染命令的渲染状态哈希值,进而根据每个渲染命令中的渲染状态哈希值以及相机参数,对渲染命令排序。
需要指出的是,哈希算法是将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。
需要说明的是,渲染线程从工作线程中获取到的渲染命令是针对该指定AR场景帧的、封装后的所有渲染命令,需要进行解析。
根据一些实施例,在根据每个渲染命令中的渲染状态哈希值以及相机参数对渲染命令排序时,渲染线程根据每个渲染命令所对应的相机参数获取每个渲染命令对应的相机编号,进而按照相机编号对对应于每个相机的渲染命令进行排序,并根据对应于每个渲染命令中的渲染状态哈希值,对对应于同一个相机的多个渲染命令进行排序。
例如,获取到的相机编号分别为0、1、2,其中,相机0对应的渲染命令为X4、X5,相机1对应的渲染命令为X2、X3,相机2对应的渲染命令为X1,进而可以得到如表1所示的渲染命令的顺序表:
相机编号顺序 | 渲染命令 |
相机0 | X4、X5 |
相机1 | X2、X3 |
相机2 | X1 |
表1
在获取到如表1所示的按照相机编号对对应于每个相机的渲染命令的排序后,进一步对对应于同一个相机的多个渲染命令进行排序,假设相机0的渲染命令中X5的渲染状态哈希值在渲染命令X4之前,相机1中的渲染命令中X3的渲染状态哈希值在渲染命令X2之前,进而可以得到如表2所示的渲染命令的顺序表:
表2
如表2所示,渲染线程执行渲染命令的顺序为X5、X4、X3、X2以及X1。
需要说明的是,在渲染时,可以先对影响相机的组件先进行渲染,如先进行灯光的渲染,生成阴影图等,然后再对相机做一遍正常渲染,最后再根据该相机有无后处理的组件,进行后处理渲染。
本发明实施例中,通过对渲染命令排序,减少了渲染状态切换代价,提升了渲染效率。
需要说明的是,在高层渲染构架上,在遍历AR场景中的相机时,当遍历到光源、天光时,由于其对应的相机编号不同,渲染线程在渲染时,会利用多个相机实现多遍渲染AR场景帧。
需要指出的是,在AR场景帧中预设置有每个相机的编号,在设置每个相机的编号时,可以根据渲染时的层次关系等进行对相机进行编号,以使相同或者相似的相机设置临近的编号,从而进一步减少不同相机之间渲染状态的切换代价。
需要说明的是,本发明实施例中,在读取资源时,可以通过资源加载线程来加载网格资源,材质资源,纹理资源等,在加载完后,再通知工作线程,以利用渲染线程利用上述资源以及渲染命令进行渲染。
本发明实施例中,通过工作线程获取到指定AR场景帧的渲染命令;基于交互命令缓冲方式,将所述渲染命令提交到渲染线程;利用所述渲染线程基于所述渲染命令对所述指定AR场景帧渲染,提升AR场景渲染的效率和灵活性,利用完善和强大的工具链,资源异步加载以及多线程渲染,缩小了渲染引擎编译的体积,提升了渲染质量。
本发明上述实施例中,在底层架构上采用多线程的方式优化渲染性能,在高层渲染架构上通过多相机的排序和遍历实现多遍渲染场景,保证渲染效果;在引擎的使用方面,通过组件系统降低的引擎的上手难度,游戏对象可以挂接一些场景预处理组件,相机组件,mesh组件,声音组件,光源组件。
示例性装置
在介绍了本发明示例性实施方式的方法之后,接下来,参考图2-6对本发明示例性实施方式的基于AR场景的渲染装置进行描述。
图2示意性示出本发明实施方式的基于AR场景的渲染装置的框图。渲染装置200可实现前面描述的相应方法。下面描述渲染装置200,与前述方法对应的部分不再赘述。
如图2所示,渲染装置200包括:
第一获取模块210,用于通过工作线程获取到指定AR场景帧的渲染命令。
提交模块220,用于基于交互命令缓冲方式,将所述渲染命令提交到渲染线程。
渲染模块230,用于利用所述渲染线程基于所述渲染命令对所述指定AR场景帧渲染。
图3示意性示出本发明实施方式的第一获取模块210的框图,如图3所示,第一获取模块210,包括:
第一获取单元211,用于通过所述工作线程遍历所述指定AR场景帧,以获取到所述AR场景帧中的每个相机;
第二获取单元212,用于通过所述工作线程获取到所述每个相机的渲染对象集合;
生成单元213,用于通过所述工作线程根据所述每个相机的渲染对象集合生成对应于每个最小可渲染单元的渲染命令。
根据一些实施例,第二获取单元212,配置为通过所述工作线程根据所述每个相机的cullMask以及视锥,获取到每个相机的渲染对象集合。
根据一些实施例,渲染命令包括:最小可渲染单元的渲染状态参数以及对应的相机参数。
图4示意性示出本发明实施方式的渲染模块230的框图,如图4所示,渲染模块230,包括:
获取单元231,用于通过所述渲染线程对所述渲染命令中的渲染状态参数做哈希计算,以获取到每个渲染命令的渲染状态哈希值;
排序单元232,用于通过所述渲染线程根据每个渲染命令中的渲染状态哈希值以及相机参数,对所述渲染命令排序;
渲染单元233,用于通过所述渲染线程根据所述渲染命令的排序,依次执行每个渲染命令,以对所述指定AR场景帧渲染。
图5示意性示出本发明实施方式的排序单元232的框图,如图5所示,排序单元232,包括:
获取子单元2321,用于通过所述渲染线程根据每个渲染命令所对应的相机参数获取每个渲染命令对应的相机编号;
第一排序子单元2322,用于通过所述渲染线程按照所述相机编号对对应于每个相机的渲染命令进行排序;
第二排序子单元2323,用于通过所述渲染线程根据对应于每个渲染命令中的渲染状态哈希值,对对应于同一个相机的多个渲染命令进行排序。
根据一些实施例,提交模块220,配置为将所述工作线程与所述渲染线程中的渲染命令交换,以使所述渲染线程获取到所述工作线程中的渲染命令。
图6示意性示出本发明实施方式的另一种基于AR场景的渲染装置的框图。如图6所示,该渲染装置200,还包括:
第二获取模块240,用于获取所述指定AR场景帧;
第三获取模块250,用于对所述指定AR场景帧预处理,以获取到预处理参数;
后处理模块260,用于在所述渲染线程基于所述渲染命令对所述指定AR场景帧渲染之后,利用所述预处理参数对所述渲染线程渲染后的指定AR场景帧进行后续处理。
根据一些实施例,第三获取模块250,配置为利用动态环境探测器对指定AR场景帧预渲染,以渲染出立方体贴图。
后处理模块260,配置为利用所述立方体贴图对所述渲染线程渲染后的指定AR场景帧进行后渲染处理。
本发明实施例中,通过工作线程获取到指定AR场景帧的渲染命令;基于交互命令缓冲方式,将所述渲染命令提交到渲染线程;利用所述渲染线程基于所述渲染命令对所述指定AR场景帧渲染,提升AR场景渲染的效率和灵活性,利用完善和强大的工具链,资源异步加载以及多线程渲染,缩小了渲染引擎编译的体积,提升了渲染质量。
示例性设备
在介绍了本发明示例性实施方式的方法和装置之后,接下来,介绍根据本发明的另一示例性实施方式的基于AR场景的渲染装置。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
在一些可能的实施方式中,根据本发明的基于AR场景的渲染装置可以至少包括至少一个处理单元、以及至少一个存储单元。其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的基于AR场景的渲染方法中的步骤。例如,所述处理单元可以执行如图1中所示的步骤S110,通过工作线程获取到指定AR场景帧的渲染命令,步骤S120,基于交互命令缓冲方式,将所述渲染命令提交到渲染线程,步骤S130,利用渲染线程基于渲染命令对该指定AR场景帧渲染。
示例性程序产品
在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的基于AR场景的渲染方法中的步骤,例如,所述终端设备可以执行如图1中所示的步骤S110,通过工作线程获取到指定AR场景帧的渲染命令,步骤S120,基于交互命令缓冲方式,将所述渲染命令提交到渲染线程,步骤S130,利用渲染线程基于渲染命令对该指定AR场景帧渲染。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算设备。
应当注意,尽管在上文详细描述中提及了基于AR场景的渲染装置的若干模块或单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或单元的特征和功能可以在一个模块或单元中具体化。反之,上文描述的一个模块或单元的特征和功能可以进一步划分为由多个模块或单元来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (10)
1.一种基于AR场景的渲染方法,包括:
通过工作线程获取到指定AR场景帧的渲染命令;
基于交互命令缓冲方式,将所述渲染命令提交到渲染线程;
利用所述渲染线程基于所述渲染命令对所述指定AR场景帧渲染。
2.根据权利要求1所述的渲染方法,其中,通过工作线程获取到指定AR场景帧的渲染命令,包括:
所述工作线程遍历所述指定AR场景帧,以获取到所述指定AR场景帧中的每个相机;
所述工作线程获取到所述每个相机的渲染对象集合;
所述工作线程根据所述每个相机的渲染对象集合生成对应于每个最小可渲染单元的渲染命令。
3.根据权利要求2所述的渲染方法,其中,所述工作线程获取到所述每个相机的渲染对象集合,包括:
所述工作线程根据所述每个相机的cullMask以及视锥,获取到每个相机的渲染对象集合。
4.根据权利要求1或2所述的渲染方法,其中,所述渲染命令包括:最小可渲染单元的渲染状态参数以及对应的相机参数。
5.如权利要求4所述的渲染方法,其中,利用所述渲染线程基于所述渲染命令对所述指定AR场景帧渲染,包括:
所述渲染线程对所述渲染命令中的渲染状态参数做哈希计算,以获取到每个渲染命令的渲染状态哈希值;
所述渲染线程根据每个渲染命令中的渲染状态哈希值以及相机参数,对所述渲染命令排序;
所述渲染线程根据所述渲染命令的排序,依次执行每个渲染命令,以对所述指定AR场景帧渲染。
6.根据权利要求5所述的渲染方法,其中,所述渲染线程根据每个渲染命令中的渲染状态哈希值以及相机参数,对所述渲染命令排序,包括:
所述渲染线程根据每个渲染命令所对应的相机参数获取每个渲染命令对应的相机编号;
所述渲染线程按照所述相机编号对对应于每个相机的渲染命令进行排序;
所述渲染线程根据对应于每个渲染命令中的渲染状态哈希值,对对应于同一个相机的多个渲染命令进行排序。
7.根据权利要求1所述的渲染方法,其中,基于交互命令缓冲方式,将所述渲染命令提交到渲染线程,包括:
将所述工作线程与所述渲染线程中的渲染命令交换,以使所述渲染线程获取到所述工作线程中的渲染命令。
8.一种基于AR场景的渲染装置,包括:
第一获取模块,用于通过工作线程获取到指定AR场景帧的渲染命令;
提交模块,用于基于交互命令缓冲方式,将所述渲染命令提交到渲染线程;
渲染模块,用于利用所述渲染线程基于所述渲染命令对所述指定AR场景帧渲染。
9.一种介质,其上存储有程序,该程序被处理器执行时实现如权利要求1至7中任一项所述的方法。
10.一种计算设备,包括:处理器和存储器,所述存储器存储有可执行指令,所述处理器用于调用所述存储器存储的可执行指令执行如权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810190967.9A CN108305316A (zh) | 2018-03-08 | 2018-03-08 | 基于ar场景的渲染方法、装置、介质和计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810190967.9A CN108305316A (zh) | 2018-03-08 | 2018-03-08 | 基于ar场景的渲染方法、装置、介质和计算设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108305316A true CN108305316A (zh) | 2018-07-20 |
Family
ID=62849604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810190967.9A Pending CN108305316A (zh) | 2018-03-08 | 2018-03-08 | 基于ar场景的渲染方法、装置、介质和计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108305316A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109413337A (zh) * | 2018-08-30 | 2019-03-01 | 北京达佳互联信息技术有限公司 | 视频渲染方法、装置、电子设备及存储介质 |
CN109508319A (zh) * | 2018-11-09 | 2019-03-22 | 武汉兴联云立方科技有限公司 | 一种3d跨平台资源管理系统和方法 |
CN109883414A (zh) * | 2019-03-20 | 2019-06-14 | 百度在线网络技术(北京)有限公司 | 一种车辆导航方法、装置、电子设备及存储介质 |
CN111400024A (zh) * | 2019-01-03 | 2020-07-10 | 百度在线网络技术(北京)有限公司 | 渲染过程中的资源调用方法、装置和渲染引擎 |
CN111402349A (zh) * | 2019-01-03 | 2020-07-10 | 百度在线网络技术(北京)有限公司 | 渲染方法、渲染装置和渲染引擎 |
CN113018844A (zh) * | 2021-03-19 | 2021-06-25 | 广州虎牙科技有限公司 | 多线程的执行方法、装置、电子设备及存储介质 |
CN113763090A (zh) * | 2020-11-06 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 信息处理方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101539804A (zh) * | 2009-03-11 | 2009-09-23 | 上海大学 | 基于增强虚拟现实与异型屏的实时人机互动方法及系统 |
CN103035003A (zh) * | 2012-12-11 | 2013-04-10 | 华为技术有限公司 | 一种实现增强现实的方法及装置 |
CN103688240A (zh) * | 2011-05-20 | 2014-03-26 | 梦芯片技术股份有限公司 | 用于发送数字场景描述数据的方法以及发送器和接收器场景处理设备 |
CN103942823A (zh) * | 2014-02-27 | 2014-07-23 | 优视科技有限公司 | 一种游戏引擎渲染方法及装置 |
CN104820497A (zh) * | 2015-05-08 | 2015-08-05 | 东华大学 | 一种基于增强现实的3d交互显示系统 |
CN105413176A (zh) * | 2015-11-10 | 2016-03-23 | 内蒙古工业大学 | 一种应用于游戏的3d引擎系统 |
CN106575228A (zh) * | 2014-08-21 | 2017-04-19 | 高通股份有限公司 | 图形处理中的渲染目标命令重新排序 |
-
2018
- 2018-03-08 CN CN201810190967.9A patent/CN108305316A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101539804A (zh) * | 2009-03-11 | 2009-09-23 | 上海大学 | 基于增强虚拟现实与异型屏的实时人机互动方法及系统 |
CN103688240A (zh) * | 2011-05-20 | 2014-03-26 | 梦芯片技术股份有限公司 | 用于发送数字场景描述数据的方法以及发送器和接收器场景处理设备 |
CN103035003A (zh) * | 2012-12-11 | 2013-04-10 | 华为技术有限公司 | 一种实现增强现实的方法及装置 |
CN103942823A (zh) * | 2014-02-27 | 2014-07-23 | 优视科技有限公司 | 一种游戏引擎渲染方法及装置 |
CN106575228A (zh) * | 2014-08-21 | 2017-04-19 | 高通股份有限公司 | 图形处理中的渲染目标命令重新排序 |
CN104820497A (zh) * | 2015-05-08 | 2015-08-05 | 东华大学 | 一种基于增强现实的3d交互显示系统 |
CN105413176A (zh) * | 2015-11-10 | 2016-03-23 | 内蒙古工业大学 | 一种应用于游戏的3d引擎系统 |
Non-Patent Citations (1)
Title |
---|
帕特里克 卡兹,凯文 瑞恩: "《三维数字地球引擎设计》", 30 November 2017, 国防工业出版社 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109413337A (zh) * | 2018-08-30 | 2019-03-01 | 北京达佳互联信息技术有限公司 | 视频渲染方法、装置、电子设备及存储介质 |
CN109508319A (zh) * | 2018-11-09 | 2019-03-22 | 武汉兴联云立方科技有限公司 | 一种3d跨平台资源管理系统和方法 |
CN111400024A (zh) * | 2019-01-03 | 2020-07-10 | 百度在线网络技术(北京)有限公司 | 渲染过程中的资源调用方法、装置和渲染引擎 |
CN111402349A (zh) * | 2019-01-03 | 2020-07-10 | 百度在线网络技术(北京)有限公司 | 渲染方法、渲染装置和渲染引擎 |
CN111402349B (zh) * | 2019-01-03 | 2023-09-08 | 百度在线网络技术(北京)有限公司 | 渲染方法、渲染装置和渲染引擎 |
CN111400024B (zh) * | 2019-01-03 | 2023-10-10 | 百度在线网络技术(北京)有限公司 | 渲染过程中的资源调用方法、装置和渲染引擎 |
CN109883414A (zh) * | 2019-03-20 | 2019-06-14 | 百度在线网络技术(北京)有限公司 | 一种车辆导航方法、装置、电子设备及存储介质 |
CN113763090A (zh) * | 2020-11-06 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 信息处理方法及装置 |
CN113018844A (zh) * | 2021-03-19 | 2021-06-25 | 广州虎牙科技有限公司 | 多线程的执行方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108305316A (zh) | 基于ar场景的渲染方法、装置、介质和计算设备 | |
CN105407259B (zh) | 虚拟摄像方法 | |
Garanzha et al. | Fast ray sorting and breadth‐first packet traversal for GPU ray tracing | |
CN105912234B (zh) | 虚拟场景的交互方法和装置 | |
CN109448089A (zh) | 一种渲染方法及装置 | |
CN109964255B (zh) | 使用3d视频数据的3d打印 | |
EP2705498A2 (en) | Efficient method of producing an animated sequence of images | |
CN107924560A (zh) | 基于锚定帧修改多帧图像的方法和装置 | |
US20230033319A1 (en) | Method, apparatus and device for processing shadow texture, computer-readable storage medium, and program product | |
CN105892650A (zh) | 一种信息处理方法及电子设备 | |
CN108765520A (zh) | 文本信息的渲染方法和装置、存储介质、电子装置 | |
US9704290B2 (en) | Deep image identifiers | |
CN103577172A (zh) | 一种图形处理引擎系统 | |
CN105957133B (zh) | 一种加载贴图的方法和装置 | |
AU2020425673A1 (en) | Apparatus for multi-angle screen coverage analysis | |
CN105335995B (zh) | 一种多光源全局光照绘制方法及装置 | |
CN110490308A (zh) | 加速库的设计方法、终端设备及存储介质 | |
Shum et al. | Conditional 360-degree image synthesis for immersive indoor scene decoration | |
WO2023215009A1 (en) | Low-poly mesh generation for three-dimensional models | |
Feng et al. | A parallel hierarchical radiosity algorithm for complex scenes | |
US8248415B2 (en) | User-defined non-visible geometry featuring ray filtering | |
CN111681317B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
Nonaka et al. | 2-3-4 decomposition method for large-scale parallel image composition with arbitrary number of nodes | |
Chen et al. | A real-time parallel ray-tracing method based on GPU cluster | |
US11893677B1 (en) | Bounding volume hierarchy (BVH) widening based on node compressibility |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20190702 Address after: 311215 Room 102, 6 Blocks, C District, Qianjiang Century Park, Xiaoshan District, Hangzhou City, Zhejiang Province Applicant after: Hangzhou Yixian Advanced Technology Co.,Ltd. Address before: 310052 Building No. 599, Changhe Street Network Business Road, Binjiang District, Hangzhou City, Zhejiang Province, 4, 7 stories Applicant before: NETEASE (HANGZHOU) NETWORK Co.,Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180720 |