基于Unity3D的高自由度实验类三维虚拟仿真方法和系统
技术领域
本发明涉及虚拟实验仿真技术领域,具体而言涉及一种基于Unity3D的高自由度实验类三维虚拟仿真方法和系统。
背景技术
现今三维虚拟仿真已广泛应用于教学,教师通过仿真系统,能够将知识点十分形象、逼真、生动的表现出来,提高学生学习的代入感,增加课堂教学效果。为了提高实验教学的质量和效率,三维虚拟仿真实验也逐渐成为实验教学改革的重点,研发人员已经开发出了很多实验类的三维虚拟仿真系统。
现有实验类三维仿真系统多数有固定的操作流程,此类系统要求操作者必须以固定且正确的流程进行操作,自由度较低,甚至有些仿真系统仅仅以播放动画来表达实验流程,用户参与感较差。而对用户操作的行为进行诸多限制,会导致虚拟仿真系统中用户犯错的概率大大降低,操作练习的效果差强人意。因此,此类仿真系统多用作展示或者教师教学使用,并不能达到学生自主操作练习或者教师进行操作考核的目的。
另外,现有的仿真系统普遍往往由于对用户考察深度不够,导致操作后可能仅有一种状态发生,仿真系统自由度较低。在真实世界中,实际用于操作的物体有很多种状态,当物体间相互接触进行相应操作后,又会产生很多新的状态,因此高自由度的操作会导致物体的状态发生多种变化,这些变化抽象后的数据量十分庞大,会使得系统管理变得困难。
发明内容
本发明目的在于提供一种基于Unity3D的高自由度实验类三维虚拟仿真方法和系统,预先根据物体间的状态变化规律定义出规则,操作过程中根据物体的属性判断是否利用规则改变其状态,一套完整的规则可以基本涵盖用户所有的操作情况以及操作后的处理情况,使用户在操作时自由度更高,便于用户操作训练以及教学考核。
为达成上述目的,结合图1,本发明提出一种基于Unity3D的高自由度实验类三维虚拟仿真方法,所述方法包括:
S1:预先根据物体间的状态变化规律以定义通用规则和指定规则,所述通用规则是指适用于至少两种实验操作的实验规则,所述指定规则是指适用于特定实验中指定操作的实验规则;
S2:接收用户输入的针对任意一个实体虚拟模型的操作指令,判断所述操作指令是否满足通用规则,如果满足,按照通用规则更新所述实体虚拟模型的状态,进入步骤S5,否则进入步骤S3;
S3:判断所述操作指令是否满足指定规则,如果满足,按照指定规则更新所述实体虚拟模型的状态,进入步骤S5,否则进入步骤S4;
S4:对时间进行还原处理,将用户输出的操作指令叠加在实体虚拟模型,计算解析出所述操作指令对实体虚拟模型状态的影响值,更新实体虚拟模型的状态;
S5:结束流程。
进一步的实施例中,所述实体虚拟模型的状态包括实体属性和相关属性;
所述实体属性包括实体虚拟模型的基础状态以及经操作后的若干种变化状态;
所述相关属性包括通过Unity3D赋予实体虚拟模型的属性。
进一步的实施例中,所述相关属性包括GameObject、Transform、Animator、UI。
进一步的实施例中,所述方法还包括:
步骤S1中,预先根据物体间的状态变化规律以定义非法规则;
接收用户输入的针对任意一个实体虚拟模型的操作指令,判断所述操作指令是否满足非法规则,如果满足,判定该操作指令为错误指令。
进一步的实施例中,所述方法还包括:
将通用规则和/或指定规则结合构成新的指定规则。
基于前述方法,本发明提及一种基于Unity3D的高自由度实验类三维虚拟仿真系统,所述系统包括模型管理模块、事件管理模块、规则管理模块;
所述模型管理模块包括实体模型库和场景模型库,所述实体模型库中包括若干个实体虚拟模型、以及对应的实体属性管理子模块和相关属性管理子模块;
所述事件管理模块包括用于接收用户输入的输入操作单元、以及用于输出对操作反馈的事件反馈单元;
所述规则管理模块包括通用规则库和指定规则库,所述通用规则和指定规则是指一指定实验操作指令作用在实体虚拟模型上,导致实体虚拟模型状态变更的规律;
所述模型管理模块分别和事件管理模块、规则管理模块连接,所述输入操作单元与外接的输入设备连接,接收用户输入的操作指令,将之解析后发送至模型管理模块;
所述模型管理模块接收输入操作单元发送的操作指令,判断该操作指令是否满足通用规则和/或指定规则,如果满足,根据该操作指令适用的通用规则和/或指定规则以更新实体虚拟模型的状态参数,否则,将用户输入的操作指令对时间进行还原处理,发送至事件反馈单元;
所述事件反馈单元将接收的操作指令叠加在实体虚拟模型上,计算解析出所述操作指令对实体虚拟模型状态的影响值,更新实体虚拟模型的状态;
所述事件反馈单元将更新后的实体虚拟模型输出至用户虚拟设备的显示单元。
进一步的实施例中,所述规则管理模块设置一规则定义接口,用以接收用户输入的新的通用规则和/或指定规则。
进一步的实施例中,所述实验操作包括生物实验操作或者化学实验操作。
进一步的实施例中,所述外接的输入设备包括键鼠、VR设备和/或AR设备。
以上本发明的技术方案,与现有相比,其显著的有益效果在于:
1)规则管理模块的指定规则可根据实际实验操作更改或者替换,选择场景模型库和实体模型库中相应的模型以及通用规则,可形成不同指定实验的仿真系统,使用户在操作时自由度更高。
2)能够自由设置通用规则、指定规则、非法规则,便于用户操作训练以及教学考核。
3)运算速度快。
4)可以自行添加指定规则,甚至模型和场景以及事件触发条件,不断扩充各模块,提升该系统的高自由度。
5)实体虚拟模型的属性自定义,结合规则定义出多种状态以满足高自由度操作。
应当理解,前述构思以及在下面更加详细地描述的额外构思的所有组合只要在这样的构思不相互矛盾的情况下都可以被视为本公开的发明主题的一部分。另外,所要求保护的主题的所有组合都被视为本公开的发明主题的一部分。
结合附图从下面的描述中可以更加全面地理解本发明教导的前述和其他方面、实施例和特征。本发明的其他附加方面例如示例性实施方式的特征和/或有益效果将在下面的描述中显见,或通过根据本发明教导的具体实施方式的实践中得知。
附图说明
附图不意在按比例绘制。在附图中,在各个图中示出的每个相同或近似相同的组成部分可以用相同的标号表示。为了清晰起见,在每个图中,并非每个组成部分均被标记。现在,将通过例子并参考附图来描述本发明的各个方面的实施例,其中:
图1是本发明的基于Unity3D的高自由度实验类三维虚拟仿真方法的流程图。
图2是本发明的基于Unity3D的高自由度实验类三维虚拟仿真系统框架示意图。
图3是本发明的实体虚拟模型状态更新内容示意图。
具体实施方式
为了更了解本发明的技术内容,特举具体实施例并配合所附图式说明如下。
在本公开中参照附图来描述本发明的各方面,附图中示出了许多说明的实施例。本公开的实施例不必定义在包括本发明的所有方面。应当理解,上面介绍的多种构思和实施例,以及下面更加详细地描述的那些构思和实施方式可以以很多方式中任意一种来实施,这是因为本发明所公开的构思和实施例并不限于任何实施方式。另外,本发明公开的一些方面可以单独使用,或者与本发明公开的其他方面的任何适当组合来使用。
结合图1,本发明提出一种基于Unity3D的高自由度实验类三维虚拟仿真方法,所述方法包括:
S1:预先根据物体间的状态变化规律以定义通用规则和指定规则,所述通用规则是指适用于至少两种实验操作的实验规则,所述指定规则是指适用于特定实验中指定操作的实验规则。
S2:接收用户输入的针对任意一个实体虚拟模型的操作指令,判断所述操作指令是否满足通用规则,如果满足,按照通用规则更新所述实体虚拟模型的状态,进入步骤S5,否则进入步骤S3。
S3:判断所述操作指令是否满足指定规则,如果满足,按照指定规则更新所述实体虚拟模型的状态,进入步骤S5,否则进入步骤S4。
S4:对时间进行还原处理,将用户输出的操作指令叠加在实体虚拟模型,计算解析出所述操作指令对实体虚拟模型状态的影响值,更新实体虚拟模型的状态。
S5:结束流程。
进一步的实施例中,所述实验操作包括生物实验操作或者化学实验操作。
以化学实验操作为例,假设其中一个通用规则为:在X毫升浓度为n0的化学液体A中加Y毫升水,化学液体A和水之间不会发生化学反应,搅拌均匀后得到的溶液的体积为(X+Y),混合后的溶液的浓度为n0*X/(X+Y),同时混合溶液的颜色变浅,如果浓度为n0的化学液体A的色度为F,那么混合后的溶液颜色的色度为F*X/(X+Y)。
在一次化学实验中,系统创建了一只装有100毫升浓度为n0的化学液体A烧杯的实体虚拟模型,当接收到“将200毫升水倒入烧杯中”这一操作指令时,可以直接采用前述通用规则,将烧杯中的溶液体积更新为300ml,同时修改烧杯中溶液的色度,修改后的色度约为之前的三分之一,同时界面显示烧杯中液体浓度为n0/3。
指定规则的使用方法类似于通用规则,只是其不具备通用规则的多用性,只针对特定实验中的指定操作。
进一步的实施例中,所述实体虚拟模型的状态包括实体属性和相关属性。
所述实体属性包括实体虚拟模型的基础状态以及经操作后的若干种变化状态。
所述相关属性包括通过Unity3D赋予实体虚拟模型的属性。
结合图3,当规则系统判断输入事件满足通用规则或者指定规则后,将会根据规则对实体虚拟模型属性进行相应修改。其属性包括实体属性和相关属性,其中实体属性包括自定义的实体虚拟模型基础状态以及经过操作后的不同变化状态,如图3所示可以定义Bool、Int、Float、String等属性;相关属性包括Unity3D中赋予实体虚拟模型的属性,其属性内容由Unity3D自定义,状态改变后需要更改其数值,如图3所示可更改GameObject、Transform、Animator、UI等选项,每个选项可进一步更改参数,如Transform中可更改Position、Rotation、Scale等参数,UI中也可更改其参数列表。
在前述例子中,烧杯中体积、色度的更新均属于实体属性,而用于显示实体虚拟模型属性变更的界面则属于相关属性。
在另一些例子中,所述方法还包括:
步骤S1中,预先根据物体间的状态变化规律以定义非法规则。
接收用户输入的针对任意一个实体虚拟模型的操作指令,判断所述操作指令是否满足非法规则,如果满足,判定该操作指令为错误指令。
除了定义正确的规则,还可以定义一些非法规则,作为虚拟仿真系统的扣分点,满足教学考核的需要。
结合图2,基于前述方法,本发明提及一种基于Unity3D的高自由度实验类三维虚拟仿真系统,所述系统包括模型管理模块、事件管理模块、规则管理模块。
所述模型管理模块包括实体模型库和场景模型库,所述实体模型库中包括若干个实体虚拟模型、以及对应的实体属性管理子模块和相关属性管理子模块。
所述事件管理模块包括用于接收用户输入的输入操作单元、以及用于输出对操作反馈的事件反馈单元。
所述规则管理模块包括通用规则库和指定规则库,所述通用规则和指定规则是指一指定实验操作指令作用在实体虚拟模型上,导致实体虚拟模型状态变更的规律。
规则模块的指定规则可根据实际实验操作更改或者替换,选择场景模型库和实体模型库中相应的模型以及通用规则,可形成不同指定实验的仿真系统。
所述模型管理模块分别和事件管理模块、规则管理模块连接,所述输入操作单元与外接的输入设备连接,接收用户输入的操作指令,将之解析后发送至模型管理模块,所述外接的输入设备包括键鼠、VR设备和/或AR设备。
所述模型管理模块接收输入操作单元发送的操作指令,判断该操作指令是否满足通用规则和/或指定规则,如果满足,根据该操作指令适用的通用规则和/或指定规则以更新实体虚拟模型的状态参数,否则,将用户输入的操作指令对时间进行还原处理,发送至事件反馈单元。
所述事件反馈单元将接收的操作指令叠加在实体虚拟模型上,计算解析出所述操作指令对实体虚拟模型状态的影响值,更新实体虚拟模型的状态。
所述事件反馈单元将更新后的实体虚拟模型输出至用户虚拟设备的显示单元。
模型模块包括利用Unity3D技术创建出所需场景模型库以及实体模型库,事件模块包括用于接收用户输入的输入操作单元以及能够输出对操作反馈的事件反馈单元,规则模块为该系统的核心模块,其用于实体虚拟模型经操作状态发生改变后,通过判断更新实体状态,包括通用规则库和指定规则库。
实体模型库中包含实体虚拟模型、实体属性以及相关属性,实体虚拟模型均为独立的个体,每个实体虚拟模型包含实体属性以及相关属性。实体模型的属性自定义,结合规则定义出多种状态以满足高自由度操作。实体属性包括自定义的实体虚拟模型基础状态以及经过操作后的不同变化状态,相关属性包括Unity3D中赋予实体虚拟模型的属性,其属性内容由Unity3D自定义,状态改变后需要更改其数值。
规则模块中通用规则是指可适用于多种实验操作的实验规则,指定规则是指可用于特定实验中指定操作的实验规则。
相对于现有的三维虚拟仿真系统,该系统允许用户自由的操作虚拟物体,提高用户的探索欲望,同时能有效的考察用户操作方式,便于考核和分析操作数据,真正起到仿真训练的作用。
进一步的实施例中,所述方法还包括:
将通用规则和/或指定规则结合构成新的指定规则。
优选的,将通用规则和指定规则分类,便于通用规则的复用,结合指定规则,使用对应的场景及实体虚拟模型,形成不同实验的三维虚拟仿真系统。
整个系统具有可移植性和扩展性。系统中通用规则可根据使用情况继续增加,通用规则可结合任意指定规则,形成一个新的规则模块,继而系统可以应用于新的仿真实验。软件使用者可以自行添加指定规则,甚至模型和场景以及事件触发条件,不断扩充各模块,提升该系统的高自由度。具体的,所述规则管理模块设置有一规则定义接口,用以接收用户输入的新的通用规则和/或指定规则,以实现前述目的。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视权利要求书所界定者为准。