一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种3D场景动态构建的方法及其系统与流程

2021-10-27 20:09:00 来源:中国专利 TAG:场景 构建 方法 动态 系统

一种3d场景动态构建的方法及其系统
技术领域
1.本发明涉及3d场景制作技术领域,特别是一种3d场景动态构建的方法及其系统。


背景技术:

2.现有的3d场景的制作的方式:使用地形生成编辑器在模拟自然地形效果上有很大的优势,但是也有局限性。在表现比较规整的地形,比如一现代化城市,初具规模的小镇,地下宫殿等等就存在这样的局限。因为使用地形编辑器建立地形时,地表贴图的数量不能太多,选择的地表贴图的数量越多游戏的运行效率就越低,适合选择2~3张贴图。而城市中的地面上所需要的贴图会非常多,车行道、人行道、草坪等远不止三张,而且城镇的街道是非常规整的,这是地形生成编辑器不能做到的。
3.采用编辑器对3d场景的生成方式,对3d场景生成的局限性高,通常只针对某一种类型的场景,且不支持场景行为的生成与控制,拓展困难,无法广泛使用。


技术实现要素:

4.为克服上述问题,本发明的目的是提供一种3d场景动态构建的方法,解决了3d场景使用复杂、无法动态构建等问题。
5.本发明采用以下方案实现:一种3d场景动态构建的方法,所述方法基于场景的json数据格式来生成统一的通用场景数据结构,所述方法为:
6.对象工厂模块注册所有程序集中的处理器,该处理器包括场景部件处理器、场景处理器;
7.输入场景创建数据,对象工厂模块获取场景,并创建处理器实例,对象工厂模块判断处理器实例是否有效,否,重新创建处理器实例;是,则,创建场景部件处理器或场景处理器;
8.数据转换模块将场景创建数据的json数据格式转化为场景数据结构,从场景数据结构中读取场景部件创建数据;
9.通过场景处理器分发场景部件创建数据,场景部件处理器接收场景部件创建数据,并通过场景部件创建数据创建场景部件,当收到用户交互数据时触发对应的处理事件,通过场景处理器分发场景交互数据,场景部件处理器模块通过场景交互数据更新场景部件,实现完备的场景交互系统。
10.进一步的,所述场景的json数据格式或json文件路径,通过数据转换模块转换为统一的通用场景数据结构,该数据转换模块的实现方式具体为:步骤s41、输入场景创建数据,判断输入场景创建数据类型是否是json数据格式,是,进入步骤s42;否,继续判断是否是json文件路径;否,结束流程;是,读取json文件中的json数据,进入步骤s42;
11.步骤s42、将json数据识别为json实例类型,创建一个新场景数据结构;
12.步骤s43、将json数据中的基础数据填充到场景数据结构的对应字段值中,无匹配字段的数据填充到场景数据结构的拓展字段队列中,从而形成通用场景数据结构。
13.进一步的,所述对象工厂模块注册所有程序集中的处理器,具体为:步骤s11、获取处理器基础所在程序集,获取当前应用程序中的所有程序集;
14.步骤s12、筛选所有程序集中与基础所在程序集有引用关系的程序集;
15.步骤s13、将这些程序集加入一个程序集队列,判断程序集队列是否为空,是,完成注册,退出流程;否,进入步骤s14;
16.步骤s14、从程序集队列中读取一个程序集,
17.步骤s15、获取程序集中的所有类的类型,筛选其中继承自处理器基础类的类型,将这些类的类型加入一个类型队列;
18.步骤s16、判断类型队列是否为空;否,进入步骤s17,是,判断程序集队列中是否还有其它程序集;否,完成注册,退出流程;是,进入步骤s14;
19.步骤s17、从类型队列中读取一个类的类型,创建一个类的类型的实例;
20.步骤s18、判断是否创建成功,是,获取实例上的类型字段;进入步骤s19,否,判断类型队列中是否还有其它类的类型,是,进入步骤步骤s17,否,判断程序集队列中是否还有其它程序集;否,完成注册,退出流程;是,进入步骤s14;
21.步骤s19、判断此类型字段是否已经被处理器集合注册,否,将此类的类型注册到处理器集合中;进入步骤s20;是,判断已注册类的类型与此类型字段的类型是否相同,是,打印提示信息“重复注册”,并退出流程;否,打印提示信息“注册类型变更”;将此类的类型覆盖处理器集合中的注册;
22.步骤s20、判断此类的类型是否继承自静态处理器基础;否,销毁此类的类型的实例;进入步骤s22;是,初始化此类的类型的实例,
23.步骤s21、判断此类型字段是否已经被静态处理器集合注册,是,将此类的类型实例覆盖静态处理器集合中的注册;否,将此类的类型实例注册到静态处理器集合中;
24.步骤s22、判断类型队列中是否还有其它类的类型;是,进入步骤步骤s17,否,判断程序集队列中是否还有其它程序集;否,完成注册,退出流程;是,进入步骤s14。
25.进一步的,所述场景处理器分发场景创建数据,具体为:步骤s31、输入场景创建数据;判断场景创建数据中是否包含需要网络请求的数据;是,网络请求获取场景创建数据,进入步骤s32,否,直接进入步骤s32;
26.步骤s32、判断场景创建数据中是否包含需要转换的json数据,是,数据转换模块将json数据转换为场景数据结构,进入步骤s33;否,进入步骤s33;
27.步骤s33、将场景数据结构记录到场景处理器中,从场景数据结构中读取场景部件创建数据,将场景部件创建数据加入一个创建数据队列,
28.步骤s34、判断创建数据队列是否为空,是,完成场景部件创建;否,进入步骤s35;
29.步骤s35、从创建数据队列中读取一个创建数据,获取创建数据中记录的处理器类型,对象工厂模块获取对应类型的处理器实例;
30.步骤s36、判断处理器实例是否有效,是,将对应类型的场景部件处理器实例记录到场景处理器的场景部件处理器队列中;进入步骤s37;否;进入步骤s38;
31.步骤s37、对应类型的场景部件处理器模块根据创建数据创建对应类型的场景部件对象
32.步骤s38、判断创建数据队列中是否还有其它创建数据,是,进入步骤s35;否,完成
场景部件创建,结束流程。
33.进一步的,所述场景部件处理器接收场景创建数据,并通过场景创建数据创建场景部件,具体为:步骤s51、输入场景部件创建数据,将场景部件创建数据记录到场景部件处理器中;
34.步骤s52、在场景中创建个场景部件处理器节点对象,读取部件创建数据中的子数据集合加入到创建数据队列;
35.步骤s53、判断创建数据队列是否为空,是,完成场景部件对象创建;否,进入步骤s54;
36.步骤s54、从创建数据队列中读取一个创建数据;
37.步骤s55、获取创建数据中记录的模板类型,从模板库中加载创建数据所需的创建模板;
38.步骤s56、判断创建模板是否有效,否,进入步骤s58,是,实例化创建模板,获得一个实例对象,将实例对象记录到场景部件实例对象集合中;
39.步骤s57、将实例对象节点放置于场景部件处理器节点对象下,根据创建数据更新实例对象配置数据;
40.步骤s58、判断创建数据队列中是否还有其它创建数据;是,进入步骤s54,否,完成场景部件对象创建。
41.进一步的,所述场景处理器分发场景交互数据,具体为:步骤s61、输入场景交互数据;判断交互数据中是否包含需要网络请求的数据;是,网络请求获取交互数据,步骤s62,否,直接进入步骤s62;
42.步骤s62、判断交互数据中是否包含需要转换的json数据,是,数据转换模块将json数据转换为场景数据结构,进入步骤s63;否,直接进入步骤s63;
43.步骤s63、将场景数据结构记录到场景处理器中,从场景数据中读取场景部件交互数据,将交互数据加入一个交互数据队列,
44.步骤s64、判断交互数据队列是否为空,是,完成场景创建;否,进入步骤s65;
45.步骤s65、从交互数据队列中读取一个交互数据,获取交互数据中记录的处理器类型,场景处理器的场景部件处理器队列中获取对应场景部件处理器实例;
46.步骤s66、判断处理器实例是否有效,是,对应类型的场景部件处理器模块根据交互数据更新对应类型的场景部件对象;进入步骤s67;否,进入步骤s67;
47.步骤s67、判断交互数据队列中是否还有其它交互数据,是,进入步骤s65;否,完成场景交互。
48.进一步的,所述场景部件处理器模块通过场景交互数据更新场景部件,具体为:步骤s71、输入场景部件创交互数据,对比场景部件处理器中记录的数据,获得变更数据队列,
49.步骤s72、判断变更数据队列是否为空,是,完成场景部件对象更新,并结束流程,否,进入步骤s73;
50.步骤s73、从变更数据队列中读取一个变更数据,获取变更数据中记录的节点id;根据节点id从实例对象集合中获取对应实例对象;
51.步骤s74、判断实例对象是否有效,是,根据变更数据更新实例对象配置数据,进入步骤s75,否,进入步骤s75;
52.步骤s75、判断变更数据队列中是否还有其它变更数据,是,进入步骤s73,否,完成场景部件对象更新,并结束流程。
53.进一步的,所述场景部件包括但不限于场景地形、场景静态物件、场景可交互物件、非玩家角色、玩家角色、自然环境、场景ui、场景摄像机、场景灯光、场景寻路控制、以及场景后期处理。
54.进一步的,所述用户交互数据包括但不限于控制角色移动、控制视角变化、调整场景设置参数、与可交互物件或非玩家角色的交互、以及退出场景交互,该些用户交互类型触发的数据。
55.本发明还提供了一种3d场景动态构建的系统,所述系统包括有一服务器,所述服务器中安装有对象工厂模块、场景处理器、场景部件处理器、数据转化模块;所述对象工厂模块注册所有程序集中的处理器,该处理器包括场景部件处理器、场景处理器;
56.输入场景创建数据,对象工厂模块获取场景,并创建处理器实例,对象工厂模块判断处理器实例是否有效,否,重新创建处理器实例;是,则,创建场景部件处理器或场景处理器;
57.数据转换模块将场景创建数据的json数据格式转化为场景数据结构,从场景数据结构中读取场景部件创建数据;
58.通过场景处理器分发场景部件创建数据,场景部件处理器接收场景部件创建数据,并通过场景部件创建数据创建场景部件,当收到用户交互数据时触发对应的处理事件,通过场景处理器分发场景交互数据,场景部件处理器模块通过场景交互数据更新场景部件,实现完备的场景交互系统。
59.进一步的,所述数据转换模块将场景的json数据或json文件路径,转换为统一的通用场景数据结构,该数据转换模块的实现方式具体为:步骤s41、输入场景创建数据,判断输入场景创建数据类型是否是json数据格式,是,进入步骤s42;否,继续判断是否是json文件路径;否,结束流程;是,读取json文件中的json数据,进入步骤s42;
60.步骤s42、将json数据识别为json实例类型,创建一个新场景数据结构;
61.步骤s43、将json数据中的基础数据填充到场景数据结构的对应字段值中,无匹配字段的数据填充到场景数据结构的拓展字段队列中,从而形成通用场景数据结构。
62.进一步的,所述对象工厂模块注册所有程序集中的处理器,具体为:步骤s11、获取处理器基础所在程序集,获取当前应用程序中的所有程序集;
63.步骤s12、筛选所有程序集中与基础所在程序集有引用关系的程序集;
64.步骤s13、将这些程序集加入一个程序集队列,判断程序集队列是否为空,是,完成注册,退出流程;否,进入步骤s14;
65.步骤s14、从程序集队列中读取一个程序集,
66.步骤s15、获取程序集中的所有类的类型,筛选其中继承自处理器基础类的类型,将这些类的类型加入一个类型队列;
67.步骤s16、判断类型队列是否为空;否,进入步骤s17,是,判断程序集队列中是否还有其它程序集;否,完成注册,退出流程;是,进入步骤s14;
68.步骤s17、从类型队列中读取一个类的类型,创建一个类的类型的实例;
69.步骤s18、判断是否创建成功,是,获取实例上的类型字段;进入步骤s19,否,判断
类型队列中是否还有其它类的类型,是,进入步骤步骤s17,否,判断程序集队列中是否还有其它程序集;否,完成注册,退出流程;是,进入步骤s14;
70.步骤s19、判断此类型字段是否已经被处理器集合注册,否,将此类的类型注册到处理器集合中;进入步骤s20;是,判断已注册类的类型与此类型字段的类型是否相同,是,打印提示信息“重复注册”,并退出流程;否,打印提示信息“注册类型变更”;将此类的类型覆盖处理器集合中的注册;
71.步骤s20、判断此类的类型是否继承自静态处理器基础;否,销毁此类的类型的实例;进入步骤s22;是,初始化此类的类型的实例,
72.步骤s21、判断此类型字段是否已经被静态处理器集合注册,是,将此类的类型实例覆盖静态处理器集合中的注册;否,将此类的类型实例注册到静态处理器集合中;
73.步骤s22、判断类型队列中是否还有其它类的类型;是,进入步骤步骤s17,否,判断程序集队列中是否还有其它程序集;否,完成注册,退出流程;是,进入步骤s14。
74.本发明的有益效果在于:本发明应用于所有类型3d场景的生成与交互过程,和常规的3d场景开发不同,本发明通过将场景创建及其交互行为的描述信息进行提取快速生成3d场景并执行场景的交互行为,并支持交互逻辑的反馈;解决了3d场景使用复杂、无法动态构建等问题。
附图说明
75.图1是本发明一实施例的方法流程示意图。
76.图2是本发明一实施例的数据转换模块将json数据转换为场景数据结构的示意图。
77.图3是本发明一实施例的对象工厂模块获取处理器流程示意图。
78.图4是本发明一实施例的对象工厂模块注册所有程序集中的处理器流程示意图。
79.图5是本发明一实施例的场景处理器模块分发场景部件创建数据示意图。
80.图6是本发明一实施例的场景部件处理器模块根据创建数据创建场景部件对象流程示意图。
81.图7是本发明一实施例的场景处理器模块分发场景交互数据的流程示意图。
82.图8是本发明一实施例的场景部件处理器模块根据交互数据更新场景部件对象的流程示意图。
具体实施方式
83.下面结合附图对本发明做进一步说明。
84.本发明提供了一种3d场景动态构建的方法,所述方法基于场景的json数据格式来生成统一的通用场景数据结构,所述方法为:
85.对象工厂模块注册所有程序集中的处理器,该处理器包括场景部件处理器、场景处理器;
86.输入场景创建数据,对象工厂模块获取场景,并创建处理器实例,对象工厂模块判断处理器实例是否有效,否,重新创建处理器实例;是,则,创建场景部件处理器或场景处理器;
87.数据转换模块将场景创建数据的json数据格式转化为场景数据结构,从场景数据结构中读取场景部件创建数据;
88.通过场景处理器分发场景部件创建数据,场景部件处理器接收场景部件创建数据,并通过场景部件创建数据创建场景部件,当收到用户交互数据时触发对应的处理事件,通过场景处理器分发场景交互数据,场景部件处理器模块通过场景交互数据更新场景部件,实现完备的场景交互系统。
89.下面结合一实施例对本发明作进一步说明:
90.请参阅图1所示,本发明的一种3d场景动态构建的方法,本发明基于场景json数据格式生成统一的通用场景数据结构,然后通过场景处理器模块分发场景创建数据,数据转换模块将场景创建数据的json数据格式转化为场景数据结构,从场景数据结构中读取场景部件创建数据;场景部件处理器模块基于场景部件创建数据创建场景部件。当收到用户交互数据时触发处理事件,通过场景处理器模块分发场景交互数据,场景部件处理器模块基于交互数据更新场景部件,实现完备的场景交互系统。
91.本发明中场景部件的定义包括但不限于场景地形、场景静态物件、场景可交互物件、非玩家角色、玩家角色、自然环境(天气、云、雾、风等)、场景ui、场景摄像机、场景灯光、场景寻路控制、场景后期处理等。
92.本发明中用户交互数据的定义包括但不限于控制角色移动、控制视角变化、调整场景设置参数、与可交互物件或非玩家角色的交互、退出场景交互等用户交互类型触发的数据。
93.本发明中“用户交互数据时触发处理事件”中处理事件的定义为将用户交互数据进行解析后会得到的事件,例如收到退出场景交互数据则触发的处理事件为退出场景事件、收到控制角色移动交互数据触发角色移动数据等。
94.其中,
95.1)数据转换模块
96.该模块为场景处理器模块提供数据转换的能力,实现将json数据格式或json文件路径转换为统一的场景数据结构。
97.2)对象工厂模块
98.该模块包含对象工厂模块获取处理器及注册所有程序集中的处理器两个功能,为场景处理器模块提供处理器的获取能力。
99.对象工厂模块中处理器的定义包括但不限于场景处理器、所有类型的场景部件处理器等。
100.所有程序集的定义为包含当前软件或游戏中所有可执行程序代码的集合,在其中可以检索所有当前软件或游戏中的任何代码。
101.所有程序集中的处理器的定义包括但不限于当前软件或游戏中可以检索到的处理器类型的程序代码。
102.3)场景处理器模块
103.该模块包含分发场景创建数据与分发场景交互数据两个功能,将场景数据解析为场景部件模块所需数据,推动场景部件模块创建与更新场景部件数据。
104.4)场景部件处理器模块
105.该模块包含场景部件创建与更新两个功能,通过将场景部件模板实例化为场景部件实例,根据创建数据或交互数据更新场景部件数据,实现场景部件的数据化管理。
106.场景部件处理器与场景处理器均属于处理器类型的程序代码。场景处理器负责场景整体的逻辑处理;场景部件处理器有多种,每种场景部件处理器与定义的场景部件对应,负责对应场景部件类型的逻辑处理;一个场景处理器可以控制多个场景部件处理器。
107.请参阅图2所示,所述场景的json数据格式或json文件路径,通过数据转换模块转换为统一的通用场景数据结构,该数据转换模块的实现方式具体为:步骤s41、输入场景创建数据,判断输入场景创建数据类型是否是json数据,是,进入步骤s42;否,继续判断是否是json文件路径;否,结束流程;是,读取json文件中的json数据,进入步骤s42;
108.步骤s42、将json数据识别为json实例类型,创建一个新场景数据结构;
109.步骤s43、将json数据中的基础数据填充到场景数据结构的对应字段值中,无匹配字段的数据填充到场景数据结构的拓展字段队列中,从而形成通用场景数据结构。
110.步骤s44、判断是否是根节点数据,是,记录为根节点场景数据;否,添加到父节点场景数据的子数据中;
111.步骤s45、判断json数据是否包含子数据;否,返回创建的根节点场景数据;并结束流程;是,重新创建一个新场景数据结构,并进入步骤s43。
112.如图3所示,本发明的所述对象工厂模块注册所有程序集中的处理器,具体为:步骤s11、获取处理器基础所在程序集,获取当前应用程序中的所有程序集;
113.步骤s12、筛选所有程序集中与基础所在程序集有引用关系的程序集;
114.步骤s13、将这些程序集加入一个程序集队列,判断程序集队列是否为空,是,完成注册,退出流程;否,进入步骤s14;
115.步骤s14、从程序集队列中读取一个程序集,
116.步骤s15、获取程序集中的所有类的类型,筛选其中继承自处理器基础类的类型,将这些类的类型加入一个类型队列;
117.步骤s16、判断类型队列是否为空;否,进入步骤s17,是,判断程序集队列中是否还有其它程序集;否,完成注册,退出流程;是,进入步骤s14;
118.步骤s17、从类型队列中读取一个类的类型,创建一个类的类型的实例;
119.步骤s18、判断是否创建成功,是,获取实例上的类型字段;进入步骤s19,否,判断类型队列中是否还有其它类的类型,是,进入步骤步骤s17,否,判断程序集队列中是否还有其它程序集;否,完成注册,退出流程;是,进入步骤s14;
120.步骤s19、判断此类型字段是否已经被处理器集合注册,否,将此类的类型注册到处理器集合中;进入步骤s20;是,判断已注册类的类型与此类型字段的类型是否相同,是,打印提示信息“重复注册”,并退出流程;否,打印提示信息“注册类型变更”;将此类的类型覆盖处理器集合中的注册;
121.步骤s20、判断此类的类型是否继承自静态处理器基础;否,销毁此类的类型的实例;进入步骤s22;是,初始化此类的类型的实例,
122.步骤s21、判断此类型字段是否已经被静态处理器集合注册,是,将此类的类型实例覆盖静态处理器集合中的注册;否,将此类的类型实例注册到静态处理器集合中;
123.步骤s22、判断类型队列中是否还有其它类的类型;是,进入步骤步骤s17,否,判断
程序集队列中是否还有其它程序集;否,完成注册,退出流程;是,进入步骤s14。
124.如图4所示,本发明的对象工厂模块获取处理器的具体流程:输入处理器类型;判断是否包含此类型的处理器,否,返回创建失败异常,停止,并结束流程;是,判断处理器是否为静态处理器,是,返回记录的静态处理器实例,停止,并结束流程;否,创建一个此类型的处理器实例,返回创建的处理器,停止,并结束流程。
125.如图5所示,本发明的所述场景处理器分发场景创建数据,具体为:步骤s31、输入场景创建数据;判断场景创建数据中是否包含需要网络请求的数据;是,网络请求获取场景创建数据,进入步骤s32,否,直接进入步骤s32;
126.步骤s32、判断场景创建数据中是否包含需要转换的json数据,是,数据转换模块将json数据转换为场景数据结构,进入步骤s33;否,进入步骤s33;
127.步骤s33、将场景数据结构记录到场景处理器中,从场景数据结构中读取场景部件创建数据,将场景部件创建数据加入一个创建数据队列,
128.步骤s34、判断创建数据队列是否为空,是,完成场景部件创建;否,进入步骤s35;
129.步骤s35、从创建数据队列中读取一个创建数据,获取创建数据中记录的处理器类型,对象工厂模块获取对应类型的处理器实例;
130.步骤s36、判断处理器实例是否有效,是,将对应类型的场景部件处理器实例记录到场景处理器的场景部件处理器队列中;进入步骤s37;否;进入步骤s38;
131.步骤s37、对应类型的场景部件处理器模块根据创建数据创建对应类型的场景部件对象
132.步骤s38、判断创建数据队列中是否还有其它创建数据,是,进入步骤s35;否,完成场景部件创建,结束流程。
133.如图6所示,本发明的所述场景部件处理器接收场景创建数据,并通过场景创建数据创建场景部件,具体为:步骤s51、输入场景部件创建数据,将场景部件创建数据记录到场景部件处理器中;
134.步骤s52、在场景中创建个场景部件处理器节点对象,读取部件创建数据中的子数据集合加入到创建数据队列;
135.步骤s53、判断创建数据队列是否为空,是,完成场景部件对象创建;否,进入步骤s54;
136.步骤s54、从创建数据队列中读取一个创建数据;
137.步骤s55、获取创建数据中记录的模板类型,从模板库中加载创建数据所需的创建模板;
138.步骤s56、判断创建模板是否有效,否,进入步骤s58,是,实例化创建模板,获得一个实例对象,将实例对象记录到场景部件实例对象集合中;
139.步骤s57、将实例对象节点放置于场景部件处理器节点对象下,根据创建数据更新实例对象配置数据;
140.步骤s58、判断创建数据队列中是否还有其它创建数据;是,进入步骤s54,否,完成场景部件对象创建。
141.如图7所示,本发明的所述场景处理器分发场景交互数据,具体为:步骤s61、输入场景交互数据;判断交互数据中是否包含需要网络请求的数据;是,网络请求获取交互数
据,步骤s62,否,直接进入步骤s62;
142.步骤s62、判断交互数据中是否包含需要转换的json数据,是,数据转换模块将json数据转换为场景数据结构,进入步骤s63;否,直接进入步骤s63;
143.步骤s63、将场景数据结构记录到场景处理器中,从场景数据中读取场景部件交互数据,将交互数据加入一个交互数据队列,
144.步骤s64、判断交互数据队列是否为空,是,完成场景创建;否,进入步骤s65;
145.步骤s65、从交互数据队列中读取一个交互数据,获取交互数据中记录的处理器类型,场景处理器的场景部件处理器队列中获取对应场景部件处理器实例;
146.步骤s66、判断处理器实例是否有效,是,对应类型的场景部件处理器模块根据交互数据更新对应类型的场景部件对象;进入步骤s67;否,进入步骤s67;
147.步骤s67、判断交互数据队列中是否还有其它交互数据,是,进入步骤s65;否,完成场景交互。
148.如图8所示,本发明的所述场景部件处理器模块通过场景交互数据更新场景部件,具体为:步骤s71、输入场景部件创交互数据,对比场景部件处理器中记录的数据,获得变更数据队列,
149.步骤s72、判断变更数据队列是否为空,是,完成场景部件对象更新,并结束流程,否,进入步骤s73;
150.步骤s73、从变更数据队列中读取一个变更数据,获取变更数据中记录的节点id;根据节点id从实例对象集合中获取对应实例对象;
151.步骤s74、判断实例对象是否有效,是,根据变更数据更新实例对象配置数据,进入步骤s75,否,进入步骤s75;
152.步骤s75、判断变更数据队列中是否还有其它变更数据,是,进入步骤s73,否,完成场景部件对象更新,并结束流程。
153.另外,本发明还提供了一种3d场景动态构建的系统,所述系统包括有一服务器,所述服务器中安装有对象工厂模块、场景处理器、场景部件处理器、数据转化模块;所述对象工厂模块注册所有程序集中的处理器,该处理器包括场景部件处理器、场景处理器;
154.输入场景创建数据,对象工厂模块获取场景,并创建处理器实例,对象工厂模块判断处理器实例是否有效,否,重新创建处理器实例;是,则,创建场景部件处理器或场景处理器;
155.数据转换模块将场景创建数据的json数据格式转化为场景数据结构,从场景数据结构中读取场景部件创建数据;
156.通过场景处理器分发场景部件创建数据,场景部件处理器接收场景部件创建数据,并通过场景部件创建数据创建场景部件,当收到用户交互数据时触发对应的处理事件,通过场景处理器分发场景交互数据,场景部件处理器模块通过场景交互数据更新场景部件,实现完备的场景交互系统。
157.其中,所述数据转换模块将场景的json数据或json文件路径,转换为统一的通用场景数据结构,该数据转换模块的实现方式具体为:步骤s41、输入场景创建数据,判断输入场景创建数据类型是否是json数据,是,进入步骤s42;否,继续判断是否是json文件路径;否,结束流程;是,读取json文件中的json数据,进入步骤s42;
158.步骤s42、将json数据识别为json实例类型,创建一个新场景数据结构;
159.步骤s43、将json数据中的基础数据填充到场景数据结构的对应字段值中,无匹配字段的数据填充到场景数据结构的拓展字段队列中,从而形成通用场景数据结构。
160.步骤s44、判断是否是根节点数据,是,记录为根节点场景数据;否,添加到父节点场景数据的子数据中;
161.步骤s45、判断json数据是否包含子数据;否,返回创建的根节点场景数据;并结束流程;是,重新创建一个新场景数据结构,并进入步骤s43。
162.所述对象工厂模块注册所有程序集中的处理器,具体为:步骤s11、获取处理器基础所在程序集,获取当前应用程序中的所有程序集;
163.步骤s12、筛选所有程序集中与基础所在程序集有引用关系的程序集;
164.步骤s13、将这些程序集加入一个程序集队列,判断程序集队列是否为空,是,完成注册,退出流程;否,进入步骤s14;
165.步骤s14、从程序集队列中读取一个程序集,
166.步骤s15、获取程序集中的所有类的类型,筛选其中继承自处理器基础类的类型,将这些类的类型加入一个类型队列;
167.步骤s16、判断类型队列是否为空;否,进入步骤s17,是,判断程序集队列中是否还有其它程序集;否,完成注册,退出流程;是,进入步骤s14;
168.步骤s17、从类型队列中读取一个类的类型,创建一个类的类型的实例;
169.步骤s18、判断是否创建成功,是,获取实例上的类型字段;进入步骤s19,否,判断类型队列中是否还有其它类的类型,是,进入步骤步骤s17,否,判断程序集队列中是否还有其它程序集;否,完成注册,退出流程;是,进入步骤s14;
170.步骤s19、判断此类型字段是否已经被处理器集合注册,否,将此类的类型注册到处理器集合中;进入步骤s20;是,判断已注册类的类型与此类型字段的类型是否相同,是,打印提示信息“重复注册”,并退出流程;否,打印提示信息“注册类型变更”;将此类的类型覆盖处理器集合中的注册;
171.步骤s20、判断此类的类型是否继承自静态处理器基础;否,销毁此类的类型的实例;进入步骤s22;是,初始化此类的类型的实例,
172.步骤s21、判断此类型字段是否已经被静态处理器集合注册,是,将此类的类型实例覆盖静态处理器集合中的注册;否,将此类的类型实例注册到静态处理器集合中;
173.步骤s22、判断类型队列中是否还有其它类的类型;是,进入步骤步骤s17,否,判断程序集队列中是否还有其它程序集;否,完成注册,退出流程;是,进入步骤s14。
174.总之,本发明应用于所有类型3d场景的生成与交互过程,和常规的3d场景开发不同,本发明通过将场景创建及其交互行为的描述信息进行提取快速生成3d场景并执行场景的交互行为,并支持交互逻辑的反馈;解决了3d场景使用复杂、无法动态构建等问题。
175.以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜