CN113535169A - 一种场景渲染方法、装置、设备及可读存储介质 - Google Patents
一种场景渲染方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN113535169A CN113535169A CN202110789026.9A CN202110789026A CN113535169A CN 113535169 A CN113535169 A CN 113535169A CN 202110789026 A CN202110789026 A CN 202110789026A CN 113535169 A CN113535169 A CN 113535169A
- Authority
- CN
- China
- Prior art keywords
- component
- scene
- rendering
- data
- components
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Human Computer Interaction (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请公开了一种场景渲染方法、装置、设备及可读存储介质,该方法包括:获取目标场景对应的组件数据及组件配置信息;基于组件数据和组件配置信息,实例化一个根组件;根组件为所有组件的顶层父级;利用根组件,根据组件数据确定渲染组件的全局信息;根据层数结构实例化各个组件,以生成渲染对象;其中,每个渲染对象对应存放在一个场景中;场景管理器调用各个对应的场景来进行渲染对象的渲染,最终渲染出整个目标场景。在本申请中,将业务场景与组件进行解耦,即不对组件进行场景化封装,且在需要渲染一个场景时,无需对组件进行硬编码,即结合基于组件数据和组件配置信息实例化的根组件即可逐步实现场景渲染,能够加快可视化开发效率。
Description
技术领域
本申请涉及计算机可视化技术领域,特别是涉及一种场景渲染方法、装置、设备及可读存储介质。
背景技术
在DT(Data Technology,数据处理技术)时代,从挖掘,整理清洗,数据分析,到最后到决策,离不开数据可视化技术的发展。各种中台系统,指挥大屏,监控大屏都在应用三维可视化技术。可视化技术能够生动显实地表达各项数据,以便用户能够快速做出应对响应与决策。
面对不同的业务场景,不同的行业背景,对可视化的要求各不相同。若每一个可视化的界面都通过硬编码来实现,存在开发周期长,开发资源占用量大的问题。一般的组件思路都是对某一个功能或业务的开发封装,相同的情景下达到复用。但是,在当前需求与组件的封装,一旦存在一个不一致的点就会导致封装好的组件不能复用,因而灵活性很差,可视化开发效率低下。
综上所述,如何有效地提高可视化开发效率等问题,是目前本领域技术人员急需解决的技术问题。
发明内容
本申请的目的是提供一种场景渲染方法、装置、设备及可读存储介质,能够提高可视化开发效率。
为解决上述技术问题,本申请提供如下技术方案:
一种场景渲染方法,包括:
获取目标场景对应的组件数据及组件配置信息;
基于所述组件数据和所述组件配置信息,实例化一个根组件;所述根组件为所有组件的顶层父级;
利用所述根组件,根据所述组件数据确定渲染组件的全局信息;
根据层数结构实例化各个所述组件,以生成渲染对象;其中,每个所述渲染对象存放在一个场景中;
场景管理器调用各个对应的场景来进行所述渲染对象的渲染,最终渲染出整个所述目标场景。
优选地,所述根据层数结构实例化各个所述组件,以生成渲染对象,包括:
在实例化每个所述组件的过程中,生成几何体、材质和所述渲染对象,并根据对应父组件的特征,分别获取相应的信息作为组件最终位置;其中,所述父组件的特征包括父节点具体形状特征,所述具体形状特征为点状、线状、面状或体状。
优选地,利用所述根组件,根据所述组件数据确定渲染组件的全局信息,包括:
判断所述根节点的规范化数据是否包括转换函数;
如果是,则利用所述转换函数转换所述组件数据作为整个组件的位置信息;
如果否,则默认引擎的原点位置作为整个组件的位置信息。
优选地,所述场景管理器调用各个对应的场景来进行所述渲染对象的渲染,最终渲染出整个所述目标场景,包括:
每一帧中,调用所述场景管理器进行更新,所述场景管理器更新各个所述场景,各个所述场景对各个对应的所述渲染对象进行渲染。
优选地,所述获取目标场景对应的组件数据及组件配置信息,包括:
接收所述目标场景的渲染请求;
结合基础组件表达结构,对所述渲染请求进行解析,得到所述组件数据及所述组件配置信息。
优选地,接收所述目标场景的渲染请求,包括:
对所述目标场景对应的可视化编辑界面进行监控,以接收所述渲染请求。
优选地,所述基础组件表达结构,包括:
基础组件名,组件结构体变化参数,组件绘制样式参数,当前组件的子组件。
一种场景渲染装置,包括:
数据获取模块,用于获取目标场景对应的组件数据及组件配置信息;
根组件实例化模块,用于基于所述组件数据和所述组件配置信息,实例化一个根组件;所述根组件为所有组件的顶层父级;
全局信息确定模块,用于利用所述根组件,根据所述组件数据确定渲染组件的全局信息;
组件实例化模块,用于根据层数结构实例化各个所述组件,以生成渲染对象;其中,每个所述渲染对象存放在一个场景中;
场景渲染模块,用于场景管理器调用各个对应的场景来进行所述渲染对象的渲染,最终渲染出整个所述目标场景。
一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述场景渲染方法的步骤。
一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述场景渲染方法的步骤。
应用本申请实施例所提供的方法,获取目标场景对应的组件数据及组件配置信息;基于组件数据和组件配置信息,实例化一个根组件;根组件为所有组件的顶层父级;利用根组件,根据组件数据确定渲染组件的全局信息;根据层数结构实例化各个组件,以生成渲染对象;其中,每个渲染对象存放在一个场景中;场景管理器调用各个对应的场景来进行渲染对象的渲染,最终渲染出整个目标场景。
在本申请中,当需要对目标场景进行渲染时,仅需获取目标场景对应的组件数据和组件配置信息,然后基于组件数据和组件配置信息实例化一个根组件。然后,借助根组件便可确定渲染组件的全局信息。将各个组件实例化即可生成渲染对象,而每一个渲染对象存放在一个场景中。因而,利用场景管理器调用对应的渲染对象进行渲染,即可渲染出目标场景。也就是说,在本申请中,将业务场景与组件进行解耦,即不对组件进行场景化封装,且在需要渲染一个场景时,无需对当前场景的各个组件进行硬编码,即结合基于组件数据和组件配置信息实例化的根组件即可逐步实现场景渲染,能够加快可视化开发效率。
相应地,本申请实施例还提供了与上述场景渲染方法相对应的场景渲染装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中一种场景渲染方法的实施流程图;
图2为本申请实施例中一种图标组件与文字组件的组合示意图;
图3为本申请实施例中一种组合组件与线条组件的组合示意图;
图4为本申请实施例中一种具有粒子组件的组件组合效果示意图;
图5为本申请实施例中一种多个组件的组件组合效果示意图;
图6为本申请实施例中一种组件渲染流程示意图;
图7为本申请实施例中一种场景渲染装置的结构示意图;
图8为本申请实施例中一种电子设备的结构示意图;
图9为本申请实施例中一种电子设备的具体结构示意图;
图10为本申请实施例中一种渲染实现的具体示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1和图6,图1为本申请实施例中一种场景渲染方法的流程图,图6为本申请实施例中一种组件渲染流程示意图。
该场景渲染方法包括以下步骤:
S101、获取目标场景对应的组件数据及组件配置信息。
其中,目标场景即可为具体需要进行可视化的业务场景,组件数据可具体为表明组件类型、组件数量和位置等相关的数据,组件配置信息即对组件进行配置的信息,如颜色、透明度等。
需要注意的是,在本实施例中组件可具体指三维组件,可运行在引擎上,每一个组件都包括数据,渲染参数,组件结构参数等,用户只需要将组件名与组件数据及相关参数传递给引擎就可以在Web端的页面中看到响应的效果。
具体的,可以直接从存储介质中直接读取组件数据和组件配置信息,也可以通过接收外部数据的方式得到组件数据和组件配置信息。
在本申请中的一种具体实施方式中,可以通过接收请求的方式来获得组件数据及组件配置信息。即步骤S101获取目标场景对应的组件数据及组件配置信息,可以具体包括:
步骤一、接收目标场景的渲染请求。
其中,渲染请求可以携带目标场景的相关数据信息。渲染请求可以具体为上层应用基于用户操作而下发的请求,也可以为对用户操作进行监控,从而得到的渲染请求。
优选地,为了便于用户操作,还可以对目标场景对应的可视化编辑界面进行监控,以接收渲染请求。也就是说,可以针对场景渲染,预先开发一个可视化编辑界面,在可视化编辑界面中,用户可以选择需要使用的基础组件,以及对组件的相关配置的输入。
步骤二、结合基础组件表达结构,对渲染请求进行解析,得到组件数据及组件配置信息。
在本实施例中,可以预先设置好相关基础组件,并规范好基础组件表达结构,从而可在接收到渲染请求后,结合基础组件表达结构对渲染请求进行解析,进而得到组件数据和组件配置信息。
其中,基础组件可以包括点状组件、线状组件、面状组件和体状组件。即,每一个基础组件都实现一个独立的效果或功能,通过基础组件的特性与展现方式,每一个组件都进行分类,根据这些分类,可以定义一些组件组合的一些约束与通信机制,保证父子组件直接的通信,兄弟组件的共存,组件本身的类型为该组件的子组件提供一种数据复用的能力,并保持父子组件的结合方式。
点类型组件:这类组件一般只需要提整个组件渲染在空间的位置就可以完成渲染,数据源为一个具体的点,在三维空间中将组件的能力展示在具体的这个点位置上。例如,文字marker组件,冲击波效果组件。
线类型组件:这类组件一般除了要显示整个组整体的位置还需要显示线条路径的点,组件的数据源为一系列的数据点,通过这些数据形成为一段路径,组件会记录起点与终点以及整个路劲的长度,子组件可以通过参数定位在线类组件在哪个位置展示。例如,线条组件,飞线组件。
面类型组件:这类组件一般除了要显示整个组件的位置还需要提供自己的大小范围(一般可用bounds表示),bounds的值包括左上与右下对应的位置点。例如,粒子组件作为该类组件的子组件就会获取各类组件的bounds,根据这个bounds范围来显示粒子效果范围。
体类型组件:这类组件一般除了要显示整个组件的位置,同时具有线类组件和面类组件的特性,可以理解为多个沿着线条的面组合出来的形状即一个体。例如,特殊建筑物组件,这个组既有高度,还有楼顶的面,每一个建筑物都有固定的位置展示。
组件约束规范:组件并列的结合称为兄弟关系,组件上下级的方式结合称为父子关系。其中,兄弟关系的组件需要组件共同的父组件提供的数据能够通过转换后符合各自的数据格式要求,父子关系的组件,父子组件同兄弟关系类似,只是子组件会继承父组件的一些属性,如位置,范围等,数据会由父组件传递给子组件。
其中,基础组件表达结构,包括:基础组件名,组件结构体变化参数,组件绘制样式参数,当前组件的子组件。
下面以伪代码的方式,对基础组件的表达结构进行举例说明:
也就是说,每一个组件都通过以上这个的一段JSON(JavaScriptObjectNotation,JS对象简谱)代码来表示。具体的各个字段的含义如下:
component:输入的是已经开发好组件的组件名。
data:是对用户数据的规范化,每一个组件的数据规范都是按照数组的结构来组织。可以具体包括三种数据规范,第一种是:[[],[]……],第二种是:[[[],[],……],[[],[],……]],第三种是[[[[],[],...],[[],[],...]],[[[],[],...],[[],[],...]]。根据组件的功能,每个组件都有固定的数据格式。例如,点类组件,marker标记的绘制,如果选择单点组件,数据格式即第一种方式,[[lng,lat],[lng,lat]];当有两个点就会根据这两个点的数据引擎绘制两次来完成,其中,lng表示经度,lat表示纬度。如果选择多点海量渲染组件,就要选择第二种数据类型[[[lng,lat],[lng,lat],[lng,lat]]],这种情况下海量渲染就会在一次批量渲染所有的marker标记点,用户接口返回的数据格式比一定是按照这样的规范,就需要在组件的data函数(即转换函数)中进行转换。
Layout:用来变更一些组件形态的参数,通常的参数是scale(尺度)参数,其他相关的参数都是与三维组件的几何体相关,变更了这里的参数值,几何体需要重新计算或者发生一些变换。
paint:是更改组件渲染样式的参数,例如颜色,透明度,以及一些在不更改几何体。在GPU(Graphics Processing Unit,视觉处理器)中可以更改组件样式的参数,每一个组件都会有相关的参数对外提供,帮助用户实现定制的效果,当然用户如果不提供这些参数,组件会使用默认的参数来渲染。
Childrens:是一个数组值,其中的内容就是表示该组件的子组件。例如,可以把一个文字组件作为marker组件的子组件,表示形式就是:
请参考图2,图2为本申请中一种图标组件与文字组件的组合示意图,其中左上角的开幕式场馆字样对应的组件即文字组件,左下角的图标即图标组件,右侧既有图标又有文字字样的组件即组合了图标组件与文字组件的新组件。如此,便可通过组合两个组件,形成了一个就有图标又有文字的组件,也是点组件与组件的组合,任何这样的父子组合组件,父组件接受的数据都会传递给子组件,子组件都会继承父组件的位置,并通过offset来调整文字的位置。
可以通过这种既有图标又有文字的组件在地图上标记点。但是,如果地图上包括三维建筑物,这样的标记点很可能被建筑物遮挡,此时可使用线条组件来表示地面的位置,就需要线条组件与上图的组件进行组合成一个更复杂的组件,组件的格式如下:
这里marker组件即线条组件的子组件,线条组件就属于线状组件,线条组件与点组件的组合,通过了一个参数parentPathPointAt,这个参数的值范围是[0,1]。每一个子组件都会继承父组件的位置,对于一个线状组件,可仅提供子组件相对于这个线状进行相对的定位,通过设置parentPathPointAt,如果值是0,表示的就是线的起点位置,如果值是1,就是线的终点位置。这里设置的是1,表示就是线的终点,那么marker标签就在线条的终点位置上。
需要说明的是,线条组件的data函数返回的值是一个固定值,就表示一个从[0,0,0]点出发,到[0,0,1]点的线条,引擎中坐标系是Z方向向上,所以是一个长度为1,向上的线条,在layout中设置了线条的宽带lineWidth,scale是设置线条的长度缩放倍速。例如,设置了30,表示线条长度放大30倍,即1*30=30,目前的线条长度就是30,另一个参数coordinate,可以接受的参数是“xyz”或者是“geo”,默认是“geo”,这里设置“xyz”表示组件接受的数据是米制数据,也就是线条是30米长,“geo”表示的是表示用地理坐标来表示数据的位置,即使用经度纬度来表示。
请参考图3,图3为本申请中一种组合组件与线条组件的组合示意图,其中左上角的线条对应的组件即文字组件,左下角的如图2所示的既有文字又有图标的组件即组合组件,右侧的复杂组件即组合了前面两个组件的新组件。
即图3右侧的图示效果,即通过三个组件自由组合而成,如果希望在以上组件的基础上加入粒子效果,粒子效果的组件即面状组件,它需要获取一个区域作为粒子的活动范围来展示粒子,而建筑物物件是一个体组件,体组件包含了点状组件,线状组件,面状组件的特性,建筑物具体位置就是点状组件的特性,建筑物的横界面就是面组件的特性,建筑物的高度起点与终点就是线组件的特性,让粒子组件作为建筑物组件的子组件,他可以获得建筑物的面特性,获取横界面的范围,粒子就在这个范围进行展示。具体效果可参考图4,图4为本申请实施例中一种具有粒子组件的组件组合效果示意图。
相应地,组件代码结构如下:
粒子组件作为面状组件是建筑物的子组件,通过参数parentRange,可以获得建筑物的横界面,再加上自己的一下效果参数就可以完美的进行展示,同时与标记相关的组件成为了兄弟节点,这里使用的另一个组件光墙组件,也是建筑物组件的子组件,该组件是体状组件,通过设置parentBoundBox,它会获得父组件建筑物的点状特征,线状特征,面状特征然后完成自己的渲染,渲染的结果会把一个建筑物通过一个高亮的外壳进行包裹起来,让建筑物更加突显,效果如图5所示,图5为本申请实施例中一种多个组件的组件组合效果示意图。
S102、基于组件数据和组件配置信息,实例化一个根组件。
根组件为所有组件的顶层父级。
其中,用类创建对象的过程称为实例化。
即,用户调用渲染引擎提供的接口,传递组件数据以及组件的配置给引擎图层后,引擎根据调用图层的初始化,解析用户传递的数据,以及解析配置文件,实例化一个根组件,作为所有组件的顶层父级。
S103、利用根组件,根据组件数据确定渲染组件的全局信息。
也就是说,由根组件来对确定渲染组件的全局信息,如位置信息。
具体的,利用根组件,根据组件数据确定渲染组件的全局信息,包括:
步骤一、判断根节点的规范化数据是否包括转换函数;
步骤二、如果是,则利用转换函数转换组件数据作为整个组件的位置信息;
步骤三、如果否,则默认引擎的原点位置作为整个组件的位置信息。
为便于描述,下面将上述三个步骤结合起来进行说明。
即根节点负责根据用户的数据确定渲染组件的位置等全局信息,如果用户在根组件的data上定义转换函数,那么根组件就会根据定义的函数转换用户传入的数据作为整个组件的位置定义,如果用户没有设置data,默认引擎的原点位置作为整个组件的位置信息。
举例说明:若要绘制一些点,就不需要定义data属性值,组件数据向下传递,配置向下传递,点组件会获取的根组件数据是原点数,计算后据根据数据在具体的位置绘制,根据配置参数渲染相关的效果及大小等;如果想在一系列的位置上绘制下垂直的线条,那么就需要根组件定义data数据,格式化为[lng,lat]的位置信息,然后绘制线的组件,本身的位置为0,相对于根组件的位置,然后自己的的data数据,返回一个线条的具体形态,通用也会接收到来自根组件传递来的数据和配置信息,这时,线条组件将不接受根组件的数据,而是在计算自己的位置的时候获取父组件的位置,线条本身的线段的位置都是相对位置,通过自己的scale数据来操作。
S104、根据层数结构实例化各个组件,以生成渲染对象。
其中,每个渲染对象存放在一个场景中。
即,在实例化各个组件时,会对应生成组件的渲染对象,且该渲染对象对应存在一个场景中。
也就是说,一个组件对应一个渲染对象,一个渲染对象对应一个场景。场景管理器可以管理全部场景。
具体的,步骤S104根据层数结构实例化各个组件,以生成渲染对象,可以具体包括:在实例化每个组件的过程中,生成几何体、材质和渲染对象,并根据对应父组件的特征,分别获取相应的信息作为组件最终位置;其中,父组件的特征包括父节点具体形状特征,具体形状特征为点状、线状、面状或体状。
也就是说,图层会根据配置信息,实例化各个组件对象,并将相应的数据,及配置根据配置的结构,进行向下传递调用,一直到发现组件配置的childrens属性的值为空,每一个组件在实例化中,都要进行几何体的生成,材质的生成,渲染对象的生成,以及根据父组件的特征,分别获取相应的信息作为自己最终位置,区域的计算方法。其中,父组件的特征就是父组件是点状,线状,面状,体状的特征。具体的,子组件在请求这些父组件的时候,都会返回不同的信息,点状组件会返回自己的位置,线状组件会返回自己的位置,以及自己的一个根据比例值返回一个(在线条起点与终点之间)具体的位置的内部方法,面状组件会提供一个面的位置,以及可以获取面状的组件的范围bound的方法,体状组件会提供体的位置,以及线状组件和面状组件的方法,这样子组件就可以完成自己位置及范围的初始化,然后生成的渲染对象Mesh会有一个场景管理器来负责。
S105、场景管理器调用各个对应的场景来进行渲染对象的渲染,最终渲染出整个目标场景。
具体的,目标场景中渲染帧对应的图层管理器调用场景管理器,场景管理器调用渲染对象。也就是说,引擎的渲染帧会调用图层管理器,图层管理器会调用图层,而对应的图层管理器调用场景管理器,场景管理器调用具体的渲染对象,如此,便完成了整个目标场景的渲染。
每一帧中,调用场景管理器进行更新,场景管理器更新各个场景,各个场景对各个对应的渲染对象进行渲染。
请参考图10,图10为本申请实施例中一种渲染实现的具体示意图。首先,引擎初始化会调用图层管理器初始化,图层管理器会初始化各个图层,图层根据初始化配置信息,实例化各个组件,根据渲染数据,生产渲染对象存放在对应的场景中,整个引擎中有且仅有一个场景管理器,每一个场景都有场景管理器来管理,在引擎的每一帧中,都用调用场景管理器进行更新,场景管理器会更新各个场景,场景会将各个渲染对象渲染。
应用本申请实施例所提供的方法,获取目标场景对应的组件数据及组件配置信息;基于组件数据和组件配置信息,实例化一个根组件;根组件为所有组件的顶层父级;利用根组件,根据组件数据确定渲染组件的全局信息;根据层数结构实例化各个组件,以生成渲染对象;其中,每个渲染对象存放在一个场景中;场景管理器调用各个对应的场景来进行渲染对象的渲染,最终渲染出整个目标场景。
在本申请中,当需要对目标场景进行渲染时,仅需获取目标场景对应的组件数据和组件配置信息,然后基于组件数据和组件配置信息实例化一个根组件。然后,借助根组件便可确定渲染组件的全局信息。将各个组件实例化即可生成渲染对象,而每一个渲染对象存放在一个场景中。因而,利用场景管理器调用对应的渲染对象进行渲染,即可渲染出目标场景。也就是说,在本申请中,将业务场景与组件进行解耦,即不对组件进行场景化封装,且在需要渲染一个场景时,无需对当前场景的各个组件进行硬编码,即结合基于组件数据和组件配置信息实例化的根组件即可逐步实现场景渲染,能够加快可视化开发效率。
相应于上面的方法实施例,本申请实施例还提供了一种场景渲染装置,下文描述的场景渲染装置与上文描述的场景渲染方法可相互对应参照。
参见图7所示,该装置包括以下模块:
数据获取模块101,用于获取目标场景对应的组件数据及组件配置信息;
根组件实例化模块102,用于基于组件数据和组件配置信息,实例化一个根组件;根组件为所有组件的顶层父级;
全局信息确定模块103,用于利用根组件,根据组件数据确定渲染组件的全局信息;
组件实例化模块104,用于根据层数结构实例化各个组件,以生成渲染对象;其中,每个渲染对象存放在一个场景中;
场景渲染模块105,用于场景管理器调用各个对应的场景来进行渲染对象的渲染,最终渲染出整个目标场景。
应用本申请实施例所提供的装置,获取目标场景对应的组件数据及组件配置信息;基于组件数据和组件配置信息,实例化一个根组件;根组件为所有组件的顶层父级;利用根组件,根据组件数据确定渲染组件的全局信息;根据层数结构实例化各个组件,以生成渲染对象;其中,每个渲染对象存放在一个场景中;场景管理器调用各个对应的场景来进行渲染对象的渲染,最终渲染出整个目标场景。
在本申请中,当需要对目标场景进行渲染时,仅需获取目标场景对应的组件数据和组件配置信息,然后基于组件数据和组件配置信息实例化一个根组件。然后,借助根组件便可确定渲染组件的全局信息。将各个组件实例化即可生成渲染对象,而每一个渲染对象存放在一个场景中。因而,利用场景管理器调用对应的渲染对象进行渲染,即可渲染出目标场景。也就是说,在本申请中,将业务场景与组件进行解耦,即不对组件进行场景化封装,且在需要渲染一个场景时,无需对当前场景的各个组件进行硬编码,即结合基于组件数据和组件配置信息实例化的根组件即可逐步实现场景渲染,能够加快可视化开发效率。
在本申请的一种具体实施方式中,组件实例化模块104,具体用于根据层数结构在实例化每个组件的过程中,生成几何体、材质和渲染对象,并根据对应父组件的特征,分别获取相应的信息作为组件最终位置;其中,父组件的特征包括父节点具体形状特征,具体形状特征为点状、线状、面状或体状。
在本申请的一种具体实施方式中,全局信息确定模块103,具体用于判断根节点的规范化数据是否包括转换函数;如果是,则利用转换函数转换组件数据作为整个组件的位置信息;如果否,则默认引擎的原点位置作为整个组件的位置信息。
在本申请的一种具体实施方式中,场景渲染模块105,具体用于每一帧中,调用场景管理器进行更新,场景管理器更新各个场景,各个场景对各个对应的渲染对象进行渲染。
在本申请的一种具体实施方式中,数据获取模块101,具体用于接收目标场景的渲染请求;结合基础组件表达结构,对渲染请求进行解析,得到组件数据及组件配置信息。
在本申请的一种具体实施方式中,数据获取模块101,具体用于对目标场景对应的可视化编辑界面进行监控,以接收渲染请求。
在本申请的一种具体实施方式中,数据获取模块101,具体用于基础组件名,组件结构体变化参数,组件绘制样式参数,当前组件的子组件。
相应于上面的方法实施例,本申请实施例还提供了一种电子设备,下文描述的一种电子设备与上文描述的一种场景渲染方法可相互对应参照。
参见图8所示,该电子设备包括:
存储器332,用于存储计算机程序;
处理器322,用于执行计算机程序时实现上述方法实施例的场景渲染方法的步骤。
具体的,请参考图9,图9为本实施例提供的一种电子设备的具体结构示意图,该电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储器332通信,在电子设备301上执行存储器332中的一系列指令操作。
电子设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。
上文所描述的场景渲染方法中的步骤可以由电子设备的结构实现。
相应于上面的方法实施例,本申请实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种场景渲染方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的场景渲染方法的步骤。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
Claims (10)
1.一种场景渲染方法,其特征在于,包括:
获取目标场景对应的组件数据及组件配置信息;
基于所述组件数据和所述组件配置信息,实例化一个根组件;所述根组件为所有组件的顶层父级;
利用所述根组件,根据所述组件数据确定渲染组件的全局信息;
根据层数结构实例化各个所述组件,以生成渲染对象;其中,每个所述渲染对象存放在一个场景中;
场景管理器调用各个对应的场景来进行所述渲染对象的渲染,最终渲染出整个所述目标场景。
2.根据权利要求1所述的场景渲染方法,其特征在于,所述根据层数结构实例化各个所述组件,以生成渲染对象,包括:
在实例化每个所述组件的过程中,生成几何体、材质和所述渲染对象,并根据对应父组件的特征,分别获取相应的信息作为组件最终位置;其中,所述父组件的特征包括父节点具体形状特征,所述具体形状特征为点状、线状、面状或体状。
3.根据权利要求1所述的场景渲染方法,其特征在于,利用所述根组件,根据所述组件数据确定渲染组件的全局信息,包括:
判断所述根节点的规范化数据是否包括转换函数;
如果是,则利用所述转换函数转换所述组件数据作为整个组件的位置信息;
如果否,则默认引擎的原点位置作为整个组件的位置信息。
4.根据权利要求1所述的场景渲染方法,其特征在于,所述场景管理器调用各个对应的场景来进行所述渲染对象的渲染,最终渲染出整个所述目标场景,包括:
每一帧中,调用所述场景管理器进行更新,所述场景管理器更新各个所述场景,各个所述场景对各个对应的所述渲染对象进行渲染。
5.根据权利要求1至4任一项所述的场景渲染方法,其特征在于,所述获取目标场景对应的组件数据及组件配置信息,包括:
接收所述目标场景的渲染请求;
结合基础组件表达结构,对所述渲染请求进行解析,得到所述组件数据及所述组件配置信息。
6.根据权利要求5所述的场景渲染方法,其特征在于,接收所述目标场景的渲染请求,包括:
对所述目标场景对应的可视化编辑界面进行监控,以接收所述渲染请求。
7.根据权利要求5所述的场景渲染方法,其特征在于,所述基础组件表达结构,包括:
基础组件名,组件结构体变化参数,组件绘制样式参数,当前组件的子组件。
8.一种场景渲染装置,其特征在于,包括:
数据获取模块,用于获取目标场景对应的组件数据及组件配置信息;
根组件实例化模块,用于基于所述组件数据和所述组件配置信息,实例化一个根组件;所述根组件为所有组件的顶层父级;
全局信息确定模块,用于利用所述根组件,根据所述组件数据确定渲染组件的全局信息;
组件实例化模块,用于根据层数结构实例化各个所述组件,以生成渲染对象;其中,每个所述渲染对象存放在一个场景中;
场景渲染模块,用于场景管理器调用各个对应的场景来进行所述渲染对象的渲染,最终渲染出整个所述目标场景。
9.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述场景渲染方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述场景渲染方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110789026.9A CN113535169A (zh) | 2021-07-13 | 2021-07-13 | 一种场景渲染方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110789026.9A CN113535169A (zh) | 2021-07-13 | 2021-07-13 | 一种场景渲染方法、装置、设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113535169A true CN113535169A (zh) | 2021-10-22 |
Family
ID=78098774
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110789026.9A Pending CN113535169A (zh) | 2021-07-13 | 2021-07-13 | 一种场景渲染方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113535169A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113485698A (zh) * | 2021-06-23 | 2021-10-08 | 北京奇岱松科技有限公司 | 渲染代码转换生成方法、装置、计算设备及存储介质 |
CN114461358A (zh) * | 2021-12-22 | 2022-05-10 | 阿里巴巴(中国)有限公司 | 服务处理方法及系统 |
CN114862999A (zh) * | 2022-07-11 | 2022-08-05 | 杭州安恒信息技术股份有限公司 | 一种打点渲染方法、装置、设备及存储介质 |
-
2021
- 2021-07-13 CN CN202110789026.9A patent/CN113535169A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113485698A (zh) * | 2021-06-23 | 2021-10-08 | 北京奇岱松科技有限公司 | 渲染代码转换生成方法、装置、计算设备及存储介质 |
CN114461358A (zh) * | 2021-12-22 | 2022-05-10 | 阿里巴巴(中国)有限公司 | 服务处理方法及系统 |
CN114862999A (zh) * | 2022-07-11 | 2022-08-05 | 杭州安恒信息技术股份有限公司 | 一种打点渲染方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113535169A (zh) | 一种场景渲染方法、装置、设备及可读存储介质 | |
KR101996177B1 (ko) | Bim/gis 통합 정보 제공 방법 및 장치, 그리고 이를 이용하는 시스템 | |
RU2324229C2 (ru) | Визуальный и пространственный графические интерфейсы | |
US8665266B2 (en) | Global visualization process terrain database builder | |
KR100915209B1 (ko) | 엑스엠엘 기반의 입체 건물 입면 및 내부 자동 모델링 및내비게이션 시스템 및 그 방법 | |
US20020010572A1 (en) | Integrated system for and method of supporting spatial decision making and land-use scenario analysis | |
CN112559667B (zh) | 地图编辑器、地图引擎、地图编辑系统、方法及存储介质 | |
KR20070011062A (ko) | 모델 3d 구성 애플리케이션 프로그램 인터페이스 | |
CN112381931B (zh) | 一种基于json数据生成3d场景的方法 | |
CN113282697A (zh) | 基于Dojo实现多平台异构兼容的GIS系统及其设计、部署方法 | |
CN110910504A (zh) | 区域的三维模型的确定方法及装置 | |
Döllner et al. | An object-oriented approach for integrating 3D visualization systems and GIS | |
CN114862999A (zh) | 一种打点渲染方法、装置、设备及存储介质 | |
CN112053440A (zh) | 单体化模型的确定方法及通信装置 | |
CN106846431B (zh) | 一种支持多表现形式的统一Web图形绘制系统 | |
US7116341B2 (en) | Information presentation apparatus and method in three-dimensional virtual space and computer program therefor | |
CN114742931A (zh) | 渲染图像的方法、装置、电子设备及存储介质 | |
CN113360594A (zh) | 基于数字高程模型的汇水区提取方法、装置、设备及介质 | |
CN112099781A (zh) | 一种地图可视化方法、装置、存储介质及设备 | |
CN116863052A (zh) | 基于分布式操作系统绘制地图的方法及装置 | |
CN115269756A (zh) | 一种在cesium中引入热力图的方法及系统 | |
US20220343519A1 (en) | Variable transforms for three-dimensional engines | |
CN115981625A (zh) | 一种可扩展的电力系统接线图界面建模方法及系统 | |
Döllner | Geovisualization and real-time 3D computer graphics | |
CN115131513A (zh) | 一种三维地形裁剪方法、装置、设备及可读存储介质 |
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 |