CN112070871A - 一种跨平台三维可视化引擎构建系统、方法、终端及储存介质 - Google Patents
一种跨平台三维可视化引擎构建系统、方法、终端及储存介质 Download PDFInfo
- Publication number
- CN112070871A CN112070871A CN202010911420.0A CN202010911420A CN112070871A CN 112070871 A CN112070871 A CN 112070871A CN 202010911420 A CN202010911420 A CN 202010911420A CN 112070871 A CN112070871 A CN 112070871A
- Authority
- CN
- China
- Prior art keywords
- platform
- cross
- module
- dimensional visualization
- scene
- 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.)
- Granted
Links
- 238000012800 visualization Methods 0.000 title claims abstract description 48
- 238000010276 construction Methods 0.000 title claims abstract description 35
- 238000000034 method Methods 0.000 title claims description 18
- 238000009877 rendering Methods 0.000 claims abstract description 26
- 230000006870 function Effects 0.000 claims abstract description 23
- 238000012545 processing Methods 0.000 claims abstract description 14
- 239000000969 carrier Substances 0.000 claims abstract description 4
- 238000013515 script Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 10
- 208000035699 Distal ileal obstruction syndrome Diseases 0.000 claims description 6
- 238000013473 artificial intelligence Methods 0.000 claims description 4
- 238000011161 development Methods 0.000 description 11
- 230000018109 developmental process Effects 0.000 description 11
- 239000008186 active pharmaceutical agent Substances 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 239000000463 material Substances 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000011218 segmentation Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4492—Inheritance
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/005—Tree description, e.g. octree, quadtree
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明提供一种跨平台三维可视化引擎构建系统、方法、终端及储存介质,渲染模块用于配置渲染图层,获取渲染图层操控指令,对图像进行渲染处理;场景管理模块用于通过场景树的方式对图像的场景元素进行组织和管理;组件子系统模块用于配置多个为空的图像载体以及拥有不同处理功能的功能组件;跨平台引擎构建模块配置有引擎解耦单元,引擎解耦单元使多种系统支持多种操作系统,并提供跨平台连接接口,实现对跨平台图像数据的处理。本发明基于OpenGL及相应的WebGL、JavaScript语言对于不同系统平台进行封装,最大程度上保证外部接口的统一性,并使其可运行在多平台,便于操作,兼容性好。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种跨平台三维可视化引擎构建系统、方法、终端及储存介质。
背景技术
引擎是借用机器工业的同名术语,表明在整个系统中的核心地位。也可以称之为“支持应用的底层函数库”或者说是对特定应用的一种抽象。
目前图形引擎中比较出色的有OGRE、OpenGVS、Vtree、OSG等。而一个封装了硬件操作和图形算法、简单易用、功能丰富的三维图形开发环境,就可以称作三维图形引擎。
三维引擎包含了多个应用程序组件集合,每个组件的功能分工不同。通常一个三维引擎由数学引擎、图形渲染、资源管理、音效、IO处理,操作系统支持等等。近年来,随着计算机软硬件特别是智能手机的发展以及H5/3D/VR等平台和技术的兴起,三维引擎逐渐向着多平台、轻量化、模块化趋势发展。一款优秀的三维引擎应该具备架构清晰易扩展,支持脚本语言,良好的编程接口,跨平台快速编译等特点。
现有的三维引擎平台已经有不少引擎(主要是游戏引擎)具备了跨平台快速发布的特点,但这些引擎要一般存在着以下几个问题:
引擎代码过于臃肿,上手门槛高,功能非常多,实际应用的功能可能不到十分之一。
代码非开源,不方便进行底层修改和定制开发;
跨平台方案不够友好,造成代码执行效率低;
大部分的商业引擎都是基于网络游戏;
WebGL效率不高,或者导出步骤较为繁琐。
发明内容
为了克服上述现有技术中的不足,本发明提供一种跨平台三维可视化引擎构建系统,包括:渲染模块、场景管理模块、组件子系统模块以及跨平台引擎构建模块;
渲染模块用于配置渲染图层,获取渲染图层操控指令,对图像进行渲染处理;
场景管理模块用于通过场景树的方式对图像的场景元素进行组织和管理;
组件子系统模块用于配置多个为空的图像载体以及拥有不同处理功能的功能组件;
跨平台引擎构建模块配置有引擎解耦单元,引擎解耦单元使多种系统支持多种操作系统,并提供跨平台连接接口,实现对跨平台图像数据的处理。
进一步需要说明的是,还包括:存储模块;
存储模块用于按照预设格式,对场景图像数据进行保存,并提供多种格式读取接口;多种格式读取接口包括:二进制格式、XML格式和JSON格式。
进一步需要说明的是,还包括:序列化储存配置模块;
序列化储存配置模块用于从存储模块读取的场景图像数据转换成序列化数据流;序列化数据流包括:数据、数据版本、数据区域性和数据程序集名称。
进一步需要说明的是,序列化储存配置模块用于定义场景图像数据的格式,场景图像数据的格式包括:场景节点,父子关系,属性以及组件信息。
进一步需要说明的是,序列化储存配置模块用于场景图像数据以树形配置,将树形中的每个节点按照预设层次保存;
每个节点配置有一个父节点和任意数量的兄弟节点和子节点;
还用于配置每个节点序列化接口,并自定义序列化函数,用于保存节点自身数据以及对应子节点的数据。
进一步需要说明的是,场景管理模块还用于配置场景树,描述图像中物体间位置关系的树形结构,采用自上向下的、分层的树状数据结构来组织空间数据集;
场景树用于组织场景中所有可见的物体,包围盒以及三维对象组成的动画。
进一步需要说明的是,还包括:脚本编辑模块;
脚本编辑模块用于配置脚本程序,通过脚本程序构建界面图像,创建引擎、编写人工智能系,定义、存储和管理基础数据。
本发明还提供一种跨平台三维可视化引擎构建方法,可视化引擎构建方法包括:
在Windows系统、或Linux系统、或macOS系统下进行编译;
设置环境变量,将环境变量ANDROID_SDK_HOME指向Android SDK;
通过gradlew安装SDK组件,并接受SDK组件许可证,执行Gradle的装载;
设置环境变量ANDROID_NDK指向Android NDK;
将环境变量ANDROID_SDK_HOME和环境变量ANDROID_NDK设置为相同的路径;
在Linux系统和macOS系统上设置环境变量时,使用预设参数及路径配置环境变量;
在IOS平台上进行内容或工具的编译;
添加参数
-DIOS_PLATFORM=SIMULATOR或-DIOS_PLATFORM=SIMULATOR64;
在web上进行发布,采用WebAssembly方式进行编译,使用Emscripten将C/C++代码编译成JavaScript;
设置环境变量,将EMSCRIPTEN_ROOT_PATH环境变量指向Emscripten工具的根目录,或者运行emsdk_env脚本设置EMSCRIPTEN环境变量;
使用Camke进行web平台编译:
进行编写工具链,完成跨平台三维可视化引擎构建。
本发明还提供一种实现跨平台三维可视化引擎构建系统的终端,包括:
存储器,用于存储计算机程序及跨平台三维可视化引擎构建系统;
处理器,用于执行所述计算机程序及跨平台三维可视化引擎构建系统,以实现跨平台三维可视化引擎构建系统。
本发明还提供一种具有跨平台三维可视化引擎构建系统的可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行以实现跨平台三维可视化引擎构建系统。
从以上技术方案可以看出,本发明具有以下优点:
本发明使用OpenGL作为渲染API,shader-based架构跨平台兼容;
使用OpenGL ES技术进行定制裁剪。应用层使用lua、C#(引入mono),使用C++技术作为开发语言保证引擎的高效三维引擎底层。基于OpenGL及相应的WebGL、JavaScript语言对于不同系统平台进行封装,最大程度上保证外部接口的统一性,并使其可运行在多平台,便于操作,兼容性好。
引擎架构具有轻量级易于扩展、场景模型基于节点的架构、模块化组件系统等特点;
跨平台的shader交叉编译;支持通用的图形API:Direct3D 9、Direct3D 11、OpenGL 2.0or 3.2、OpenGL ES 2.0和WebGL。
引入lua作为高效的脚本开发框架,更好地实现了引擎的脚本化和业务逻辑的热更新。
使用SDL 2.0支持引擎的跨平台,web方面采用新的字节码格式WebAssembly,让webGL运行更快,支持一键生成web;便于进行操作,提高数据处理效率。
附图说明
为了更清楚地说明本发明的技术方案,下面将对描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为跨平台三维可视化引擎构建系统示意图;
图2为渲染模块配置的渲染实例效果图;
图3为八叉树实施例示意图;
图4为组件子系统模块的实现类图:
图5为SDL_Window基本结构图。
具体实施方式
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
现在将参考附图描述实现本发明各个实施例的移动终端。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明实施例的说明,其本身并没有特定的意义。因此,"模块"与"部件"可以混合地使用。
本发明提供一种跨平台三维可视化引擎构建系统,系统涉及的三维引擎模块包括:渲染模块1、场景管理模块2、组件子系统模块3以及跨平台引擎构建模块4,如图1所示;
渲染模块1用于配置渲染图层,获取渲染图层操控指令,对图像进行渲染处理;如图2所示,渲染模块可以配置图像的各个图层关系,对各个图层可以进行拆分以及组合处理,满足对图像的使用需求。可以在显示的图像中设置相应的操作选项供用户操作。各个选项可以涉及图层的选定或不选定。可以涉及图层的添加删除等等。还可以配置保存等编辑按键。还可以设置对图层的测距,漫游以及透视化处理等等。
场景管理模块2用于通过场景树的方式对图像的场景元素进行组织和管理;
具体来讲,如图3所示,三维可视化引擎作为一种跨平台使用的系统,可以实现基于八叉树和BSP树方式来进行场景分割。
其中,八叉树(Octree)是若不为空树的话,树中任一节点的子节点恰好只会有八个,或零个,也就是子节点不会有0与8以外的数目。八叉树就是用在3D空间中的场景管理,可以很快地知道物体在3D场景中的位置,或侦测与其它物体是否有碰撞以及是否在可视范围内。
本发明中的八叉树是描述三维空间的树状数据结构,八叉树的每个节点表示一个正方体的体积元素,每个节点有八个子节点Node,将八个子节点所表示的体积元素加在一起就等于父节点的体积。
BSP(二叉空间分割)树是另一种类型的空间分割技术,也可以在本发明提供的场景中进行使用。
进一步的讲,场景管理模块还用于配置场景树,描述图像中物体间位置关系的树形结构,采用自上向下的、分层的树状数据结构来组织空间数据集;
场景树用于组织场景中所有可见的物体,包围盒以及三维对象组成的动画。
本系统中可以根据组件子系统模块3中的各种组件来进行场景分割,并实现开发式管理,可以自由编写场景分割算法以组件的方式挂载于场景管理模块Scene上即可,
组件子系统模块用于配置多个为空的图像载体以及拥有不同处理功能的功能组件;
其中,如图4所示,组件子系统模块(Component)是在三维对象(Object)中的实现某些功能的集合。无论是模型、UI、灯光(Light)、还是摄像机(camera),所有三维对象本质上都是一个空对象挂载了不同类别的组件,从而让三维对象拥有不同的功能组件。
这样可以使得实体三维对象的各个功能之间能够充分解耦,将一个实体三维对象简化为组件的容器。
组件子系统模块可以配置子系统(Subsystem),子系统(Subsystem)是参考虚幻引擎UE4.22而配置的一个系统模块,子系统是一个自动实例化的类,不修改或继承引擎类的情况下,方便扩展对应模块的功能。子系统因为使用了类似组合的设计模式,使其没有复杂的继承关系,利于功能的扩展。
跨平台引擎构建模块4配置有引擎解耦单元,引擎解耦单元使多种系统支持多种操作系统,并提供跨平台连接接口,实现对跨平台图像数据的处理。
作为本发明提供的实施方式,系统还包括:存储模块;存储模块用于按照预设格式,对场景图像数据进行保存,并提供多种格式读取接口;多种格式读取接口包括:二进制格式、XML格式和JSON格式。
存储模块可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
对于存储模块的读取中,系统还包括:序列化储存配置模块;序列化储存配置模块用于从存储模块读取的场景图像数据转换成序列化数据流;序列化数据流包括:数据、数据版本、数据区域性和数据程序集名称。
进一步的讲,序列化是指将数据结构或对象状态转换成可取用格式的一种过程。一个对象被序列化成流,其中不仅包含数据,还包含对象类型的相关信息,如版本、区域性和程序集名称。
系统引擎的序列化借鉴了UE4和unity3D的序列化工作方式,将序列化的存档接口高度抽象化了,采用了观察者的设计模式,将Serializer作为访问者,继承于Object对象作为访问者,实现了一个Save(Serializer&dest)接口。
序列化储存配置模块用于定义场景图像数据的格式,场景图像数据的格式包括:场景节点,父子关系,属性以及组件信息。
举例来讲,基于xml格式的场景和模型存储。由于xml文件格式具有易读易编写的特性,将xml作为场景和对象的默认存储格式。
这里,先定义xml场景存储文件格式,包括场景节点,父子关系,属性以及组件信息等。
作为本发明的一种实施方式,序列化储存配置模块用于场景图像数据以树形配置,将树形中的每个节点按照预设层次保存;每个节点配置有一个父节点和任意数量的兄弟节点和子节点;
还用于配置每个节点序列化接口,并自定义序列化函数,用于保存节点自身数据以及对应子节点的数据。
具体来讲,整个场景都是以树形结构来进行管理的,因此,以树的结构来保存整个3D场景,将树中的每个节点(Node)按照一定层次保存下来,一个场景节点可以有一个父节点和任意数量的兄弟节点和子节点。Node节点主要包含2个信息,一个是属性列表用Vector<AttributeInfo>来保存,主要用于记录对象的位置、名字等信息,一个就是组件对象(Component),用于保存对象的类型,相应类型的一些属性信息。
Node对象继承于Serializable,重载了Save(Serializer&dest)成员函数,用于保存自身节点以及对应子节点的数据。
本发明在进行模型和材质的保存时,这里的模型主要由model,Geometry、Material来组成。在存储方面,利用了Model和Matrial两个类来做模型的存储和序列化。
Model类继承自Resource,它是负责模型文件加载的。Tdo3D引擎模型的模型文件格式为fbx,这也是大部分三维引擎默认的模型格式。加载完成后会把模型的各种信息(如顶点,法线,骨骼动画)等保存到相应的成员数据中。
作为Material也继承自Resource类,是负责材质文件的加载。Tdo3D的材质配置支持XML文件和JSON文件。
作为本发明的一种实施方式,系统还包括:脚本编辑模块;脚本编辑模块用于配置脚本程序,通过脚本程序构建界面图像,创建引擎、编写人工智能系,定义、存储和管理基础数据。
系统描述的各种实施方式可以以使用例如计算机软件、硬件或其任何组合的计算机可读介质来实施。对于硬件实施,这里描述的实施方式可以通过使用特定用途集成电路(ASIC,Application Specific Integrated Circuit)、数字信号处理器(DSP,DigitalSignal Processing)、数字信号处理装置(DSPD,Digital Signal Processing Device)、可编程逻辑装置(PLD,Programmable Logic Device)、现场可编程门阵列(FPGA,FieldProgrammable Gate Array)、处理器、控制器、微控制器、微处理器、被设计为执行这里描述的功能的电子单元中的至少一种来实施,在一些情况下,这样的实施方式可以在控制器中实施。对于软件实施,诸如过程或功能的实施方式可以与允许执行至少一种功能或操作的单独的软件模块来实施。软件代码可以由以任何适当的编程语言编写的软件应用程序(或程序)来实施,软件代码可以存储在存储器中并且由控制器执行。
作为优选的方式,跨平台三维可视化引擎系统采用Lua作为脚本化方案的脚本语言,Lua是一个小巧的脚本语言,在已知的脚本语言当中Lua是内核最小的一门语言,执行效率高效,并且能够和C/C++进行完美地交互,适合做为程序的热更模块。
当然本发明不局限于使用Lua作为脚本化方案还可以使用其他方式实现。脚本编辑模块可以使用lua来开发基于引擎底层之外的所有功能,主要包括UI逻辑、创建功能原型、编写人工智能系、定义、存储和管理基础数据等。
脚本编辑模块还使用tolua++工具,将c++类导出到lua中。为CMakeLists实现一键生成pkg的代码。
当然使用Lua脚本用于编码时,编写的代码我们是通过LuaScript模块来执行,LuaScript模块封装了Lua和引擎的交互接口,通过LuaScript模块Lua脚本可以调用引擎涉及的所有API。
作为本发明的系统来讲,可以以各种形式来实施。例如,本发明实施例中描述的终端可以包括诸如笔记本电脑、数字广播接收器、个人数字助理(PDA,Personal DigitalAssistant)、平板电脑(PAD)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。然而,本领域技术人员将理解的是,除了特别用于移动目的的元件之外,根据本发明的实施方式的构造也能够应用于固定类型的终端。
本发明中的跨平台三维可视化引擎系统支持Windows、IOS、MACOS、Android、Ubuntu、Web等不同的平台或操作系统。为了实现跨平台的目的,确保引擎系统采用C/C++代码,并符合ANSI标准,并且在大小尾端、字节对齐等方面做了相应的适配。
系统使用SDL 2.0作为引擎的扩展开发库。SDL是一个开源的跨平台开发库,它向上层提供纯C接口,接口内主要包括图像、声音和事件三类。通过使用SDL,系统可以在不依赖于特定操作系统的情况下添加多媒体功能,包括窗口管理、渲染图形接口,音频以及IO处理等。
系统基于UI框架实现跨平台,以下以IOS平台为例:基于UI框架是OC实现(.m文件),而底层引擎是C++(.cpp文件),两者不能直接调用,Tdo3D引擎通过SDL(.c文件)来做中间转接,让Tdo3D底层引擎代码彻底与上层平台相关的UI框架解耦。
引擎的Graphics对象在初始化时会创建UIWindow(SDL_uikitwindow),调用一系列操作进行UI的初始化,通过SDL_CreateWindow、SDL_uikitwindow等几个函数来实现。初始化UI之后,UI与引擎之间的数据交互通过SDL_Window结构体来管理,SDL_Window基本结构如下图5所示。
作为本发明优选的实施方式,系统可以基于跨平台shader交叉编译。本发明的引擎系统支持多个图形API,主要包括D3D、OpenGL、OpenGLES、Vulkan等,这些图形接口都有各自的Shader Language,如D3D对应的HLSL,OpenGL对应的GLSL等。对于一个三维工程来说,shader代码量一般都会比较大,因为要支持跨平台,可能需要在不同的平台上写多套shader,这种方式不论是在开发上还是测试上都会让工作量成倍增加,所以本发明使用了shader交叉编译器ShaderConductor,将HLSL着色器脚本转化成了不同平台支持的着色器语言,它的工作原理首先是HLSL经过DirectXShaderCompiler的编译,可以生成D3D12用的DXIL,也可以生成Vulkan和较新的OpenGL用的SPIR-V。然后,SPIR-V经过SPIRV-Cross,可以转换成OpenGL用的GLSL,OpenGL ES用的ESSL,Metal用的MSL,以及D3D 9/10/11用的老HLSL。完成了各个主流平台的shader交叉编译。
作为本发明的构建方式,本发明可以实现跨平台编译,具体的,在Windows、或Linux、或macOS下进行编译,准备以下内容:
cmake 3.7.2以上
ndk android-ndk-r12b
adt-bundle-windows-x86_64-20140702
设置构建系统条件:
首先,设置环境变量,将环境变量ANDROID_SDK_HOME指向Android SDK。
如果配置了Android命令行工具,那么将其解压缩到存档内容的文件夹。通过gradlew将在此文件夹中安装SDK组件。接受SDK组件许可证,执行Gradle的装载。
设置环境变量ANDROID_NDK指向Android NDK。
将环境变量ANDROID_SDK_HOME和环境变量ANDROID_NDK设置为相同的路径;,在使用自定义Android模块的情况下,因为某些Gradle插件依赖NDK并使用此变量来确定其位置。如果是要在Linux或macOS上设置这些环境变量,可以使用export ANDROID_SDK_HOME=/path/to/android-sdk和export ANDROID_NDK=/path/to/android-ndk,
其中/path/to/android-sdk和/path/to/android-ndk是Android SDK和AndroidNDK目录的根路径。
这样构建系统条件设置完成。
在IOS平台进行内容或工具的编译
编译ios需要以下内容或工具:
Xcode10.0以上
cmake 3.7.2以上
如果构建运行在模拟器的工程,可以添加参数-DIOS_PLATFORM=SIMULATOR或-DIOS_PLATFORM=SIMULATOR64。
作为在Web平台编译,三维引擎系统在web上进行发布,采用WebAssembly方式进行编译,使用Emscripten将C/C++代码编译成JavaScript。WebAssembly是一种接近机器语言的跨平台二进制格式,它具有快速高效,可移植性,安全性高等特点。
编译web平台需要以下内容或工具(以下以OS X或linux为例):
Emscripten 1.39.0+.
cmake 3.7.2以上
首先,设置环境变量,将EMSCRIPTEN_ROOT_PATH环境变量指向Emscripten工具的根目录,或者直接运行emsdk_env脚本设置EMSCRIPTEN环境变量。
使用Camke进行web平台编译:
进行编写工具链,完成跨平台三维可视化引擎构建。
这样,本发明使用OpenGL作为渲染API,shader-based架构跨平台兼容;
使用OpenGL ES技术进行定制裁剪。应用层使用lua、C#(引入mono),使用C++技术作为开发语言保证引擎的高效三维引擎底层。基于OpenGL及相应的WebGL、JavaScript语言对于不同系统平台进行封装,最大程度上保证外部接口的统一性,并使其可运行在多平台;
引擎架构具有轻量级易于扩展、场景模型基于节点的架构、模块化组件系统等特点;
跨平台的shader交叉编译;
支持通用的图形API:Direct3D 9、Direct3D 11、OpenGL 2.0or 3.2、OpenGL ES2.0和WebGL。
引入lua作为高效的脚本开发框架,更好地实现了引擎的脚本化和业务逻辑的热更新。
使用SDL 2.0支持引擎的跨平台,web方面采用新的字节码格式WebAssembly,让webGL运行更快,支持一键生成web;
场景和对象支持多种格式的保存和读取,包括二进制、XML和JSON。
基于上述跨平台三维可视化引擎构建系统及方法本发明还提供一种实现跨平台三维可视化引擎构建系统的终端,包括:
存储器,用于存储计算机程序及跨平台三维可视化引擎构建系统;
处理器,用于执行所述计算机程序及跨平台三维可视化引擎构建系统,以实现跨平台三维可视化引擎构建系统。
本发明还提供一种具有跨平台三维可视化引擎构建系统的可读存储介质,可读存储介质上存储有计算机程序,所述计算机程序被处理器执行以实现跨平台三维可视化引擎构建系统。
实现跨平台三维可视化引擎构建系统的终端是结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的实现跨平台三维可视化引擎构建系统的终端可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据实现跨平台三维可视化引擎构建系统的终端公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的索引方法。
在存储模块中,可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种跨平台三维可视化引擎构建系统,其特征在于,包括:渲染模块、场景管理模块、组件子系统模块以及跨平台引擎构建模块;
渲染模块用于配置渲染图层,获取渲染图层操控指令,对图像进行渲染处理;
场景管理模块用于通过场景树的方式对图像的场景元素进行组织和管理;
组件子系统模块用于配置多个为空的图像载体以及拥有不同处理功能的功能组件;
跨平台引擎构建模块配置有引擎解耦单元,引擎解耦单元使多种系统支持多种操作系统,并提供跨平台连接接口,实现对跨平台图像数据的处理。
2.根据权利要求1所述的跨平台三维可视化引擎构建系统,其特征在于,
还包括:存储模块;
存储模块用于按照预设格式,对场景图像数据进行保存,并提供多种格式读取接口;多种格式读取接口包括:二进制格式、XML格式和JSON格式。
3.根据权利要求2所述的跨平台三维可视化引擎构建系统,其特征在于,
还包括:序列化储存配置模块;
序列化储存配置模块用于从存储模块读取的场景图像数据转换成序列化数据流;序列化数据流包括:数据、数据版本、数据区域性和数据程序集名称。
4.根据权利要求3所述的跨平台三维可视化引擎构建系统,其特征在于,
序列化储存配置模块用于定义场景图像数据的格式,场景图像数据的格式包括:场景节点,父子关系,属性以及组件信息。
5.根据权利要求4所述的跨平台三维可视化引擎构建系统,其特征在于,
序列化储存配置模块用于场景图像数据以树形配置,将树形中的每个节点按照预设层次保存;
每个节点配置有一个父节点和任意数量的兄弟节点和子节点;
还用于配置每个节点序列化接口,并自定义序列化函数,用于保存节点自身数据以及对应子节点的数据。
6.根据权利要求1或2所述的跨平台三维可视化引擎构建系统,其特征在于,
场景管理模块还用于配置场景树,描述图像中物体间位置关系的树形结构,采用自上向下的、分层的树状数据结构来组织空间数据集;
场景树用于组织场景中所有可见的物体,包围盒以及三维对象组成的动画。
7.根据权利要求1或2所述的跨平台三维可视化引擎构建系统,其特征在于,
还包括:脚本编辑模块;
脚本编辑模块用于配置脚本程序,通过脚本程序构建界面图像,创建引擎、编写人工智能系,定义、存储和管理基础数据。
8.一种跨平台三维可视化引擎构建方法,其特征在于,可视化引擎构建方法包括:
在Windows系统、或Linux系统、或macOS系统下进行编译;
设置环境变量,将环境变量ANDROID_SDK_HOME指向Android SDK;
通过gradlew安装SDK组件,并接受SDK组件许可证,执行Gradle的装载;
设置环境变量ANDROID_NDK指向Android NDK;
将环境变量ANDROID_SDK_HOME和环境变量ANDROID_NDK设置为相同的路径;
在Linux系统和macOS系统上设置环境变量时,使用预设参数及路径配置环境变量;
在IOS平台上进行内容或工具的编译;
添加参数
-DIOS_PLATFORM=SIMULATOR或-DIOS_PLATFORM=SIMULATOR64;
在web上进行发布,采用WebAssembly方式进行编译,使用Emscripten将C/C++代码编译成JavaScript;
设置环境变量,将EMSCRIPTEN_ROOT_PATH环境变量指向Emscripten工具的根目录,或者运行emsdk_env脚本设置EMSCRIPTEN环境变量;
使用Camke进行web平台编译:
进行编写工具链,完成跨平台三维可视化引擎构建。
9.一种实现跨平台三维可视化引擎构建系统的终端,其特征在于,包括:
存储器,用于存储计算机程序及跨平台三维可视化引擎构建系统;
处理器,用于执行所述计算机程序及跨平台三维可视化引擎构建系统,以实现如权利要求1至7任意一项所述跨平台三维可视化引擎构建系统。
10.一种具有跨平台三维可视化引擎构建系统的可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行以实现如权利要求1至7任意一项所述跨平台三维可视化引擎构建系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010911420.0A CN112070871B (zh) | 2020-09-02 | 2020-09-02 | 一种跨平台三维可视化引擎构建系统、方法、终端及储存介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010911420.0A CN112070871B (zh) | 2020-09-02 | 2020-09-02 | 一种跨平台三维可视化引擎构建系统、方法、终端及储存介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112070871A true CN112070871A (zh) | 2020-12-11 |
CN112070871B CN112070871B (zh) | 2024-01-19 |
Family
ID=73665997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010911420.0A Active CN112070871B (zh) | 2020-09-02 | 2020-09-02 | 一种跨平台三维可视化引擎构建系统、方法、终端及储存介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112070871B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112862978A (zh) * | 2020-12-31 | 2021-05-28 | 江西格灵如科科技有限公司 | 一种vr课件终端及系统 |
CN113034665A (zh) * | 2021-01-19 | 2021-06-25 | 中电普信(北京)科技发展有限公司 | 一种基于场景树的仿真建模方法及系统 |
CN113112579A (zh) * | 2021-04-13 | 2021-07-13 | 苍穹数码技术股份有限公司 | 渲染方法、装置、电子设备和计算机可读存储介质 |
CN113282357A (zh) * | 2021-06-24 | 2021-08-20 | 北京优锘科技有限公司 | 三维引擎结合脚本引擎实现运行的方法、设备及介质 |
CN113538705A (zh) * | 2021-07-19 | 2021-10-22 | 中国人民解放军66350部队 | 一种基于Vulkan的飞行仿真用视景引擎 |
CN113918863A (zh) * | 2021-10-25 | 2022-01-11 | 北京优锘科技有限公司 | 虚幻引擎和Threejs引擎交互一致的方法、装置、介质和设备 |
CN114821001A (zh) * | 2022-04-12 | 2022-07-29 | 支付宝(杭州)信息技术有限公司 | 基于ar的互动方法、装置及电子设备 |
CN115883658A (zh) * | 2022-12-07 | 2023-03-31 | 长安大学 | 一种跨平台的图像信息传输方法、系统、设备和可读存储介质 |
CN115983047A (zh) * | 2023-03-14 | 2023-04-18 | 北京科技大学 | 一种适用于多图形接口的跨平台的仿真系统 |
CN116955209A (zh) * | 2023-09-18 | 2023-10-27 | 北京中电华大电子设计有限责任公司 | WebAssembly虚拟机的测试方法和装置 |
CN117331549A (zh) * | 2023-12-01 | 2024-01-02 | 成都福立盟科技有限公司 | 一种三维可视化开发框架构建方法 |
CN117435175A (zh) * | 2023-09-14 | 2024-01-23 | 深圳数生科技有限公司 | 一种三维gis可视化引擎封装方法及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100289804A1 (en) * | 2009-05-13 | 2010-11-18 | International Business Machines Corporation | System, mechanism, and apparatus for a customizable and extensible distributed rendering api |
US20140125672A1 (en) * | 2012-11-02 | 2014-05-08 | Microsoft Corporation | Cross-platform data visualizations using common descriptions |
CN103970966A (zh) * | 2014-05-27 | 2014-08-06 | 武汉兆图科技有限公司 | 一种跨嵌入式平台的三维渲染引擎的构建方法 |
US20150243257A1 (en) * | 2014-02-24 | 2015-08-27 | Microsoft Corporation | Cross-Platform Rendering Engine |
CN106846238A (zh) * | 2017-03-01 | 2017-06-13 | 北京趣酷科技有限公司 | 一种Elf3D跨平台引擎系统 |
CN106990961A (zh) * | 2017-03-28 | 2017-07-28 | 易网数通(北京)科技有限公司 | 一种WebGL图形渲染引擎的建立方法 |
CN109656637A (zh) * | 2018-12-13 | 2019-04-19 | 高新兴科技集团股份有限公司 | 跨平台调用OpenGL ES的渲染方法、装置及计算机存储介质 |
CN111338623A (zh) * | 2020-02-10 | 2020-06-26 | 北京字节跳动网络技术有限公司 | 一种开发用户界面的方法、装置、介质和电子设备 |
-
2020
- 2020-09-02 CN CN202010911420.0A patent/CN112070871B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100289804A1 (en) * | 2009-05-13 | 2010-11-18 | International Business Machines Corporation | System, mechanism, and apparatus for a customizable and extensible distributed rendering api |
US20140125672A1 (en) * | 2012-11-02 | 2014-05-08 | Microsoft Corporation | Cross-platform data visualizations using common descriptions |
US20150243257A1 (en) * | 2014-02-24 | 2015-08-27 | Microsoft Corporation | Cross-Platform Rendering Engine |
CN103970966A (zh) * | 2014-05-27 | 2014-08-06 | 武汉兆图科技有限公司 | 一种跨嵌入式平台的三维渲染引擎的构建方法 |
CN106846238A (zh) * | 2017-03-01 | 2017-06-13 | 北京趣酷科技有限公司 | 一种Elf3D跨平台引擎系统 |
CN106990961A (zh) * | 2017-03-28 | 2017-07-28 | 易网数通(北京)科技有限公司 | 一种WebGL图形渲染引擎的建立方法 |
CN109656637A (zh) * | 2018-12-13 | 2019-04-19 | 高新兴科技集团股份有限公司 | 跨平台调用OpenGL ES的渲染方法、装置及计算机存储介质 |
CN111338623A (zh) * | 2020-02-10 | 2020-06-26 | 北京字节跳动网络技术有限公司 | 一种开发用户界面的方法、装置、介质和电子设备 |
Non-Patent Citations (1)
Title |
---|
张忆楠等: "实时渲染引擎架构", 中兴通讯技术, vol. 19, no. 03, pages 48 - 53 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112862978A (zh) * | 2020-12-31 | 2021-05-28 | 江西格灵如科科技有限公司 | 一种vr课件终端及系统 |
CN113034665B (zh) * | 2021-01-19 | 2023-01-06 | 中电普信(北京)科技发展有限公司 | 一种基于场景树的仿真建模方法及系统 |
CN113034665A (zh) * | 2021-01-19 | 2021-06-25 | 中电普信(北京)科技发展有限公司 | 一种基于场景树的仿真建模方法及系统 |
CN113112579A (zh) * | 2021-04-13 | 2021-07-13 | 苍穹数码技术股份有限公司 | 渲染方法、装置、电子设备和计算机可读存储介质 |
CN113282357A (zh) * | 2021-06-24 | 2021-08-20 | 北京优锘科技有限公司 | 三维引擎结合脚本引擎实现运行的方法、设备及介质 |
CN113538705A (zh) * | 2021-07-19 | 2021-10-22 | 中国人民解放军66350部队 | 一种基于Vulkan的飞行仿真用视景引擎 |
CN113538705B (zh) * | 2021-07-19 | 2022-09-09 | 中国人民解放军66350部队 | 一种基于Vulkan的飞行仿真用视景引擎 |
CN113918863A (zh) * | 2021-10-25 | 2022-01-11 | 北京优锘科技有限公司 | 虚幻引擎和Threejs引擎交互一致的方法、装置、介质和设备 |
CN114821001A (zh) * | 2022-04-12 | 2022-07-29 | 支付宝(杭州)信息技术有限公司 | 基于ar的互动方法、装置及电子设备 |
CN114821001B (zh) * | 2022-04-12 | 2024-04-19 | 支付宝(杭州)信息技术有限公司 | 基于ar的互动方法、装置及电子设备 |
CN115883658A (zh) * | 2022-12-07 | 2023-03-31 | 长安大学 | 一种跨平台的图像信息传输方法、系统、设备和可读存储介质 |
CN115983047A (zh) * | 2023-03-14 | 2023-04-18 | 北京科技大学 | 一种适用于多图形接口的跨平台的仿真系统 |
CN117435175A (zh) * | 2023-09-14 | 2024-01-23 | 深圳数生科技有限公司 | 一种三维gis可视化引擎封装方法及系统 |
CN116955209A (zh) * | 2023-09-18 | 2023-10-27 | 北京中电华大电子设计有限责任公司 | WebAssembly虚拟机的测试方法和装置 |
CN116955209B (zh) * | 2023-09-18 | 2024-02-06 | 北京中电华大电子设计有限责任公司 | WebAssembly虚拟机的测试方法和装置 |
CN117331549A (zh) * | 2023-12-01 | 2024-01-02 | 成都福立盟科技有限公司 | 一种三维可视化开发框架构建方法 |
CN117331549B (zh) * | 2023-12-01 | 2024-01-30 | 成都福立盟科技有限公司 | 一种三维可视化开发框架构建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112070871B (zh) | 2024-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112070871B (zh) | 一种跨平台三维可视化引擎构建系统、方法、终端及储存介质 | |
US10599405B2 (en) | Application system having an LLVM compiler | |
Junker | Pro OGRE 3D programming | |
KR100928192B1 (ko) | 내장형 디바이스에서의 3d 콘텐츠에 대한 오프라인 최적화파이프라인 | |
US20020129340A1 (en) | Reconfigurable isomorphic software representations | |
CN105005495B (zh) | 一种游戏引擎 | |
CN103314358A (zh) | 用于针对嵌入式装置来生成三维用户接口的方法与系统 | |
WO2023071579A1 (zh) | 物理特效渲染方法、装置、计算机设备和存储介质 | |
US20140359585A1 (en) | Method and device for compiling a source program | |
Jackson | Learn Android App Development | |
CN112818176B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN117234470B (zh) | 一种基于低代码平台的跨端表单开发系统及方法 | |
Lewis et al. | Native mobile development: a cross-reference for iOS and Android | |
CN111831283A (zh) | 一种基于qt的人机界面模块化开发方法 | |
CN102508648A (zh) | 一种图形引擎实现方法 | |
CN114943795A (zh) | 模型的渲染方法、装置、电子设备及存储介质 | |
CN105183491A (zh) | 跨平台的桌面gis系统及其启动方法 | |
Meijers et al. | Unity | |
US20240111496A1 (en) | Method for running instance, computer device, and storage medium | |
Berinstein et al. | Game development tool essentials | |
Von Pilgrim et al. | Eclipse GEF3D: bringing 3d to existing 2d editors | |
Atella | Rendering Hypercomplex Fractals | |
US11625229B1 (en) | Context for components in an application | |
US20210232413A1 (en) | Third party executable asset bundle deployment | |
Revie | Designing a Data-Driven Renderer |
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 | ||
CB03 | Change of inventor or designer information | ||
CB03 | Change of inventor or designer information |
Inventor after: Yan Wei Inventor after: Jiang Changjun Inventor before: Yan Wei Inventor before: Jiang Changjun Inventor before: Du Chunfa |
|
GR01 | Patent grant | ||
GR01 | Patent grant |