CN116339737B - Xr应用编辑方法、设备及存储介质 - Google Patents
Xr应用编辑方法、设备及存储介质 Download PDFInfo
- Publication number
- CN116339737B CN116339737B CN202310620776.2A CN202310620776A CN116339737B CN 116339737 B CN116339737 B CN 116339737B CN 202310620776 A CN202310620776 A CN 202310620776A CN 116339737 B CN116339737 B CN 116339737B
- Authority
- CN
- China
- Prior art keywords
- application
- scene
- api
- runtime
- layer
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 166
- 238000003860 storage Methods 0.000 title claims abstract description 34
- 239000008186 active pharmaceutical agent Substances 0.000 claims description 97
- 230000003068 static effect Effects 0.000 claims description 90
- 230000000694 effects Effects 0.000 claims description 83
- 230000006870 function Effects 0.000 claims description 83
- 230000008569 process Effects 0.000 claims description 81
- 230000003993 interaction Effects 0.000 claims description 59
- 238000004590 computer program Methods 0.000 claims description 16
- 238000004806 packaging method and process Methods 0.000 claims description 8
- 239000000523 sample Substances 0.000 claims 1
- 239000000758 substrate Substances 0.000 claims 1
- 238000011161 development Methods 0.000 abstract description 90
- 238000009877 rendering Methods 0.000 description 56
- 230000004044 response Effects 0.000 description 31
- 238000009434 installation Methods 0.000 description 22
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 17
- 238000004891 communication Methods 0.000 description 15
- 238000005516 engineering process Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 230000002452 interceptive effect Effects 0.000 description 9
- 239000000463 material Substances 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 238000012827 research and development Methods 0.000 description 9
- 230000001960 triggered effect Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 230000005236 sound signal Effects 0.000 description 4
- 230000003190 augmentative effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000005538 encapsulation Methods 0.000 description 3
- 239000011521 glass Substances 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 238000003825 pressing Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 239000003292 glue Substances 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000001795 light effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 239000007769 metal material Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000035807 sensation Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
- 239000013585 weight reducing agent Substances 0.000 description 1
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
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/50—Controlling the output signals based on the game progress
- A63F13/52—Controlling the output signals based on the game progress involving aspects of the displayed game scene
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/55—Controlling game characters or game objects based on the game progress
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/011—Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
-
- 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/451—Execution arrangements for user interfaces
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2203/00—Indexing scheme relating to G06F3/00 - G06F3/048
- G06F2203/01—Indexing scheme relating to G06F3/01
- G06F2203/012—Walk-in-place systems for allowing a user to walk in a virtual environment while constraining him to a given position in the physical environment
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供一种XR应用编辑方法、设备及存储介质。在本申请实施例中,在内容生成器中集成运行时容器,基于运行时容器提供的运行时环境,生成XR应用的应用内容;在生成应用内容的情况下,根据应用内容与运行时容器生成XR应用,运行时容器运行在应用内容和操作系统之间,为应用内容提供运行时环境。由于在应用内容与操作系统之间增加了运行时容器,使得应用内容的运行与操作系统之间不再是强依赖关系,使得XR应用的开发和运行都能够跨平台、跨设备,这使得XR应用的开发变得简单、易于实现,解决了XR应用的开发和跨设备运行问题。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种XR应用编辑方法、设备及存储介质。
背景技术
扩展现实(Extended Reality,XR)是增强现实(Augmented Reality,AR)和虚拟现实(Virtual Reality,VR)的统称。VR是指利用计算机生成一种能够对参与者直接施加视觉、听觉和触觉感受,并允许其交互地观察和操作虚拟世界的技术。AR是一种将虚拟信息与真实世界巧妙融合的技术,运用多媒体、三维建模、智能交互、传感等多种技术手段,将计算机生成的文字、图像、三维模型、音频、视频等虚拟信息模拟仿真后,应用到真实世界中,实现对真实世界的“增强” 。
随着XR技术的普及,基于XR技术的XR应用的供给成为亟需解决的问题。现有技术中存在面向三维(3D)游戏开发者的游戏开发引擎,也存在面向终端研发工程师的二维(2D)应用开发引擎,但这些开发引擎并不适合进行XR应用的开发,因此,亟需一种能够开发XR应用的开发方案。
发明内容
本申请的多个方面提供一种XR应用编辑方法、设备及存储介质,用以解决XR应用的开发问题。
本申请实施例提供一种面向终端开发的XR应用开发系统,包括:生成XR应用所需的运行时容器,用于在所述XR应用生成过程和运行过程中提供运行时环境;
内容生成器,其内部集成所述运行时容器,用于基于所述运行时容器提供的运行时环境,生成所述XR应用的应用内容;
应用生成平台,用于根据所述应用内容和所述运行时容器,生成所述XR应用;
其中,在所述XR应用运行过程中,所述运行时容器运行在所述应用内容与所述XR应用所在目标设备的操作系统之间,所述应用内容运行在所述运行时容器提供的运行时环境中。
本申请实施例提供一种面向终端开发的XR应用开发方法,包括:预先开发生成XR应用所需的运行时容器,所述运行时容器用于在所述XR应用生成过程和运行过程中提供运行时环境;在集成有所述运行时容器内容生成器中,基于所述运行时容器提供的运行时环境,生成所述XR应用的应用内容;根据所述应用内容和所述运行时容器,生成所述XR应用;其中,在所述XR应用运行过程中,所述运行时容器运行在所述应用内容与所述XR应用所在目标设备的操作系统之间,所述应用内容运行在所述运行时容器提供的运行时环境中。
本申请实施例还提供一种内容生成器,内部集成有生成XR应用所需的运行时容器,所述运行时容器用于在所述XR应用生成过程或运行过程中提供运行时环境,所述内容生成器还包括:
3D场景效果编辑模块,用于响应XR应用生成操作,加载3D场景静态资源,基于所述运行时容器提供的运行时环境,为所述3D场景静态资源编辑3D场景动态信息,以得到3D场景资源数据;
3D应用逻辑编辑模块,用于基于所述运行时容器提供的运行时环境,为所述3D场景资源数据编辑应用逻辑代码,以得到所述XR应用的应用内容;
其中,所述应用内容与所述运行时容器形成所述XR应用,所述XR应用中的运行时容器在所述XR应用运行过程中为所述应用内容提供运行时环境。
本申请实施例还提供一种XR应用编辑方法,应用于内容生成器,所述内容生成器中集成有运行时容器,所述运行时容器用于在所述XR应用生成过程或运行过程中提供运行时环境,所述方法包括:响应XR应用生成操作,加载3D场景静态资源;基于所述运行时容器提供的运行时环境,为所述3D场景静态资源添加3D场景动态信息,以得到3D场景资源数据;基于所述运行时容器提供的运行时环境,为所述3D场景资源数据编辑应用逻辑代码,以得到所述XR应用的应用内容;其中,所述应用内容与所述运行时容器形成所述XR应用,所述XR应用中的运行时容器在所述XR应用运行过程中为所述应用内容提供运行时环境。
本申请实施例还提供一种运行时容器,用于在XR应用生成过程和运行过程中提供运行时环境,包括:框架层、运行时环境层和软件库层;
所述软件库层包括多种软件引擎,并提供所述多种软件引擎的第二类应用编程接口API,以供根据所述第二类API封装得到第一类API;
所述框架层,用于面向应用开发人员提供所述第一类API,以供所述应用开发人员基于所述第一类API编写所述XR应用的应用逻辑代码,以及在所述XR应用生成过程或运行过程中感知目标事件,运行所述目标事件对应的至少一个第一类API的函数实体,并将所述函数实体中封装的目标API提供给所述运行时环境层,所述目标API属于第二类API;
所述运行时环境层,用于根据所述目标API,调用所述软件库层中对应软件引擎对所述目标事件进行响应。
本申请实施例还提供一种XR应用运行方法,包括:响应于运行XR应用的触发操作,启动所述XR应用中的运行时容器,以为所述XR应用中的应用内容提供运行时环境,所述运行时容器运行在所述应用内容与所述XR应用所在目标设备的操作系统之间;基于所述运行时容器提供的运行时环境运行所述应用内容,以运行所述XR应用。
本申请实施例还提供一种XR内容运行方法,应用于内嵌有XR运行时容器的宿主应用中,所述方法包括:在宿主应用运行过程中,展示XR内容的访问入口信息;响应对所述访问入口信息的触发操作,启动所述XR运行时容器,并获取XR内容;基于所述XR运行时容器提供的运行时环境运行所述XR内容。
本申请实施例提供一种电子设备,包括:存储器和处理器;所述存储器,用于存储计算机程序,所述处理器与所述存储器耦合,用于执行所述计算机程序,以用于实现本申请实施例提供的XR应用编辑方法或XR应用运行方法或XR应用开发方法或XR内容运行方法中的步骤。
本申请实施例提供一种存储有计算机程序的计算机可读存储介质,当所述计算机程序被处理器执行时,致使所述处理器能够实现本申请实施例提供的XR应用编辑方法或XR应用运行方法或XR应用开发方法或XR内容运行方法中的步骤。
在本申请实施例中,在内容生成器中集成运行时容器,基于运行时容器提供的运行时环境,生成XR应用的应用内容;在生成应用内容的情况下,根据应用内容与运行时容器,生成包括应用内容和运行时容器的XR应用;基于运行时容器开发出的XR应用在运行过程中,运行时容器运行在应用内容和操作系统之间,由运行时容器为应用内容提供运行时环境,使得应用内容能够在运行时环境中运行。由于在应用内容与操作系统之间增加了运行时容器,使得应用内容的运行与操作系统之间不再是强依赖关系,使得XR应用的开发和运行都能够跨平台、跨设备,这使得XR应用的开发变得简单、易于实现,解决了XR应用的开发和跨设备运行问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的一种面向终端开发的XR应用开发系统的结构示意图;
图2为本实施例提供的运行时容器的一种实现架构;
图3为本申请实施例提供的运行时容器的3层架构之间的关系示意图;
图4为本申请实施例提供的一种XR应用运行时的框架示意图;
图5为本申请实施例提供的一种宿主2D应用中内嵌3D场景的3D场景示意图;
图6a为本申请实施例提供的XR应用的初始化流程示意图;
图6b为本申请实施例提供的用户触发函数调用的流程示意图;
图6c为本申请实施例提供的用户触发事件回调的流程示意图;
图6d为本申请实施例提供的一种内容生成器的结构示意图;
图7a为本申请实施例提供的一种XR应用开发方法的流程示意图;
图7b为本申请实施例提供的XR应用编辑方法的流程示意图;
图8为本申请实施例提供的XR应用运行方法的流程示意图;
图9为本申请实施例提供的电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
随着XR技术的普及,现有技术面临着XR应用的开发问题,尤其是在XR设备大规模普及之前,XR应用的形态是以2D应用中内嵌3D场景为主,这使得XR应用的开发在很长一段时间内主要面向终端研发工程师,终端研发工程师是指面向手机等移动终端开发2D应用的工程师,包括但不限于:客户端工程师和前端工程师。
为了解决XR应用的开发问题,包括终端研发工程师在内的一些应用开发人员尝试采用游戏引擎开发XR应用。游戏引擎是一种用于快速开发游戏的框架,常见的游戏引擎包括但不限于:Unity、UE等。游戏引擎是为游戏开发设计的,功能比较强大,涉及渲染、物理、动画等各种功能模块,基于游戏引擎能够开发出完整且复杂的XR应用。但是,基于游戏引擎开发XR应用却也存在以下不足:
第一:终端研发工程师转型做游戏研发面临巨大挑战,这些挑战至少包括以下几点:
(1)游戏引擎对终端研发工程师的要求较高,需要终端研发工程师深度了解3D图形知识,有比较大的门槛。
(2)需要熟悉游戏引擎,UE/Unity等游戏引擎涉及大几百个头文件和上千个应用程序编程接口(Application Programming Interface,API),熟悉难度较大。
(3)游戏引擎的集成开发环境(Integrated Development Environment,IDE),如UE蓝图、Unity编辑器等工具链是独立设计,与应用开发的IDE差异较大,终端研发工程师短时间难以适应。
第二:游戏引擎并不是为内嵌APP设计的,导致难以支持在2D应用中内嵌3D场景这种应用形态的开发,可能存在以下问题:
(1)多实例:2D应用最大的特点是不同页面之间的切换,页面之间相互隔离,支持状态缓存恢复,支持后退,所以每个页面都是一个独立的实例。然而,游戏引擎是独占模式,缺少生命周期管理,页面切换后的资源难易回收,造成资源浪费,以及内存资源容易达到APP能用的上限,触发应用崩溃(crash)问题。
(2)用户界面(User Interface,UI)交互:2D应用的UI是响应式渲染,游戏引擎的UI是立即式渲染,两者的实现机制不一样,导致游戏引擎开发出的应用在UI布局(layout)和流畅度上比较难,也难易实现复杂UI效果等。
(3)与2D应用的软件开发工具(Software Development Kit,SDK)交互问题:游戏引擎由于架构的复杂性,在开发3D场景过程中无法集成2D应用的SDK,所以基于游戏引擎开发的3D场景与2D应用的数据通信,只能借助于事件方式,代码实现比较麻烦。
鉴于上述,本申请实施例提供一种面向终端开发的XR应用开发系统,该开发系统包括能够在XR应用生成过程(XR应用的生成过程也可称为XR应用的开发过程)和运行过程中提供运行时环境的运行时容器,负责内容生成的内容生成器以及负责打包应用的应用生成平台;在内容生成器中集成运行时容器,基于运行时容器提供的运行时环境,生成XR应用的应用内容;在生成应用内容的情况下,应用生成平台根据应用内容和运行时容器,生成包含应用内容和运行时容器的XR应用;基于运行时容器开发出的XR应用在运行过程中,运行时容器运行在应用内容与操作系统之间,由运行时容器为应用内容提供运行时环境,使得应用内容能够在运行时环境中运行。由于在应用内容与操作系统之间增加了运行时容器,可以屏蔽设备底层的信息,使得应用内容的运行与操作系统之间不再是强依赖关系,使得XR应用的开发和运行都能够跨平台、跨设备,进而使得XR应用的开发变得简单、易于实现,解决了XR应用的开发和跨设备运行问题。
进一步,基于运行时容器开发XR应用,使得XR应用的开发和运行能够跨平台、跨设备,这使得终端研发工程师既能开发出应用于XR设备的独立形态的XR应用,也能够开发出在2D应用中内嵌3D场景为主的XR应用,既能够满足XR设备对独立形态的XR应用的需求,也能够满足终端设备对2D应用中内嵌3D场景为主的XR应用的需求,解决了XR领域面临的跨设备(如手机、AR设备、VR设备)的痛点问题,适应XR技术的发展。
进一步,本申请实施例提供的面向终端开发的XR应用开发系统,预先开发出能够提供运行时环境的运行时容器,并提供内容生成器和应用生成平台,对开发者来说,只需要基于运行时容器开发应用内容,进而借助应用生成平台将应用内容与运行时容器打包成XR应用即可,具有低门槛、并行研发、完善的研发支撑等优势,对开发者的要求较低,既适用于终端研发工程师,也适用于游戏工程师等其它开发人员;另外,由于运行时容器的存在,使得XR应用的开发更加纯粹,可以直接考虑各种应用需求,不再受游戏引擎的各种限制,可以克服上文中提到的基于游戏引擎开发XR应用所面临的各种缺陷和问题,进而开发出具有跨设备、跨平台等特点的XR应用。
进一步,由于运行时环境由运行时容器提供,这使得应用内容的开发相对独立,而应用内容主要包括3D场景资源数据和应用逻辑代码,具体实现时应用程序代码采用 JS等动态语言编写,这样开发出的XR应用还具有快速迭代、高性能等特点。
在本申请各实施例中,并不限定XR设备的实现形态,既可以是AR设备,也可以是VR设备。AR设备包括但不限于:AR眼镜、AR头盔等;VR设备包括但不限于:VR眼镜、VR头盔等。相应地,运行内嵌3D场景的2D应用的终端设备可以是但不限于:手机、平板电脑、笔记本电脑以及智能手环等。
本申请下面实施例将结合附图对本申请实施例提供的面向终端开发的XR应用开发系统进行详细说明。
图1为本申请实施例提供的一种面向终端开发的XR应用开发系统100的结构示意图。如图1所示,该系统100包括:内容生成器20、运行时容器30和应用生成平台40。
如图1所示,本实施例的XR应用开发系统100包括运行时容器30。运行时容器30是预先开发出的一种运行在操作系统之上的软件栈(software stack),其不属于操作系统,该软件栈是面向XR应用开发提供的,是开发XR应用所需的,其作用是在XR应用开发过程中和运行过程中负责提供运行时环境。运行时环境是指开发出的XR应用或在XR应用开发过程中的中间态程序代码运行所需的环境,例如包括XR应用或中间态程序代码运行所需的一些软件引擎、环境变量,以及运行XR应用或中间态程序代码所需的运行逻辑等。在本实施例中,软件引擎是广义的概念,是对各种引擎、库函数等的概括。
在XR应用开发系统100包括运行时容器30的基础上,本实施例的XR应用开发过程包括:基于运行时容器30提供的运行时环境开发XR应用所需的应用内容的过程和基于运行时容器和应用内容生成XR应用的过程。其中,内容生成器20负责基于运行时容器30提供的运行时环境,生成XR应用的应用内容,为了便于内容生成器20能够使用运行时容器30提供的运行时环境,在内容生成器20中集成有运行时容器30。在本实施例中,基于运行时容器30提供的运行时环境进行应用内容的开发,使得应用内容具备在运行时容器30提供的运行时环境进行运行的能力,且能够做到开发时的应用内容效果和运行时的应用内容效果具有一致性。
在生成应用内容的情况下,应用生成平台40负责根据运行时容器30和应用内容生成XR应用。在本实施例中,XR应用不同于传统的应用程序,其同时包括应用内容和负责为应用内容提供运行时环境的运行时容器30。由于应用内容是基于运行时容器30提供的运行时环境开发出的,所以应用内容具备在运行时容器30提供的运行时环境中运行的能力,基于此,将运行时容器30与应用内容集成在一起形成XR应用,这样在XR应用运行过程中,运行时容器30可运行在应用内容与XR应用所在目标设备的操作系统之间,负责为应用内容提供运行时环境,使得应用内容运行在运行时容器提供的运行时环境中,最终达到XR应用正常运行的目的。其中,XR应用所在目标设备可以是XR设备,也可以是运行宿主2D应用的终端设备,对此不做限定。
在本实施例中,运行时容器30运行在XR应用所在目标设备的操作系统之上,借助于操作系统为XR应用的应用内容提供运行时环境,具体是指借助于目标设备的操作系统使用目标设备的各种软硬件资源,例如CPU、GPU、内存、网卡、带宽等资源,基于这些软硬件资源为XR应用的应用内容提供其运行所需的运行时环境,以使应用内容运行在运行时环境中,进而向用户呈现3D场景和基于3D场景的交互和/或控制。
在本实施例中,XR应用的实现形态可以是独立的应用形态,也可以是以2D应用内嵌3D场景为主的应用形态。根据XR应用实现形态的不同,应用生成平台40生成XR应用的方式会有所不同。应用生成平台40的作用是根据XR应用的实现形态,将运行时容器30打包到对应的安装包中进行发布,以便于目标设备能够根据对应的安装包在本地安装运行时容器30。
如果XR应用是独立的应用形态,则应用生成平台40可以将运行时容器30和应用内容集成在XR应用的安装包中并发布XR应用的安装包,这使得XR应用可以像其它独立形态的应用一样,被下载、安装和运行。具体地,XR应用可以是运行在AR设备上的AR应用,也可以是运行在VR设备上的VR应用,对此不做限定。
如果XR应用是以2D应用内嵌3D场景为主的应用形态,则将需要内嵌3D场景的2D应用称为宿主2D应用,应用生成平台40可以将运行时容器30集成到宿主2D应用的安装包中,对外发布宿主2D应用的安装包,这样当宿主2D应用像其它独立形态的应用一样被下载、安装和运行时,运行时容器30也会一并被下载、安装和运行。其中,XR应用的应用内容可以独立于宿主2D应用单独发布,也可以内嵌到宿主2D应用的安装包中随着该安装包一并发布,对此不做限定。可选地,考虑到XR应用的应用内容的数据量较大,可以将XR应用的应用内容单独发布到宿主2D应用对应的资源服务端,这样,在宿主2D应用运行过程中,当需要运行XR应用提供的3D场景时可以按需从资源服务端下载XR应用的应用内容,并在运行时容器30提供的运行时环境中运行该应用内容,从而在宿主2D应用的页面中呈现3D场景,其中,该3D场景内嵌于宿主2D应用的某个页面中。
在此说明,本申请实施例并不对宿主2D应用进行限定,可以是任何具有3D场景展示需求的2D应用,例如可以是电商类应用、娱乐类应用、教学类应用或医疗类应用等。
本实施例的运行时容器30是运行在操作系统之上的一个运行时环境的提供者,无论是在XR应用开发过程中还是在XR应用运行过程中,运行时容器30提供运行时环境的方式是相同或相似的。如图2所示,为本实施例提供的运行时容器30的一种实现架构,包括:框架(Framework)层31、运行时环境(Runtime)层32和软件库(Libraries)层33。下面对三层分别进行介绍说明:
Libraries 层31:包含 XR应用所需的一系列基础库,这些基础库提供各种软件引擎和/或库函数,例如包括但不限于:3D渲染引擎、AI推理引擎、由下载库提供的实现下载功能的引擎或库函数、由存储库提供的实现存储功能的引擎或库函数、由网络库提供的实现网络功能的引擎或库函数、由配置库提供的实现配置功能的引擎或库函数、区块链引擎、由埋点库提供的实现埋点功能的引擎或库函数、2D UI引擎以及事件引擎等等。进一步,根据下载内容的不同,可以将下载库划分为图片库、视频库等。这些软件引擎负责为XR应用提供其运行所需的一些基础能力,例如3D场景渲染能力、神经网络模型的推理能力、各种资源的下载能力、存储能力、网络通信能力、配置能力等。下面关于各种引擎和软件库仅为示例性说明,并不限于此:
3D渲染引擎:负责提供3D渲染、动画、物理仿真等能力,例如可以采用但不限于:AceNNR。
AI推理引擎:负责提供深度神经网络模型的端侧推理运行能力,例如可以是MNN。
区块链引擎:负责提供区块链服务。
网络库:提供端侧(主要是指XR应用所在目标设备)与云侧(主要是指与XR应用对应的云端服务器)之间的高效网络传输能力。
下载库:基于网络库,结合云侧封装的下载库,提供从云侧下载各种资源以及资源缓存等能力;
图片库:基于网络库,结合云侧封装的图片下载库,支持多种压缩格式的图片下载,本地提供图片缓存机制;
视频库:基于网络库,结合云侧服务端封装的视频下载库,支持多种格式的视频下载,本地提供视频缓存机制。
埋点库:负责提供日志打点服务,负责在端侧针对XR应用运行过程中产生的日志数据进行压缩并上传云侧;
存储库:提供文件存储服务,如果存储库是关系数据库,则提供关系存储服务,如果数据库是时序数据库,则提供时序存储服务等。
配置库:负责针对XR应用中的3D模型、坐标、事件等提供各种配置功能。
在本实施例中,上述各种软件引擎提供的基础能力可被封装成API,通过这些API对外暴露这些基础能力,这些API被称为基础API,相对于第一类API,这些基础API也可称为第二类API。第一类API是面向应用开发人员暴露的一类API,供应用开发人员编写应用逻辑代码。第二类API无需暴露给应用开发人员,第一类API是基于第二类API封装得到,每个第一类API对应的函数实体中可包含一个或多个第二类API,对此不做限定。应用开发人员基于第一类API开发应用逻辑代码,在XR应用运行过程中,这些应用逻辑代码被运行到时,首先触发第一类API的调用,进而触发第一类API中封装的第二类API的调用,进而触发对应软件引擎的调用,进而使用软件引擎提供的基础能力,实现3D场景的呈现等。
Framework层32:提供XR应用研发所需的相关能力,主要面向应用开发人员暴露第一类API,第一类API的具体实现大部分由Libraries层中的软件引擎提供。根据应用场景的不同,Framework层提供的第一类API的数量和类型也会有所不同。下面示例性的给出几种第一类API,例如包括但不限于以下几种:
(1)3D场景API,这类API用于3D场景开发,而且这类API主要是对Libraries层中3D渲染引擎的3D渲染能力进行封装实现的,使得应用开发人员不用面对3D渲染引擎,一定程度上可降低应用开发人员理解和开发XR应用的门槛。
3D场景API包括多个,下面给出几个3D场景API的示例:
XRScene:代表一个3D 场景,通过该API可以实现一个3D场景;
XRModel:代表一个 3D 模型,通过该API可以实现3D场景中的一个3D模型;
XRAnchor:代表一个 3D 世界里面的一个参考坐标,通过该API可以实现3D场景中的位置标定;
XREvent:代表系统和应用相关的事件,通过该API可以响应3D场景中的各种事件并做出响应;
XRConfig:代表XR应用的配置,通过该API可以对XR应用进行各种配置,例如配置XR应用针对高中低端设备不同的资源加载和运行策略,还可以配置3D场景中各3D模型或其它对象的分辨率、层级、类型等。
(2)生命周期管理API:负责管理XR应用的生命周期,包括但不限于XR应用的启动,退出,更新等。这类API主要是Libraries层中生命周期管理引擎的生命周期管理能力进行封装实现的。
(3)资源管理API:负责管理XR应用的各种资源,包括但不限于XR应用所需资源的下载,缓存,存储等。这类API主要是对Libraries层中下载引擎、存储引擎提供的下载能力和存储能力进行封装实现的。
(4)UI交互API:这类API应用于2D应用中内嵌3D场景的应用形态,负责管理XR应用与其宿主2D应用之间的UI交互,支持展示前端以W3C方式开发的页面。该UI交互API可以实现为web容器,负责处理XR应用中涉及宿主2D应用的可视化UI的展示功能,是一个实体容器,负责提供2D应用的GUI。或者,也可以实现为Native容器,这是一个虚拟化的容器。这类API主要是对Libraries层中2D UI引擎提供的UI交互能力进行封装实现的。
(5)事件交互API:负责管理XR应用中的事件交互,包含但不限于点击、长按、缩放、旋转、靠近等多种事件行为。这类API主要是对Libraries层中事件引擎提供的事件管理和响应能力进行封装实现的。
Framework层32除了面向应用开发人员暴露第一类API之外,还具有一些逻辑功能。例如,在XR应用生成过程中或运行过程中负责感知目标事件,目标事件是指涉及对至少一个第一类API的调用的事件,按照至少一个第一类API之间的运行逻辑,运行至少一个第一类API的函数实体,并将函数实体中封装的目标API提供给运行时环境层33,这里的目标API是被封装到第一类API的函数实体内的第二类API。对不同第一类API来说,其所实现的功能一般是不同的,因此其函数实体中封装的第二类API也会有所不同,对此不做限定。
运行时环境层33:负责提供与XR应用使用的编程语言适配的运行时虚拟机(Virtual Machine,VM),这些运行时VM负责为XR应用提供运行时环境,具体用于根据Framework层32提供的目标API,调用Libraries层中对应的软件引擎对Framework层32感知到的目标事件进行响应,以完成XR应用开发过程中中间态资源数据的运行或完成XR应用中应用内容的运行。
其中,与XR应用使用的编程语言适配的VM,可以是JS VM或Python VM。如果用JS语言编写XR应用的应用逻辑代码,则提供 JS VM;若用Python语言编写XR应用的应用逻辑代码,则提供 Python VM。在此说明,这些运行时VM为XR应用提供运行时环境,一方面包括借助于目标设备的操作系统使用目标设备的软硬件资源为XR应用提供其所需的软硬件资源,另外一方面包括基于这些软硬件资源,调用Libraries层中相应软件引擎提供的基础能力对3D场景资源数据进行渲染等处理并对应用逻辑代码进行解释执行,并让XR应用能够使用Libraries层中的各种基础能力,并最终向用户呈现3D场景以及基于3D场景的交互和/或控制的过程。
JS VM:主要支持应用开发人员(例如终端研发工程师)编写JS应用逻辑代码,动态下发并通过JS VM进行解释执行,实现XR应用的逻辑的动态更新。例如,3D场景的UI界面,交互逻辑等。
Python VM:主要支持应用开发人员(例如终端研发工程师)编写Python应用逻辑代码,动态下发并通过Python VM解释执行,实现Python编写的应用代码(例如某种算法任务)的动态更新。例如,在AR场景中,可以采用Python语言编写应用逻辑代码,具体地,可以编写AR应用中的人脸识别算法任务。
在此说明,在本申请实施例中,并不限定运行时环境层33包括的运行时VM的数量,运行时VM的数量可以是一个或多个。例如,可以单独存在JS VM或Python VM,或者同时存在JS VM和Python VM。在运行时VM的数量为多个的情况下,不同运行时VM采用不同的动态编程语言实现,用于为采用不同动态编程语言实现的XR应用提供运行时环境。
进一步,在运行时VM为多个的情况下,运行时环境层33还包括:VM调度模块,用于在XR应用运行过程中,根据XR应用使用的动态编程语言,调度多个运行时VM中与XR应用使用相同动态编程语言实现的目标VM,以使目标VM为XR应用提供运行时环境。相应地,VM调度模块还用于:在XR应用开发过程中,根据开发XR应用使用的动态编程语言,调度多个运行时VM中与开发XR应用使用相同动态编程语言实现的目标VM,以使目标VM为开发XR应用过程中的中间态资源数据提供运行时环境。
在本实施例中,运行时容器30的三层架构之间存在关联关系,该关联关系如图3所示,Libraries层31位于底层,运行时环境层33位于Libraries层31与Framework层32之间。Libraries层31负责提供各种基本能力,不同软件引擎提供的基础能力有所不同,比如3D渲染引擎提供3D渲染能力,AI推理引擎提供基于深度神经网络的AI模型推理能力。这些基础能力通过封装形成不同的第二类API进行能力透出,一方面第二类API透出给运行时环境层33,另一方面第二类API进一步被封装为第一类API并通过 Framework层32面向应用开发人员透传。对Framework层32来说,可在XR应用开发过程中或运行过程中,感知触发第一类API调用的目标事件,例如可以是XR应用运行过程中触发XR应用运行的事件,在XR应用开发过程中可以是加载3D场景静态资源的事件,或查看添加3D场景动态信息后的3D场景效果的触发事件,或查看添加应用程序代码后的交互效果的触发事件等等,这些目标事件会触发至少一个第一类API被调用,并执行至少一个第一类API的函数实体,当执行到函数实体中包含的第二类API时,将第二类API提供给运行时环境层33。对运行时环境层33来说,可在XR应用开发过程中或运行过程中,接收Framework层32提供的第二类API,通过第二类API调用Libraries层31中软件引擎提供的基础能力。关于加载3D场景静态资源的事件,查看添加3D场景动态信息后的3D场景效果的触发事件,以及查看添加应用程序代码后的交互效果的触发事件,可参见下文中的描述。
在本实施例中,Libraries层中各种基础能力可以采用C++语言实现,C++是跨平台语言,基于C++实现Libraries层中各种基础能力,使得基于该运行时容器提供的运行时环境开发的XR应用具有跨平台和跨设备的特性。
在本实施例中,Libraries层中各种基础能力采用C++语言实现的情况下,对各种基础能力进行透出的方式可以采用但不限于几种:
第一种:原生(Native)透出方式,这要求XR应用中的应用逻辑代码使用C++开发,这种透出方式不具备快速迭代的能力。
第二种:非原生透出方式,即可以通过JS或Python语言编写XR应用中的应用逻辑代码,借助于JS或Python语言的优势,可以实现应用逻辑的动态更新和迭代。
进一步,在采用非原生透出方式的情况下,进一步如图3所示,可以采用下述两种方式实现API的透出:
(1)在Libraries层通过JS绑定(JS Binding)或者Python绑定(Python Binding)技术将第二类API透出到运行时环境层中的JS VM或Python VM,由JS VM或Python VM将第二类API封装为第一类API,然后,将第一类API向Framework层进行透出;
(2)在Libraries层通过JS绑定或者Python绑定技术将第二类API透出到运行时环境层33中的JS VM或Python VM,并将第二类API封装成第一类API,直接将第一类API从Libraries层透出到Framework层。
在本申请实施例中,XR应用的应用内容主要包括3D场景资源数据和应用逻辑代码。其中,3D场景资源数据是指负责呈现3D场景的资源数据,例如包括:3D场景静态资源和3D场景动态信息。3D场景静态资源是指3D场景中静态的资源,例如各种3D模型、图像等;3D场景动态信息是指与3D场景效果相关的一些动态信息,例如3D模型的移动轨迹、3D场景中的相机系统、3D场景中的水体系统等,这些动态信息可以让3D场景效果更佳丰富、多样。应用逻辑代码数据包括反映应用逻辑的各种代码数据,这些应用逻辑包括从应用层面对3D场景中各种资源进行控制、交互等逻辑,例如对人物模型的移动控制,与人物模型或物体模型的交互控制,以及在满足特定条件时出现一些特效等等。
在一可选实施例中,预先生成3D场景静态资源,以此为基础,在3D场景静态资源上编辑3D场景动态信息和应用逻辑代码,从而得到XR应用的应用内容。基于此,内容生成器20生成应用内容的一种方式包括:响应XR应用生成操作,加载3D场景静态资源,基于运行时容器30提供的运行时环境,为3D静态场景资源添加3D场景动态信息和应用逻辑代码,以得到XR应用的应用内容。
其中,应用逻辑代码可由应用开发人员基于运行时容器30中的Framework层面向应用开发人员提供的第一类API编写。
在一可选实施例中,如图1所示,本实施例提供的XR应用开发系统100还包括:3D模型开发工具10,用于面向模型开发人员,使得模型开发人员能够利用该3D模型开发工具10开发出生成XR应用所依赖的3D场景静态资源。具体地,3D模型开发工具10可以响应模型开发人员的3D模型开发操作,生成各种3D模型,将这些3D模型作为至少部分3D场景静态资源并输出。
其中,3D场景静态资源包括构建XR应用中的3D场景所需的各种静态资源,例如包括但不限于:
(1)3D模型文件,用于描述3D模型。其中,可以根据应用需求,对3D模型进行分类,在不同应用场景中,可以对3D模型进行不同的分类。以图5所示XR场景为例,可以将3D模型分成但不限于:人物、物体、场景3大类,也就是说图5中所示的人物、鞋子、包等都属于3D模型,整个3D场景也是一个3D模型。在本实施例中,并不限定3D模型的格式,例如可以是但不限于:FBX、OBJ、GItf等。
(2)图片资源,是指需要在3D场景中某些位置上呈现的图片。
(3)视频资源,是指需要在3D场景中某些位置上呈现的视频信息。
(4)音频资源,是指需要在3D场景中某些位置上播放的音频信息。
在此说明,上述3D模型文件是必选资源,而图片资源、视频资源和音频资源为可选资源,具体可根据应用场景而定。
在本实施例中,并不限定3D模型开发工具10的实现方式,凡是能够提供3D模型的代码编辑功能、代码编译功能、调试功能以及图形交互界面的开发工具均适用于本申请实施例,例如可以采用Android Studio或XCode写插件,也可以采用自研的用于 XR 应用开发的IDE,该自研的IDE需要具有以下功能:3D模型的代码编辑功能、代码编译功能、调试功能以及图形交互界面等。
在得到开发XR应用所需的3D场景静态资源之后,可以通过内容生成器20为这些静态资源添加3D场景动态信息和应用逻辑代码,最终得到XR应用的应用内容。XR应用的应用内容也可以称为XR应用的资源包。
在本实施例中,如图1所示,内容生成器20的一种输入是3D场景静态资源,基于运行时容器30提供的运行时环境,为3D场景静态资源添加3D场景动态信息,得到包含3D场景静态资源和3D场景动态信息的3D场景资源数据。进一步,如图1所示,内容生成器20的另一种输入是应用逻辑代码,基于运行时容器30提供的运行时环境,在3D场景资源数据上添加应用逻辑代码,得到XR应用的应用内容。
在本实施例中,并不限定内容生成器20的内部实现架构。如图6d所示,一种内容生成器20的实现结构包括:3D场景效果编辑模块21、3D应用逻辑编辑模块22、内容输出模块23以及运行时容器30。在层级架构上,3D场景效果编辑模块21、3D应用逻辑编辑模块22位于运行时容器30之上,需要运行时容器30为其提供运行时环境。
3D场景效果编辑模块21,用于响应XR应用生成操作,加载3D场景静态资源,基于运行时容器30提供的运行时环境,为3D场景静态资源编辑3D场景动态信息,以得到3D场景资源数据。
3D应用逻辑编辑模块22与3D场景效果编辑模块21通信连接,用于加载3D场景资源数据,基于运行时容器30提供的运行时环境,为3D场景资源数据编辑应用逻辑代码,以得到XR应用的应用内容。
内容输出模块23与3D应用逻辑编辑模块22通信连接,用于向应用生成平台40输出XR应用的应用内容,以供应用生成平台40根据该应用内容和运行时容器30生成XR应用。XR应用的应用内容包括3D场景资源数据和应用逻辑代码。其中,3D场景资源数据包括但不限于:3D场景的组织描述文件,网格数据、材质数据、贴图数据、视频数据等信息。其中,3D场景的组织描述文件包括但不限于:3D场景组织,灯光设置,渲染设置,相机运镜、物理碰撞等。材质数据包括但不限于:玻璃材质、金属材质等信息。其中,应用逻辑代码数据可以采用但不限于JS语言编写,可表示为xxx.js。
在应用内容生成过程中,运行时容器30发挥的作用是为XR应用生成过程中出现的中间态数据提供运行时环境,让中间态数据呈现运行效果,进而基于该运行效果确定是否需要调整3D场景动态信息或应用逻辑代码,最终得到运行效果符合要求的应用内容。
对3D场景效果编辑模块21来说,具体用于:响应3D场景静态资源的加载操作,启动运行时容器30,在运行时容器30提供的运行时环境中运行3D场景静态资源,以得到3D静态画面;响应3D静态画面上的编辑操作,为3D场景静态资源编辑3D场景动态信息,以得到第一中间态资源数据;响应场景效果查看操作,重新调用运行时容器30,在运行时容器30提供的运行时环境中运行第一中间态资源数据,得到第一中间态3D画面;在第一中间态3D画面不满足场景效果的情况下,调整3D场景动态信息至满足场景效果,以得到3D场景资源数据。
可选地,3D场景效果编辑模块21,用于响应工程项目创建操作,创建工程项目,为该工程项目命名,例如可以以3D场景作为工程项目的名称,例如AAA;响应3D场景静态资源的导入操作,导入3D场景静态资源,这些静态资源包括但不限于:各种3D模型等;启动运行时容器30,在运行时容器30提供的运行时环境中运行3D场景静态资源,并在交互界面上展示3D静态画面,3D静态画面中包含这些3D模型。在本实施例中,内容生成器提供交互界面,该交互界面是一个3D界面,具有xyz三个坐标轴。优选地,3D场景本身是一个3D模型,在展示该3D场景时,可将3D场景的中心在编辑界面的xz平面的原点位置,且地平面y值为0。进一步,在此基础上,3D场景效果编辑模块21为这些3D模型编辑动态信息,最终得到符合要求的目标3D场景资源数据。
在本实施例中,内容生成器20提供有交互界面还可以展示第一中间态3D画面。进一步,响应3D静态画面上的编辑操作,为3D场景静态资源编辑3D场景动态信息,包括:在3D静态画面上显示编辑控件,响应对编辑控件的触发操作,展示动态信息编辑界面,在动态信息编辑界面上显示有可编辑的各种信息项;响应于对这些信息项的配置操作,获取这些信息项被配置的信息,作为3D场景动态信息,将这些3D场景动态信息与3D场景静态资源叠加在一起形成3D场景资源数据。
根据XR应用场景的不同,上述动态信息编辑界面的界面形态以及所显示的信息项会有所不同,对此不做限定。对信息项进行举例说明:例如,可以包括用于配置触发动作的信息项,该信息项可以配置的触发方式包括但不限于:滑动触发、长按触发、拖动触发和多次点击触发;又例如,包括用于配置3D模型展示效果的信息项,该信息项可以配置的展示方式包括但不限于:动画、音效、入会等;又例如,包括用于配置3D模型结束形态的信息项,该信息项可以配置的结束形态包括但不限于:结束时隐藏、结束时关闭、循环播放等。除此之外,根据应用场景,还可以针对3D场景静态资源编辑相机控制、灯光控制、水体控制、场景占位、寻路系统等相关动态信息。
下面对为3D场景静态资源编辑上述列举的几种3D场景动态信息的过程进行示例性说明:
(1)相机控制:响应针对3D模型的相机控制编辑操作,为3D模型编辑相关的相机控制信息,以便于在3D场景中为3D模型提供丰富的相机控制能力。其中,为3D模型编辑相关的相机控制信息包括但不限于:用于控制3D模型在不同视角下进行切换的控制信息,用于控制3D模型在相机预设轨道上运动的控制信息,用于控制3D模型跟随其它3D模型或其它场景对象移动的控制信息。这样,在呈现3D场景时,当运行到这些相机控制信息时,可以调用3D渲染引擎执行这些相机控制信息,控制3D模型在不同视角下进行切换,在预设轨道上运动,或者跟随其它3D模型或其它场景对象进行移动,等等。
(2)灯光控制:运行时容器30提供的3D渲染引擎支持实时(Real time)灯光和烘焙(Bake)两种灯光,其中Real time灯光支持定向光源(Directional Light),Bake灯光支持Directional light,点光源(Point light),聚光灯光源(Spot light)和面光源(Arealight)。响应于针对3D模型的灯光控制编辑操作,为3D模型编辑相关的灯光控制信息,例如为3D模型选择光源类型,编辑光源的颜色、照射角度、照射范围和照射强度等参数,以便于在3D场景中为3D模型渲染出符合要求的灯光效果。
(3)水体控制:运行时容器30提供的3D渲染引擎支持水体材质,基于平面网格下使用水体材质能够快捷地实现水面渲染效果,在材质(Material)选项下选择着色器图(Shader Graphs)或水体着色器(Water Shader)即可使用水体材质。在本实施例中,水体材质涉及的参数包括但不限于:Deep Color:深层水颜色;Shallow Color:浅层水颜色;Strength:当前无作用;Smoothness:平滑度;Displacement:波浪移动范围;NormalSteength:波浪法向强度;Normal Tiling:波浪法向贴图平铺系数。响应于针对3D模型的水体控制编辑操作,为3D模型编辑相关的水体控制信息,例如为3D模型选择水体着色器,编辑水体颜色、平滑度、波浪移动范围、波浪法向强度等参数,以便于在3D场景中为3D模型渲染出符合要求的水面渲染效果。
(4)场景占位编辑:在3D场景内需要增加占位信息,例如放置3D模型的占位信息,放置相机的占位信息,放置图片、视频或其它对象的占位信息供应用层使用,具体要在3D场景中的哪些位置设置占位信息,根据应用的产品需求文档(Product RequirementsDocument,PRD)有所不同。举例说明:1)图片占位用于标记3D场景里需要放置图片的位置;2)视频占位用于标记3D场景里需要放置视频的位置;3)红包占位用于标记3D场景里需要显示红包的位置;4)相机占位,可以在3D场景中定义多个相机占位,这样,运行时就可以在这些相机占位上进行相机视角的切换;5)3D模型占位,用于标记3D场景中对应3D模型的位置,可以实现模型移动、旋转、缩放等操作,也可以支持后续3D模型的更新;6)可点击区域占位,3D场景中的3D模型可以通过添加可点击(Clickable)组件,来标记3D场景中3D模型之外可点击的区域,以及3D场景中进行碰撞检测的位置。响应于针对3D场景的占位编辑操作,为3D场景编辑相关的占位信息,例如,在3D场景中设置3D模型的占位、图片占位、视频占位、红包占位、相机占位以及可点击区域占位等占位信息,以便于在3D场景中的合理位置展示3D模型、图片、视频、红包等对象并在相机占位对3D模型进行相机视角的切换等渲染效果。
(5)寻路系统编辑:根据3D场景的地图设置不同三种区域:1)Walkable:表示当前区域允许特定模型对象(例如人物模型)在上面走动,例如地表;2)Not Walkable:表示障碍物(比如墙体),表示特定模型对象无法通过;3)Jump:表示当前区域允许特定模型对象跳过,例如门槛或沟壑等。响应于针对3D场景的寻路编辑操作,为3D场景编辑相关的寻路信息,例如,在3D场景中设置允许特定模型对象通过的区域、不允许通过的区域或可跳过的区域等,以便于在3D场景中呈现特定模型对象的寻路渲染效果。
在此说明,在上述对3D场景静态资源进行编辑的过程中,内容生成器20中的3D场景效果编辑模块21可以启动运行时容器30,在启动运行时容器30提供的运行时环境中运行添加上述动态信息后得到的第一中间态资源数据,例如可以调用运行时容器30提供的3D渲染引擎对第一中间态资源数据进行渲染,得到第一中间态3D画面,根据第一中间态3D画面的渲染效果不断对上述动态信息进行修正,直至得到符合要求的渲染效果,将此时的动态信息作为最终动态信息,最终动态信息与3D场景静态资源形成应用内容中的3D场景资源数据。
在一可选实施例中,上述动态信息编辑界面可以独立于呈现3D静态画面的界面,或者,上述动态信息编辑界面内嵌在呈现3D静态画面的界面中实现,对此不做限定。无论是哪种界面形态,在上述动态信息编辑界面或呈现3D静态画面的界面上可以设置刷新控件或效果查看控件,应用开发人员通过对这些控件进行点击或长按等发起查看添加3D场景动态信息后的3D场景效果的操作,3D场景效果编辑模块21可响应于场景效果查看操作,重新调用运行时容器30,在运行时容器30提供的运行时环境中运行第一中间态资源数据,得到第一中间态3D画面,第一中间态3D画面反映在3D场景静态资源上添加3D场景动态信息后的3D场景效果。
在本实施例中,可以由应用开发人员人工判断第一中间态3D画面是否满足场景效果,并在判断出第一中间态3D画面不满足场景效果的情况下,调整3D场景动态信息,并重新生成第一中间态资源数据并在运行时容器30提供的运行时环境中运行重新生成的第一中间态资源数据,直至得到满足场景效果的第一中间态3D画面,此时的3D场景动态信息与3D场景静态资源形成3D场景资源数据。或者,也可以生成各种3D画面进行场景效果识别和判断的功能模块或组件,由该功能模块或组件自动捕捉第一中间态3D画面的画面状态,根据画面状态判断第一中间态3D画面是否满足场景效果。
对3D应用逻辑编辑模块22来说,具体用于:响应3D场景资源数据的加载操作,启动运行时容器30,在运行时容器30提供的运行时环境中运行3D场景资源数据,以得到第一中间态3D画面;响应应用逻辑代码的编辑操作,根据3D场景资源数据和应用逻辑代码生成第二中间态资源数据,并重新调用运行时容器30,在运行时容器30提供的运行时环境中运行第二中间态资源数据,以得到第二中间态3D画面;在第二中间态3D画面不满足交互效果的情况下,调整应用逻辑代码至满足交互效果,以得到XR应用的应用内容。
在本实施例中,将第二中间态资源数据的运行效果,也就是应用逻辑代码在3D场景中的运行效果分为两类,一类是场景控制,一类是场景交互。
场景控制:根据用户输入,对3D场景中的3D模型进行控制。这意味着应用逻辑代码具有响应用户输入,根据用户输入对3D场景中的3D模型进行控制的功能。其中,并不限定对3D场景中的3D模型进行控制的方式,例如可以控制3D模型进行移动、跳跃等,也可以控制3D模型进行相机视角的切换等。例如,在图5所示场景中,可以根据用户对操纵杆的操作(是用户输入的一种示例),控制人物模型移动,根据用户输入计算人物模型的新位置坐标,例如世界坐标[0.15,0.22,0.31],将人物模型从原来位置坐标移动至新的位置坐标处。在此说明,根据展示3D场景的目标设备的不同,用户输入的方式也会有所不同,如果目标设备是手机等移动终端,则用户可以通过手势、语音或触控等方式进行输入;如果目标设备是VR设备或AR设备,则用户可以通过手柄上的按钮进行输入或者通过位姿进行输入。以触控输入为例,可以是用户在3D场景界面上的点击、长按或双击等操作,还可以是用户对3D场景中的某些控件进行触发操作。
场景交互:主要是指根据用户输入或由用户操控的3D模型来触发各类响应事件或交互信息。这意味着应用逻辑代码具有响应用户输入或监测被用户操控的3D模型的状态,根据用户输入或3D模型的状态触发响应事件或交互信息的功能。比如:1)用户点击3D模型,控制3D模型进行显示或隐藏,或者展示相关特效;2)当用户操控某个3D模型靠近某个区域或物体时,在3D场景中展示红包信息或其它交互信息等。
基于上述,在第二中间态3D画面不满足交互效果的情况下,调整应用逻辑代码的情况示例性的包括但不限于:在3D模型位置不理想的情况下,修改应用逻辑代码中与3D模型进行交互的位置、对3D模型的触发操作类型等;在3D场景中展示红包信息不符合应用需求的情况下,将应用逻辑代码中的红包信息修改为翻牌信息等,直至得到符合交互效果的应用逻辑代码,此时的应用逻辑代码与3D场景资源数据形成XR应用的应用内容。
在本实施例中,内容生成器20提供有交互界面,可在交互界面上展示上述第一中间态3D画面和第二中间态3D画面。同理,关于识别第二中间态3D画面是否满足交互效果的方式,可参见前文提到的识别第一中间态3D画面是否满足场景效果的方式,在此不再赘述。
在本实施例中,应用逻辑代码是应用开发人员预先编写的,本实施例的运行时容器除了提供运行时环境之外,还可以面向应用开发人员提供开发XR应用所需的API,为了便于描述和区分,将这些面向应用开发人员的API称为是第一类API,应用开发人员可基于第一类API编写XR应用所需的应用逻辑代码。其中,第一类API是对第二类API进行封装得到的,第二类API是运行时容器30提供的软件引擎对外提供的API,通过第二类API可以调用运行时容器提供的软件引擎,进而由这些软件引擎提供中间态资源数据或XR应用所需的运行时环境。由于第一类API是对第二类API进行封装得到的,其数量远小于第二类API的数量,且第一类API更具象,便于理解,使得应用开发人员可以更加简单、高效的编写应用逻辑代码,降低XR应用的开发难度。
在此说明,根据运行时容器30的实现架构的不同,在运行时容器30提供的运行时环境中运行上述3D场景静态资源、3D场景资源数据、第一中间态资源数据和第二中间态资源数据的方式会有所不同。下面结合图2所示运行时容器30的实现架构,对此进行详细说明。
在编辑3D场景动态信息的过程中:
3D场景效果编辑模块21响应3D场景静态资源的加载操作,启动运行时容器30。运行时容器30被启动后,Framework层感知到3D场景静态资源的加载事件,该加载事件为前述目标事件的一种具体示例,确定该事件对应的至少一个第一类API,例如包括但不限于:3D场景API、生命周期管理API和资源管理API等;然后,根据这些API之间的逻辑关系,执行这些API的函数实体,在这些API的函数实体中封装有第二类API,例如3D场景API的函数实体中封装有3D渲染引擎对应的第二类API,生命周期管理API的函数实体中封装有生命周期管理引擎对应的第二类API,资源管理API的函数实体中封装有资源管理引擎对应的第二类API。将这些函数实体中封装的第二类API称为目标API,在执行到任一目标API的情况下,Framework层将目标API提供给运行时环境层,由运行时环境层根据目标API调用对应软件引擎对加载3D场景静态资源的事件进行响应。示例性地,运行时环境层调用3D渲染引擎对3D场景静态资源进行渲染,以得到3D静态画面,并调用生命周期管理引擎管理3D静态画面的生命周期,例如显示和关闭;以及调用资源管理引擎对3D场景静态资源进行资源管理,例如在本地存储、缓存等。
3D场景效果编辑模块21响应场景效果查看触发操作,重新调用运行时容器30。运行时容器30被重新调用后,Framework层感知到查看添加3D场景动态信息后的3D场景效果的事件,该事件为前述目标事件的一种具体示例,确定该事件对应的至少一个第一类API,例如包括但不限于:3D场景API、生命周期管理API和资源管理API等;然后,根据这些API之间的逻辑关系,执行这些API的函数实体,在这些API的函数实体中封装有第二类API,例如3D场景API的函数实体中封装有3D渲染引擎对应的第二类API,生命周期管理API的函数实体中封装有生命周期管理引擎对应的第二类API,资源管理API的函数实体中封装有资源管理引擎对应的第二类API。将这些函数实体中封装的第二类API称为目标API,在执行到任一目标API的情况下,Framework层将目标API提供给运行时环境层,由运行时环境层根据目标API调用对应软件引擎对加载3D场景静态资源的事件进行响应。示例性地,运行时环境层调用3D渲染引擎对第一中间态资源数据进行渲染,以得到第一中间态3D画面,并调用生命周期管理引擎管理第一中间态3D画面的生命周期,例如显示和关闭;以及调用资源管理引擎对第一中间态资源数据进行资源管理,例如在本地存储、缓存等。
在编辑应用逻辑代码的过程中:
3D应用逻辑编辑模块22响应3D场景资源数据的加载操作,启动运行时容器30。运行时容器30被启动后,Framework层感知到3D场景资源数据的加载事件,该加载事件为前述目标事件的一种具体示例,确定该事件对应的至少一个第一类API,例如包括但不限于:3D场景API、生命周期管理API、资源管理API、UI交互API以及事件交互API等;然后,根据这些API之间的逻辑关系,执行这些API的函数实体,在这些API的函数实体中封装有第二类API,例如3D场景API的函数实体中封装有3D渲染引擎对应的第二类API,生命周期管理API的函数实体中封装有生命周期管理引擎对应的第二类API,资源管理API的函数实体中封装有资源管理引擎对应的第二类API,UI交互API的函数实体中封装有2D UI引擎对应的第二类API,以及事件交互API的函数实体中封装有事件管理引擎对应的第二类API。将这些函数实体中封装的第二类API称为目标API,在执行到任一目标API的情况下,Framework层将目标API提供给运行时环境层,由运行时环境层根据目标API调用对应软件引擎对3D场景静态资源的加载事件进行响应。示例性地,运行时环境层调用3D渲染引擎对3D场景资源数据进行渲染,以得到第一中间态3D画面,并调用生命周期管理引擎管理第一中间态3D画面的生命周期,例如显示和关闭;以及调用资源管理引擎对3D场景资源数据进行资源管理,例如在本地存储、缓存等,进一步事件引擎对3D场景资源数据运行过程中的交互事件进行响应,例如响应界面上的长按、点击、旋转等交互事件。在XR应用实现为宿主2D应用内嵌3D场景的形态时,应用逻辑代码中可能包含与宿主2D应用进行UI交互的功能,则2D UI引擎可响应应用逻辑代码与宿主2D应用之间的UI交互,并对此进行响应。
3D应用逻辑编辑模块响应应用逻辑代码的编辑操作,重新调用运行时容器30。运行时容器30被重新调用后,Framework层感知到应用逻辑代码的编辑事件,该编辑事件为前述目标事件的一种具体示例,确定该事件对应的至少一个第一类API,例如包括但不限于:3D场景API、生命周期管理API、资源管理API、UI交互API以及事件交互API等;然后,根据这些API之间的逻辑关系,执行这些API的函数实体,在这些API的函数实体中封装有第二类API。将这些函数实体中封装的第二类API称为目标API,在执行到任一目标API的情况下,Framework层将目标API提供给运行时环境层,由运行时环境层根据目标API调用对应软件引擎对加载3D场景静态资源的事件进行响应。详细描述参见上述实施例,在此不再赘述。
基于上述操作可以生成XR应用的应用内容,之后,由应用生成平台40将该应用内容与运行时容器打包生成XR应用。根据XR应用的应用形态,可以采用不同的方式部署到目标设备上。在XR应用被部署到目标设备上之后,可以在目标设备上运行XR应用。无论是哪种方式,XR应用的运行过程是指启动XR应用中的运行时容器30,该运行时容器30运行在XR应用的应用内容与XR应用所在目标设备的操作系统之间,由运行时容器30为XR应用的应用内容提供运行时环境,在运行时环境中运行该应用内容,进而为用户呈现3D场景和3D场景中的交互或控制的过程。其中,XR应用运行时的框架如图4所示,最上层是XR应用的应用内容,中间是运行时容器30,底层是承载XR应用的目标设备的操作系统。运行时容器30运行在目标设备的操作系统之上,为XR应用的应用内容提供运行时环境,XR应用的应用内容在该运行时环境中运行,向用户展示3D场景并基于3D场景进行交互和/或控制,这里的交互包括用户触发的交互,也包括根据应用需求在3D场景内自动触发的交互和/或控制。
在上述框架中,运行时容器30的Framework层32在XR应用运行过程中感知目标事件,运行目标事件对应的至少一个第一类API的函数实体,并将该函数实体中封装的目标API提供给运行时环境层33,目标API是指被封装到函数实体中的第二类API。运行时环境层33,用于根据Framework层32提供的目标API,调用Libraries层31中对应软件引擎对目标事件进行响应。具体地,运行时环境层33可以根据目标API,调用Libraries层31中对应的软件引擎对目标事件进行响应,并通过Framework层32向所述XR应用的应用界面透传响应结果。
在XR应用运行过程中,Framework层32可感知到的目标事件包括但不限于:运行XR应用的触发事件,与XR应用中的目标对象的交互事件,关闭XR应用的触发事件等。其中,XR应用中的目标对象包括但不限于:3D场景中的3D模型、2D对象和可交互区域中的至少一种。如图5所示,3D模型可以是人物模型、物品模型、整个3D场景模型;相应地,2D对象包括但不限于:3D场景中需要展示的图片、音频或视频等。
在一可选实施例中,XR应用实现为独立的应用形态,则用户可以点击、双击或长按XR应用的图标,发起运行XR应用的触发操作;Framework层32可响应XR应用的图标的触发操作,生成运行该XR应用的触发事件。
在另一可选实施例中,XR应用实现为宿主2D应用中内嵌3D场景的应用形态,在该应用形态中,宿主2D应用中会提供3D场景的访问入口,则用户可以点击、双击或长按该访问入口,发起运行XR应用的触发操作;Framework层32可响应XR应用的访问入口的触发操作,生成运行该XR应用的触发事件。
根据XR应用所属应用场景的不同,运行XR应用的触发事件对应的第一类API会有所不同,本申请实施例对此不做限定。举例说明:运行XR应用的触发事件对应的第一类API包括:3D场景API、生命周期管理API和资源管理API,这些API的函数实体中封装有对应软件引擎的第二类API。例如,3D场景API的函数实体中封装有3D渲染引擎对应的第二类API,生命周期管理API的函数实体中封装有生命周期管理引擎对应的第二类API,资源管理API的函数实体中封装有资源管理引擎对应的第二类API。Framework层32按照应用逻辑,依次运行第一类API的函数实体,并在运行到这些函数实体中封装的第二类API时,将第二类API作为目标API并提供给运行时环境层33。由运行时环境层33根据目标API调用对应软件引擎对运行XR应用的触发事件进行响应。示例性地,运行时环境层33调用3D渲染引擎调用生命周期管理引擎下载XR应用的资源包,调用3D渲染引擎对下载的资源进行渲染,并通过运行时环境层向Framework层32反馈下载和资源加载状态,以完成XR应用的3D场景初始化,在此过程中,还可以调用资源管理引擎对XR应用的资源包进行管理,例如在本地存储、缓存等。
根据XR应用所属应用场景的不同,与XR应用中目标对象的交互事件对应的第一类API会有所不同,本申请实施例对此不做限定。举例说明:交互事件对应的至少一个第一类API,例如包括但不限于:3D场景API、UI交互API以及事件交互API等,在这些API的函数实体中封装有第二类API,例如3D场景API的函数实体中封装有3D渲染引擎对应的第二类API,UI交互API的函数实体中封装有2D UI引擎对应的第二类API,以及事件交互API的函数实体中封装有事件管理引擎对应的第二类API。Framework层32按照应用逻辑,依次运行第一类API的函数实体,并在运行到这些函数实体中封装的第二类API时,将第二类API作为目标API并提供给运行时环境层33。由运行时环境层33根据目标API调用对应软件引擎对交互事件进行响应。示例性地,运行时环境层调用3D渲染引擎对交互事件涉及的资源数据进行渲染,调用事件引擎对交互事件进行响应,例如响应界面上的长按、点击、旋转等交互事件,以及在交互事件包括与宿主2D应用之间的UI交互时,还可以调用2D UI引擎对与宿主2D应用之间的UI交互进行响应。
对运行时环境层33来说,根据目标API的不同,调用Libraries层31中对应的软件引擎对目标事件进行响应的方式会有所不同。下面结合Libraries层31中包含的部分软件引擎对此进行举例说明:
在目标API包括Libraries层31中下载引擎对应的第二类API时,调用下载引擎从服务端下载XR应用的应用内容;
在目标API包括Libraries层31中存储引擎对应的第二类API时,调用存储引擎对XR应用的应用内容进行存储管理;
在目标API包括Libraries层31中生命周期管理引擎对应的第二类API时,调用生命周期管理引擎对XR应用进行生命周期管理;
在目标API包括Libraries层31中3D渲染引擎对应的第二类API时,调用3D渲染引擎对XR应用进行3D渲染;
在目标API包括Libraries层31中AI推理引擎对应的第二类API时,调用AI推理引擎对XR应用进行AI推理处理;
在目标API包括Libraries层31中2D UI引擎对应的第二类API时,调用2D UI引擎对XR应用与宿主2D应用之间的UI交互进行处理;
在目标API包括Libraries层31中事件引擎对应的第二类API时,调用事件引擎对XR应用中的事件回调逻辑进行处理。
在下面实施例中,以XR应用是宿主2D应用中内嵌3D场景的应用形态为例,假设宿主2D应用是电商APP,则为了增加电商APP的趣味性和用户体验,可以在电商APP中内嵌3D场景,例如在电商APP中内嵌AR试衣的场景、VR购物场景等。以此场景为例,对本申请实施例提供的运行时容器的运行过程进行说明。
在电商APP的某个页面上设置有该XR应用的访问入口,用户点击该访问入口后进入该XR应用呈现出的3D场景空间,如图5所示。在本实施例中,XR应用的应用内容(或称为资源包)包括3D场景资源数据和采用JS编写的应用逻辑代码,是基于上述开发系统开发出的,在电商APP运行过程中,当用户触发访问XR应用的3D场景空间时,可调用运行时容器中的3层架构,由该3层架构支撑3D场景空间的展示与交互,包括但不限于以下几个方面:
1、XR应用生命周期的管理
运行时容器响应于XR应用的触发操作,调用第二类API中与下载库对应的API,下载XR应用的资源包,完成XR应用的资源加载,并调用第二类API中与3D渲染引擎对应的API,利用3D渲染引擎为XR应用进行3D场景渲染,以在电商APP的相关页面上显示3D场景空间,以及响应XR应用的退出或关闭操作,在XR应用退出时进行相关资源(例如内存、CPU)清理等动作,以实现对XR应用生命周期的管理。
进一步,结合运行时容器的3层架构对XR应用生命周期的管理过程进行说明。如图6a所示,对XR应用进行初始化的过程包括:框架层响应于进入3D场景空间的触发操作,进入3D场景,触发运行时VM初始化3D场景,运行时VM调用软件库层中的下载库下载XR应用的资源包;运行时VM调用3D渲染引擎根据下载的资源进行3D场景的渲染,并更新资源下载和渲染状态,将资源下载和渲染状态提供给框架层;在XR应用的资源包下载完成后,下载库通知运行时VM资源包下载完成;运行时VM通知框架层完成3D场景的初始化;之后,框架层完成3D场景上的UI操作等。在此说明,XR应用的资源包可以加密和压缩,则在渲染之前,运行时VM还可以调用相应引擎对资源包进行解密和解压缩处理。
2、用户在3D场景空间中触发第一类操作,第一类操作是指会触发函数调用的操作,被调用的函数负责响应第一类操作并对第一类操作做出响应。
以图5所示3D场景空间为例,用户触发的第一类操作包括但不限于以下几种:
用户操作3D场景中的操作杆移动人物角色模型,该操作触发一系列行为,比如漫游状态时位置和场景变化,这些可由回调函数进行响应和处理;
用户操作相机视角,该操作会触发场景变化,这些变化可由回调函数进行响应和处理;
用户点击屏幕触发播放功能,该操作会触发播放音乐或特效以及地图切换等,这些变化可由回调函数进行响应和处理。
进一步,结合运行时容器的3层架构对用户触发函数调用的处理过程进行说明。如图6b所示,用户触发第一类操作的处理过程包括:
情况1:框架层响应于用户移动人物模型的操作,将该用户移动人物模型的操作通知给运行时VM,运行时VM调用软件库层中的3D渲染引擎对人物模型的位置重新进行渲染;
情况2:框架层响应于用户进行相机视角切换的操作,将该用户进行相机视角切换的操作通知给运行时VM,运行时VM调用软件库层中的3D渲染引擎对3D场景或3D模型重新进行渲染,以得到新视角下的3D场景或3D模型;
情况3:框架层响应于用户播放音乐、特效的操作,将该用户播放音乐、特效的操作通知给运行时VM,运行时VM调用软件库层中的多媒体库、3D特效库进行音乐、特效的播放。
3、用户在3D场景空间中触发第二类操作,第二类操作是指会触发事件回调的操作,被回调的事件负责响应第二类操作并对第二类操作做出响应。
以图5所示为例,用户发起第二类操作触发事件回调的情况包括但不限于:用户操作人物角色模型移动,3D渲染引擎进行碰撞检测,并在发现人物角色模型靠近或离开指定模型对象时,触发事件回调到上层应用逻辑代码层进行响应,例如弹出红包、优惠券或会场消息等。
进一步,结合运行时容器的3层架构对用户触发事件回调的处理过程进行说明。如图6c所示,用户触发第二类操作的处理过程包括:
情况1:VM调用软件库层中的3D渲染引擎监测3D模型(以人物模型为例)是否与设定物体发生碰撞,简称物理碰撞检测;在检测到人物模型靠近预设物体时通过运行时VM反馈给框架层;框架层执行目标应用逻辑代码数据中对应的代码数据进行响应,例如展示红包信息。
情况2:VM调用软件库层中的3D渲染引擎监测3D模型(以人物模型为例)是否与设定物体发生碰撞,简称物理碰撞检测;在检测到人物模型离开预设物体时通过运行时VM反馈给框架层;框架层调用目标应用逻辑代码数据中对应的代码数据进行响应,例如取消红包信息的展示。
本申请实施例提供的XR应用开发系统,具有以下有益效果:
(1)跨设备与高性能:通过C++实现Libraries层中的基础能力,并针对性进行优化获得较佳性能,例如对设备的指令集进行并行计算加速等,从代码运行层面实现跨设备;进一步,在对这些基础能力进行封装得到API时,可以针对不同设备的API进行二次封装,使得XR应用在交互层面也能够做到跨设备,进而提高XR应用的性能;
(2)快迭代:选择使用Python或JS等动态编程语言实现XR应用的应用逻辑代码和运行时VM,将运行时VM作为胶水层调用底层通过 C++实现的Libraries层中的基础能力,Libraries层中基础能力的迭代频率较低,可以通过版本更新的方式进行迭代,但是XR应用的应用逻辑的更新频率较高,采用动态编程语言实现,借助于动态编程语言的优势,有利于应用逻辑的快速发布和更新,同时保证全局的高性能。
(3)轻量性:根据XR应用的开发需求,对Libraries层中的软件引擎或软件库进行轻量化处理,例如舍弃一些不需要的软件库,对于一些软件库通过嫁接的方式引入,而非直接移植的方式。另外,Libraries层中的软件引擎或软件库采用动态下发方式发布,而不跟随XR应用的安装包或宿主2D应用的安装包一并发布,进一步实现轻量化。再者,在包含AI推理引擎的情况下,采用MNN引擎,基于MNN实现图像处理,矩阵计算等操作,有利于减少端侧AI推理引擎的包大小,进一步实现轻量化。
(4)低门槛:通过对Libraries层中基础能力的封装,并通过Framework层面向应用开发人员暴露第一类API,针对3D渲染引擎提供的渲染、物理、动画等基础能力进行抽象封装,提供XRScene、XRModel、XRAnchor、XREvent、XRConfig等少数概念,便于XR应用开发人员理解和使用。
(5)随着XR应用的运行,可以对XR应用的稳定性进行监测,实时获取 XR应用的崩溃(Crash)信息,启动性能,页面性能等多维度数据,根据这些监测数据对XR应用进行后期运维操作,这些运维操作包括但不限于:补丁(patch)修复、信息配置等。
在本实施例中,基于运行时容器构建一套适用于宿主2D应用内嵌3D场景的编辑工具链,即内容生成器20,其结构和功能描述可参见前述图6d所示实施例,在此不再赘述。其中,该内容生成器20基于运行时容器能够满足内嵌到2D应用的包大小、性能、效果等约束,具有以下效果:
(1)效率提升,极大降低美术,技术沟通协同成本。通过内容生成器中集成运行时容器,借助于运行时容器的软件库层中的3D渲染引擎能够做到所见即所得编辑3D场景效果,便于应用开发人员编辑3D场景的效果和应用逻辑代码。
(2)效果一致,3D内容生成器和目标设备复用相同的运行时容器,可以做到内容编辑和目标设备运行效果的一致性。
(3)规范约束,3D内容生成器中内嵌自定义的3D模型标准规范,涉及几何、材质、灯光、相机、动画等,最终3D场景导出会根据3D模型标准做校验,保证了最终沉淀的3D模型的标准化,以及满足XR应用在目标设备上运行的效果、性能等约束。
本申请实施例除了提供XR应用开发系统之外,还提供了一种XR应用开发方法、XR应用编辑方法和XR应用运行方法。下面实施例将分别对XR应用开发方法、XR应用编辑方法和XR应用运行方法进行描述。
图7a为本申请实施例提供的一种XR应用开发方法的流程示意图。该方法应用于上述XR应用开发系统,如图7a所示,该方法包括:
71a、预先开发生成XR应用所需的运行时容器并将运行时容器集成在内容生成器中,该运行时容器用于在XR应用生成过程和运行过程中提供运行时环境;
72a、在集成有运行时容器的内容生成器中,基于该运行时容器所提供的运行时环境,生成XR应用的应用内容;
73a、根据该应用内容和运行时容器,生成XR应用;其中,在XR应用运行过程中,运行时容器运行在该应用内容与XR应用所在目标设备的操作系统之间,该应用内容运行在运行时容器提供的运行时环境中。
在一可选实施例中,在集成有所述运行时容器内容生成器中,基于所述运行时容器提供的运行时环境,生成所述XR应用的应用内容,包括:响应XR应用生成操作,加载3D场景静态资源;基于所述运行时容器提供的运行时环境,为所述3D场景静态资源添加3D场景动态信息,以得到3D场景资源数据;基于所述运行时容器提供的运行时环境,为所述3D场景资源数据编辑应用逻辑代码,以得到所述XR应用的应用内容。关于各步骤的详细实施方式,可参见前述系统实施例或下述方法实施例的相关描述,在此不再赘述。
在一可选实施例中,根据所述应用内容和所述运行时容器,生成所述XR应用,包括:将所述运行时容器和所述应用内容集成在所述XR应用的安装包中并发布所述XR应用的安装包;和/或,将所述运行时容器集成在宿主二维2D应用的安装包中并发布所述宿主2D应用的安装包,以及将所述应用内容发布到所述宿主2D应用对应的资源服务端,所述宿主2D应用是需要内嵌所述XR应用的2D应用。
图7b为本申请实施例提供的一种XR应用编辑方法的流程示意图。该方法应用于上述XR应用开发系统中的内容生成器,内容生成器中集成有运行时容器,该运行时容器用于在XR应用生成过程或运行过程中提供运行时环境,如图7b所示,该方法包括:
71b、响应3D资源编辑操作,加载3D场景静态资源;
72b、基于运行时容器提供的运行时环境,为3D场景静态资源添加3D场景动态信息,以得到3D场景资源数据;
73b、基于运行时容器提供的运行时环境,为3D场景资源数据编辑应用逻辑代码,以得到XR应用的应用内容;该应用内容与运行时容器形成XR应用,XR应用中的运行时容器在XR应用运行过程中为该应用内容提供运行时环境。
在一可选实施例中,基于运行时容器提供的运行时环境,为3D场景静态资源添加3D场景动态信息,以得到3D场景资源数据,包括:
响应3D场景静态资源的加载操作,启动运行时容器,在运行时容器提供的运行时环境中运行3D场景静态资源,以得到3D静态画面;
响应3D静态画面上的编辑操作,为3D场景静态资源编辑3D场景动态信息,以得到第一中间态资源数据;
响应场景效果查看操作,重新调用运行时容器,在运行时容器提供的运行时环境中运行第一中间态资源数据,得到第一中间态3D画面;
在第一中间态3D画面不满足场景效果的情况下,调整3D场景动态信息至得到满足场景效果,以得到3D场景资源数据。
在一可选实施例中,基于运行时容器提供的运行时环境,为3D场景资源数据编辑应用逻辑代码,以得到XR应用的应用内容,包括:
响应3D场景资源数据的加载操作,启动运行时容器,在运行时容器提供的运行时环境中运行3D场景资源数据,以得到第一中间态3D画面;
响应应用逻辑代码的编辑操作,根据3D场景资源数据和应用逻辑代码生成第二中间态资源数据,并重新调用运行时容器,在运行时容器提供的运行时环境中运行第二中间态资源数据,以得到第二中间态3D画面;
在第二中间态3D画面不满足交互效果的情况下,调整应用逻辑代码至满足交互效果,以得到XR应用的应用内容。
在一可选实施中,运行时容器包括:框架层、运行时环境层和软件库层,关于运行时容器的架构和工作原理可参见前述实施例,在此不再赘述。
基于上述,在运行时容器提供的运行时环境中运行3D场景静态资源,以得到3D静态画面,包括:框架层感知3D场景静态资源的第一加载事件,运行第一加载事件对应的至少一个第一类API的函数实体;在运行到函数实体中封装的第一目标API时,将第一目标API提供给运行时环境层,第一目标API属于第二类API;运行时环境层根据第一目标API,调用软件库层中对应软件引擎对第一加载事件进行响应;
相应地,在运行时容器提供的运行时环境中运行第一中间态资源数据,以得到第一中间态3D画面,包括:框架层感知3D静态画面上的第一编辑事件,运行第一编辑事件对应的至少一个第一类API的函数实体;在运行到函数实体中封装的第一目标API时,将第一目标API提供给运行时环境层,第一目标API属于第二类API;运行时环境层根据第一目标API,调用软件库层中对应软件引擎对第一编辑事件进行响应。
相应地,在运行时容器提供的运行时环境中运行3D场景资源数据,以得到第一中间态3D画面,包括:
框架层感知3D场景资源数据的第二加载事件,运行第二加载事件对应的至少一个第一类API的函数实体;在运行到函数实体中封装的第二目标API时,将第二目标API提供给运行时环境层,第二目标API属于第二类API;运行时环境层根据第二目标API,调用软件库层中对应软件引擎对第二加载事件进行响应。
相应地,在运行时容器提供的运行时环境中运行第二中间态资源数据,以得到第二中间态3D画面,包括:框架层感知应用逻辑代码的第二编辑事件,运行第二编辑事件对应的至少一个第一类API的函数实体;在运行到函数实体中封装的第二目标API时,将第二目标API提供给运行时环境层,第二目标API属于第二类API;运行时环境层根据第二目标API,调用软件库层中对应软件引擎对第二编辑事件进行响应。
图8为本申请实施例提供的一种XR应用运行方法的流程示意图。该方法应用于上述XR应用开发系统中的运行时容器,如图8所示,该方法包括:
81、响应于运行XR应用的触发操作,启动XR应用中的运行时容器,以为XR应用中的应用内容提供运行时环境,运行时容器运行在应用内容与XR应用所在目标设备的操作系统之间;
82、基于运行时容器提供的运行时环境运行应用内容,以运行XR应用。
在一可选实施例中,响应于运行XR应用的触发操作之前,还包括:根据XR应用的安装包在目标设备上安装XR应用的运行时容器和应用内容,XR应用的安装包包括运行时容器和应用内容;相应地,响应于运行XR应用的触发操作可以是响应对XR应用的图标的双击、长按等触发操作,以触发运行XR应用。
和/或,
在一可选实施例中,响应于运行XR应用的触发操作之前,还包括:根据宿主2D应用的安装包在目标设备上安装运行时容器,宿主2D应用是需要内嵌XR应用的2D应用,宿主2D应用的安装包中包括运行时容器,应用内容被发布到宿主2D应用对应的资源服务端,以供动态加载。在宿主2D应用运行过程中,可展示XR应用的访问入口信息,相应地,响应于运行XR应用的触发操作可以是响应于对该访问入口信息的触发操作,例如点击或长按等。另外,在该场景中,在基于运行时容器提供的运行时环境运行应用内容之前,还包括从资源服务端下载该应用内容的操作。
在一可选实施例中,运行时容器包括:框架层、运行时环境层和软件库层,关于运行时容器的架构和工作原理可参见前述实施例,在此不再赘述。
相应地,基于运行时容器提供的运行时环境运行应用内容,以运行XR应用,包括:
框架层在XR应用运行过程中感知目标事件,运行目标事件对应至少一个第一类API的函数实体,将函数实体中封装的目标API提供给运行时环境层,目标API属于第二类API;
运行时环境层根据框架层提供的目标API,调用软件库层中对应软件引擎对目标事件进行响应,以运行XR应用;
其中,第一类API是对第二类API进行封装得到的,第二类API是软件库层中包含的软件引擎对应的API。
运行时环境层根据框架层提供的目标API,调用软件库层中对应软件引擎对目标事件进行响应,包括以下至少一种操作:
在目标API包括软件库层中下载引擎对应的第二类API时,调用下载引擎从服务端下载XR应用的应用内容;
在目标API包括软件库层中存储引擎对应的第二类API时,调用存储引擎对XR应用的应用内容进行存储管理;
在目标API包括软件库层中生命周期管理引擎对应的第二类API时,调用生命周期管理引擎对XR应用进行生命周期管理;
在目标API包括软件库层中3D渲染引擎对应的第二类API时,调用3D渲染引擎对XR应用进行3D渲染;
在目标API包括软件库层中AI推理引擎对应的第二类API时,调用AI推理引擎对XR应用进行AI推理处理;
在目标API包括软件库层中2D UI引擎对应的第二类API时,调用2D UI引擎对XR应用与宿主2D应用之间的UI交互进行处理;
在目标API包括软件库层中事件引擎对应的第二类API时,调用事件引擎对XR应用中的事件回调逻辑进行处理。
在一可选实施例中,运行时环境层包括至少一个运行时虚拟机VM,不同运行时VM采用不同的动态编程语言实现,用于为采用不同动态编程语言实现的XR应用提供运行时环境。相应地,在至少一个运行时VM为多个的情况下,方法还包括:运行时环境层根据XR应用使用的动态编程语言,调度多个运行时VM中与XR应用使用相同动态编程语言实现的目标VM,以使目标VM为XR应用服务。
除上述实施例之外,本申请实施例还提供一种XR内容运行方法,该XR内容运行方法应用于内嵌有XR运行时容器的宿主应用中,该XR运行时容器位于宿主应用的安装包内,可随着宿主应用的安装而一起被安装。其中,XR运行时容器的实现结构和功能可参见前述实施例中的运行时容器。在本实施例中,宿主应用中内嵌有XR运行时容器,用于为XR内容的运行提供运行时环境,通过在XR运行时容器提供的运行时环境中运行XR内容,最终达到在宿主应用中呈现XR内容的目的。基于此,该XR内容运行方法包括:运行宿主应用;在宿主应用运行过程中,展示XR内容的访问入口信息,例如该访问入口信息可以是宿主应用提供的某个应用页面上的链接或具有链接功能的图标、控件等,对此不做限定;响应对该访问入口信息的触发操作,启动XR运行时容器,并获取XR内容;基于XR运行时容器提供的运行时环境运行XR内容。关于基于XR运行时容器提供的运行时环境运行XR内容的详细实施方式,与前述实施例中“基于运行时容器提供的运行时环境运行XR应用的应用内容”的详细实施方式相同或相似,在此不再赘述。
在本申请实施例中,并不限定XR内容的获取方式。在一可选实施例中,XR内容被部署在宿主应用对应的资源服务端,则获取XR内容的方式包括:从宿主应用对应的资源服务端,下载该XR内容。在另一可选实施例中,XR内容也可以内嵌于宿主应用中,例如XR内容位于宿主应用的安装包内,可随着宿主应用的安装而一起被安装,则获取XR内容的方式包括:从本地缓存中加载XR内容。
在本申请实施例中,XR内容可以实现为前述实施例中XR应用的应用内容;相应地,XR内容与XR运行时容器相结合,可实现为前述实施例中的XR应用。
关于本申请上述方法实施例中各步骤的详细实施方式以及有益效果已经在前述实施例中进行了详细描述,此处将不做详细阐述说明。
需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤71至步骤73的执行主体可以为设备A;又比如,步骤71和72的执行主体可以为设备A,步骤73的执行主体可以为设备B;等等。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如71、72等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
图9为本申请实施例提供的一种电子设备的结构示意图,如图9所示,该电子设备包括:存储器1001和处理器1002。
存储器1001,用于存储计算机程序,并可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,消息,图片,视频等。
处理器1002,与存储器1001耦合,用于执行存储器1001中的计算机程序,以用于实现本申请实施例提供的XR应用开发方法、XR应用编辑方法中的步骤或者XR应用运行方法或XR内容运行方法中的步骤。
关于XR应用开发方法、XR应用编辑方法或者XR应用运行方法或XR内容运行方法的详细描述,可参见前述实施例,在此不再赘述。
进一步,如图9所示,该电子设备还包括:通信组件1003、显示器1004、电源组件1005、音频组件1006等其它组件。图9中仅示意性给出部分组件,并不意味着电子设备只包括图9所示组件。本实施例的电子设备在执行XR应用编辑方法或者XR应用运行方法时,可以实现为台式电脑、笔记本电脑、智能手机或IOT设备等终端设备,或者也可以实现为AR设备或VR设备。在电子设备实现为AR设备或VR设备的情况下,该电子设备还可以包括操作手柄等组件,在图9中未示出。本实施例的电子设备在执行XR应用开发方法时,可以实现为同时运行有内容生成器和运行时容器的台式电脑、笔记本电脑、智能手机等终端设备,也可以实现为传统服务器、云服务器、或云端与终端相互配的系统,对此不做限定。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,当计算机程序被处理器执行时,致使处理器能够实现上述XR应用开发方法或XR应用编辑方法中的步骤或者XR应用运行方法或XR内容运行方法中的步骤。
上述存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random-Access Memory,SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read Only Memory,EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM),可编程只读存储器(Programmable Read-Only Memory,PROM),只读存储器(Read-Only Memory,ROM),磁存储器,快闪存储器,磁盘或光盘。
上述通信组件被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如WiFi,2G、3G、4G/LTE、5G等移动通信网络,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件还包括近场通信(Near Field Communication,NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(Radio Frequency Identification,RFID)技术,红外数据协会(InfraredData Association,IrDA)技术,超宽带(Ultra Wide Band,UWB)技术,蓝牙(BlueTooth,BT)技术和其他技术来实现。
上述显示器包括屏幕,其屏幕可以包括液晶显示器(Liquid Crystal Display,LCD)和触摸面板(TouchPanel,TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。
上述电源组件,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
上述音频组件,可被配置为输出和/或输入音频信号。例如,音频组件包括一个麦克风(Microphone,MIC),当音频组件所在设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器或经由通信组件发送。在一些实施例中,音频组件还包括一个扬声器,用于输出音频信号。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、只读光盘(Compact Disc Read-Only Memory,CD-ROM)、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(Central ProcessingUnit,CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RandomAccess Memory,RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(Phase-change Random AccessMemory,PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(Digital Video Disc,DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (12)
1.一种内容生成器,其特征在于,内部集成有生成XR应用所需的运行时容器,所述运行时容器用于在所述XR应用生成过程或运行过程中提供运行时环境,所述内容生成器还包括:
3D场景效果编辑模块,用于响应XR应用生成操作,加载3D场景静态资源,基于所述运行时容器提供的运行时环境,为所述3D场景静态资源编辑3D场景动态信息,以得到3D场景资源数据;
3D应用逻辑编辑模块,用于基于所述运行时容器提供的运行时环境,为所述3D场景资源数据编辑应用逻辑代码,以得到所述XR应用的应用内容;
其中,所述应用内容与所述运行时容器形成所述XR应用,所述XR应用中的运行时容器在所述XR应用运行过程中为所述应用内容提供运行时环境;
所述运行时容器包括:框架层、运行时环境层以及软件库层,所述软件库层包括多种软件引擎,用于提供所述多种软件引擎的第二类应用编程接口API,以供根据所述第二类API封装得到应用开发人员编写所述XR应用的应用逻辑代码所需的第一类API;所述框架层用于在所述XR应用生成过程或运行过程中感知目标事件,所述目标事件对应的第一类API由所述第二类API中的目标API封装得到,并通过所述运行时环境层调用所述软件库层中与目标API对应的软件引擎对所述目标事件进行响应。
2.根据权利要求1所述的内容生成器,其特征在于,
所述软件库层,用于提供所述多种软件引擎的第二类应用编程接口API,以供根据所述第二类API封装得到第一类API;
所述框架层,用于面向应用开发人员提供所述第一类API,以供所述应用开发人员基于所述第一类API编写所述XR应用的应用逻辑代码,以及在所述XR应用生成过程或运行过程中感知目标事件,运行所述目标事件对应的至少一个第一类API的函数实体,并将所述函数实体中封装的目标API提供给所述运行时环境层,所述目标API属于第二类API;
所述运行时环境层,用于根据所述目标API,调用所述软件库层中对应软件引擎对所述目标事件进行响应。
3.根据权利要求2所述的内容生成器,其特征在于,所述软件库层还用于:向所述运行时环境层提供所述第二类API,并基于所述第二类API封装得到所述第一类API,将所述第一类API提供给所述框架层,以供所述框架层面向应用开发人员提供所述第一类API;
或者
所述软件库层还用于:向所述运行时环境层提供所述第二类API;所述运行时环境层还用于:基于所述第二类API封装得到所述第一类API,将所述第一类API提供给所述框架层,以供所述框架层面向应用开发人员提供所述第一类API。
4.根据权利要求2或3所述的内容生成器,其特征在于,所述3D场景效果编辑模块具体用于:
响应所述3D场景静态资源的加载操作,启动所述运行时容器,在所述运行时容器提供的运行时环境中运行所述3D场景静态资源,以得到3D静态画面;
响应所述3D静态画面上的编辑操作,为所述3D场景静态资源编辑3D场景动态信息,以得到第一中间态资源数据;
响应场景效果查看操作,重新调用所述运行时容器,在所述运行时容器提供的运行时环境中运行所述第一中间态资源数据,得到第一中间态3D画面;
在所述第一中间态3D画面不满足场景效果的情况下,调整所述3D场景动态信息至得到满足场景效果,以得到3D场景资源数据。
5.根据权利要求2或3所述的内容生成器,其特征在于,所述3D应用逻辑编辑模块具体用于:
响应所述3D场景资源数据的加载操作,启动所述运行时容器,在所述运行时容器提供的运行时环境中运行所述3D场景资源数据,以得到第一中间态3D画面;
响应所述应用逻辑代码的编辑操作,根据所述3D场景资源数据和所述应用逻辑代码生成第二中间态资源数据,并重新调用所述运行时容器,在所述运行时容器提供的运行时环境中运行所述第二中间态资源数据,以得到第二中间态3D画面;
在所述第二中间态3D画面不满足交互效果的情况下,调整所述应用逻辑代码至满足交互效果,以得到所述XR应用的应用内容。
6.一种XR应用编辑方法,其特征在于,应用于内容生成器,所述内容生成器中集成有运行时容器,所述运行时容器用于在所述XR应用生成过程和运行过程中提供运行时环境,所述方法包括:
响应XR应用生成操作,加载3D场景静态资源;
基于所述运行时容器提供的运行时环境,为所述3D场景静态资源添加3D场景动态信息,以得到3D场景资源数据;
基于所述运行时容器提供的运行时环境,为所述3D场景资源数据编辑应用逻辑代码,以得到所述XR应用的应用内容;
其中,所述应用内容与所述运行时容器形成所述XR应用,所述XR应用中的运行时容器在所述XR应用运行过程中为所述应用内容提供运行时环境;
所述运行时容器包括:框架层、运行时环境层以及软件库层,所述软件库层包括多种软件引擎,用于提供所述多种软件引擎的第二类应用编程接口API,以供根据所述第二类API封装得到应用开发人员编写所述XR应用的应用逻辑代码所需的第一类API;所述框架层用于在所述XR应用生成过程或运行过程中感知目标事件,所述目标事件对应的第一类API由所述第二类API中的目标API封装得到,并通过所述运行时环境层调用所述软件库层中与目标API对应的软件引擎对所述目标事件进行响应。
7.根据权利要求6所述的方法,其特征在于,基于所述运行时容器提供的运行时环境,为所述3D场景静态资源添加3D场景动态信息,以得到3D场景资源数据,包括:
响应所述3D场景静态资源的加载操作,启动所述运行时容器,在所述运行时容器提供的运行时环境中运行所述3D场景静态资源,以得到3D静态画面;
响应所述3D静态画面上的编辑操作,为所述3D场景静态资源编辑3D场景动态信息,以得到第一中间态资源数据;
响应场景效果查看操作,重新调用所述运行时容器,在所述运行时容器提供的运行时环境中运行所述第一中间态资源数据,得到第一中间态3D画面;
在所述第一中间态3D画面不满足场景效果的情况下,调整所述3D场景动态信息至得到满足场景效果,以得到3D场景资源数据。
8.根据权利要求7所述的方法,其特征在于,
在所述运行时容器提供的运行时环境中运行所述3D场景静态资源或所述第一中间态资源数据,以得到3D静态画面或第一中间态3D画面,包括:
所述框架层感知所述3D场景静态资源的第一加载事件或所述3D静态画面上的第一编辑事件,运行所述第一加载事件或所述第一编辑事件对应的至少一个第一类API的函数实体;在运行到所述函数实体中封装的第一目标API时,将所述第一目标API提供给所述运行时环境层,所述第一目标API属于第二类API;
所述运行时环境层根据所述第一目标API,调用所述软件库层中对应软件引擎对所述第一加载事件或所述第一编辑事件进行响应;
其中,所述第一类API是对所述第二类API进行封装得到的,所述第二类API是所述软件库层中包含的软件引擎对应的API,所述目标事件包括第一加载事件或第一编辑事件。
9.根据权利要求6-7任一项所述的方法,其特征在于,基于所述运行时容器提供的运行时环境,为所述3D场景资源数据编辑应用逻辑代码,以得到所述XR应用的应用内容,包括:
响应所述3D场景资源数据的加载操作,启动所述运行时容器,在所述运行时容器提供的运行时环境中运行所述3D场景资源数据,以得到第一中间态3D画面;
响应所述应用逻辑代码的编辑操作,根据所述3D场景资源数据和所述应用逻辑代码生成第二中间态资源数据,并重新调用所述运行时容器,在所述运行时容器提供的运行时环境中运行所述第二中间态资源数据,以得到第二中间态3D画面;
在所述第二中间态3D画面不满足交互效果的情况下,调整所述应用逻辑代码至满足交互效果,以得到所述XR应用的应用内容。
10.根据权利要求9所述的方法,其特征在于,
在所述运行时容器提供的运行时环境中运行所述3D场景资源数据或所述第二中间态资源数据,以得到第一中间态3D画面或第二中间态3D画面,包括:
所述框架层感知所述3D场景资源数据的第二加载事件或所述应用逻辑代码的第二编辑事件,运行所述第二加载事件或所述第二编辑事件对应的至少一个第一类API的函数实体;在运行到所述函数实体中封装的第二目标API时,将所述第二目标API提供给所述运行时环境层,所述第二目标API属于第二类API;
所述运行时环境层根据所述第二目标API,调用所述软件库层中对应软件引擎对所述第二加载事件或第二编辑事件进行响应;
其中,所述第一类API是对所述第二类API进行封装得到的,所述第二类API是所述软件库层中包含的软件引擎对应的API,所述目标事件包括第二加载事件或第二编辑事件。
11.一种电子设备,其特征在于,包括存储器和处理器,所述存储器,用于存储计算机程序;所述处理器与所述存储器耦合,用于执行所述计算机程序,以用于实现权利要求6-10中任一项所述方法中的步骤。
12.一种存储有计算机程序的计算机可读存储介质,其特征在于,当所述计算机程序被处理器执行时,致使所述处理器能够实现权利要求6-10中任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310620776.2A CN116339737B (zh) | 2023-05-26 | 2023-05-26 | Xr应用编辑方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310620776.2A CN116339737B (zh) | 2023-05-26 | 2023-05-26 | Xr应用编辑方法、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116339737A CN116339737A (zh) | 2023-06-27 |
CN116339737B true CN116339737B (zh) | 2023-10-20 |
Family
ID=86886221
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310620776.2A Active CN116339737B (zh) | 2023-05-26 | 2023-05-26 | Xr应用编辑方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116339737B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117009029B (zh) * | 2023-05-26 | 2024-09-24 | 浙江天猫技术有限公司 | Xr应用与内容运行方法、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20160001550A (ko) * | 2014-06-27 | 2016-01-06 | 주식회사 디지털프로그 | 반복순환 구조의 게임 장면 구현 및 동작 방법 |
CN109887097A (zh) * | 2019-02-01 | 2019-06-14 | 河南众诚信息科技股份有限公司 | 一种vr内容开发平台及方法 |
CN110554873A (zh) * | 2019-08-20 | 2019-12-10 | 上海沣沅星科技有限公司 | 用于实现人机交互界面的系统、计算机设备及存储介质 |
CN110750282A (zh) * | 2019-10-14 | 2020-02-04 | 支付宝(杭州)信息技术有限公司 | 用于运行应用程序的方法、装置及gpu节点 |
CN114625353A (zh) * | 2020-12-14 | 2022-06-14 | 电科云(北京)科技有限公司 | 模型框架代码生成系统及方法 |
CN114661284A (zh) * | 2022-03-30 | 2022-06-24 | 北京字节跳动网络技术有限公司 | 游戏编辑方法、游戏运行方法、装置及计算机设备 |
CN115964026A (zh) * | 2023-01-10 | 2023-04-14 | 北京鑫锐诚毅数字科技有限公司 | 一种基于领域模型的vr虚拟仿真低代码开发系统 |
CN116048515A (zh) * | 2023-02-03 | 2023-05-02 | 北京新唐思创教育科技有限公司 | 一种虚拟场景编辑方法、装置、设备和可读存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10628134B2 (en) * | 2016-09-16 | 2020-04-21 | Oracle International Corporation | Generic-flat structure rest API editor |
US20230108560A1 (en) * | 2021-10-04 | 2023-04-06 | Changfeng C Wang | Methods and Systems for Representation, Composition and Execution of Artificial Intelligence Centric Applications |
-
2023
- 2023-05-26 CN CN202310620776.2A patent/CN116339737B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20160001550A (ko) * | 2014-06-27 | 2016-01-06 | 주식회사 디지털프로그 | 반복순환 구조의 게임 장면 구현 및 동작 방법 |
CN109887097A (zh) * | 2019-02-01 | 2019-06-14 | 河南众诚信息科技股份有限公司 | 一种vr内容开发平台及方法 |
CN110554873A (zh) * | 2019-08-20 | 2019-12-10 | 上海沣沅星科技有限公司 | 用于实现人机交互界面的系统、计算机设备及存储介质 |
CN110750282A (zh) * | 2019-10-14 | 2020-02-04 | 支付宝(杭州)信息技术有限公司 | 用于运行应用程序的方法、装置及gpu节点 |
CN114625353A (zh) * | 2020-12-14 | 2022-06-14 | 电科云(北京)科技有限公司 | 模型框架代码生成系统及方法 |
CN114661284A (zh) * | 2022-03-30 | 2022-06-24 | 北京字节跳动网络技术有限公司 | 游戏编辑方法、游戏运行方法、装置及计算机设备 |
CN115964026A (zh) * | 2023-01-10 | 2023-04-14 | 北京鑫锐诚毅数字科技有限公司 | 一种基于领域模型的vr虚拟仿真低代码开发系统 |
CN116048515A (zh) * | 2023-02-03 | 2023-05-02 | 北京新唐思创教育科技有限公司 | 一种虚拟场景编辑方法、装置、设备和可读存储介质 |
Non-Patent Citations (3)
Title |
---|
Bruno Sielly J. Costa ; Clauber G. Bezerra ; Luiz Affonso H. G. de Oliveira.A multistage fuzzy controller: Toolbox for industrial applications.《2012 IEEE International Conference on Industrial Technology》.2012,第1142-1147页. * |
Spring环境下的敏捷ORM框架设计与实现;伍文彬;;软件导刊(第05期);全文 * |
基于Docker的容器资源管理系统的设计与实现;王密泉;《中国优秀硕士学位论文全文数据库 信息科技辑》;第I138-564页 * |
Also Published As
Publication number | Publication date |
---|---|
CN116339737A (zh) | 2023-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11902377B2 (en) | Methods, systems, and computer program products for implementing cross-platform mixed-reality applications with a scripting framework | |
CN116302366B (zh) | 面向终端开发的xr应用开发系统与方法、设备及介质 | |
US12079626B2 (en) | Methods and systems for creating applications using scene trees | |
US11087430B2 (en) | Customizable render pipelines using render graphs | |
US20200004598A1 (en) | Server kit and methods therefor | |
US10628013B2 (en) | Closed-loop display control for multi-dimensional user interface generation | |
JP2024059715A (ja) | 複合現実システムを用いて仮想3次元空間内のウェブページを管理および表示すること | |
CN110874217A (zh) | 快应用的界面显示方法、装置及存储介质 | |
CN110865863B (zh) | 快应用的界面显示方法、装置及存储介质 | |
CN116339737B (zh) | Xr应用编辑方法、设备及存储介质 | |
CN117009029B (zh) | Xr应用与内容运行方法、设备及存储介质 | |
CN117392301B (zh) | 图形渲染方法、系统、装置、电子设备及计算机存储介质 | |
CN113744377A (zh) | 一种动画处理系统、方法、装置、设备及介质 | |
CN113672280B (zh) | 动画播放程序包编写方法、装置、电子设备及存储介质 | |
CN117065357A (zh) | 媒体数据处理方法、装置、计算机设备和存储介质 | |
CN111265875A (zh) | 一种用于游戏角色装备展示的方法与设备 | |
CN115170707B (zh) | 基于应用程序框架的3d图像实现系统及方法 | |
EP4328863A1 (en) | 3d image implementation method and system | |
CN117596377B (zh) | 画面推流方法、装置、电子设备、存储介质及程序产品 | |
CN117234627A (zh) | 一种ar小程序平台 | |
CN116059643A (zh) | 游戏渲染方法和渲染方法、设备及存储介质 | |
Jackson | Virtual reality technology demos for an experimental computer science course | |
CN117519653A (zh) | 一种基于PlayCanvas的微信小程序AR互动实现方法 | |
CN114816411A (zh) | 增强现实模型转换的方法、装置、设备及存储介质 | |
Nardone et al. | A Look into the Future: Augmented reality (AR) and Android TV |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |