基于Unity3D的三维虚拟人群场景生成方法技术

技术编号:15641380 阅读:584 留言:0更新日期:2017-06-16 11:48
一种基于Unity3D的三维虚拟人群场景生成方法,包括1.建立数据库;2.建立静态虚拟环境;3.建立事件;4.建立人物模型;5.建立故事控制对象;在故事控制对象内构建事件树、事件触发生成子对象、事件选择子对象、事件冲突检测子对象、人群动态生成子对象;6.由游戏引擎调用故事控制对象生成三维虚拟危险环境;7.完成三维虚拟危险环境的构建。本发明专利技术将人群、环境和事件三个要素进行统一设计,功能完善,运用Unity3D游戏引擎提供的组件以及插件,简化开发操作。本发明专利技术综合了虚拟人群场景开发所需的基本设计要素,提高了虚拟人群危险场景生成工作以及类似游戏环境的开发工作效率,具有功能完善和开发效率高的优点。

【技术实现步骤摘要】
基于Unity3D的三维虚拟人群场景生成方法
本专利技术属于计算机
,更进一步涉及计算机图形学
中的一种基于Unity3D的三维虚拟人群场景生成方法。本专利技术主要用来生成虚拟世界的大规模人群及相关环境、事件等,实现复杂人群仿真场景的快速建立。所述场景生成方法可用于仿真技术开发,模拟大规模人群及相关环境、事件等,以及相关游戏场景开发。本专利技术作为游戏开发,公共安全等相关领域基础研究,使用Unity3D游戏引擎具有的模块和插件进行开发,涉及具体操作技术,可以有效简化该场景设计方面的操作。
技术介绍
由大规模人群构成的虚拟场景是虚拟现实的重要组成部分。生成具有高保真度的虚拟人群场景在数字娱乐、虚拟演练、建筑设计、安全工程等领域具有广泛应用价值。然而,人群场景的设计十分复杂,除了需要模拟人群行为之外,还需要考虑人群生成问题以及相关环境、事件的设计。目前,一些技术在场景生成时,只涉及环境开发方面,缺乏背景事件和背景人物设计,如何系统化地构建虚拟人群场景目前还缺乏有效的方法。同时存在一些技术在场景生成操作上与开发平台所提供的操作不能一一对应的问题,如何将人群、环境和事件三个要素进行统一设计,运用现有开发平台便捷操作,实现流程化场景生成是一个需待解决的问题。中国大唐集团科学技术研究院有限公司在其提出的专利申请“虚拟现实漫游场景生成方法及系统”(申请号CN201310284812.9申请公布号CN103440357B)中公开了一种基于数据转换技术的虚拟现实漫游场景生成方法及系统,该方法包括:通过精确建模的方式设计虚拟场景的空间结构,生成基础环境模型数据;将建模设计完成后的基础环境模型数据,进行跨平台的可视化仿真数据转换处理,转换为虚拟场景环境模型数据;通过预先设置的可视化虚拟漫游设计平台接口加载转换后的虚拟现实场景环境模型数据,生成虚拟现实漫游场景并进行交互式操作。本申请以解决现有技术中通过工厂三维布置设计管理系统所设计完成的结构模型不能被虚拟现实交互动作设计平台所识别的问题。该专利申请存在的不足是:没有指定具体开发平台,在实际的场景开发当中,不同的开发平台所具备的操作与该方法的操作并不能一一对应,增加的实际开发的难度。福建工程学院在其提出的专利申请“一种3D场景的实时生成方法”(申请号CN201410830804.4申请公布号CN104599319A)中公开了一种3D场景的实时生成方法。该方法包括以下步骤:a)建立场景的空间数据库;b)设计自动推理机;确定各个场景内对象的行为模式,写入到一个推理机组件中;声明一个Unity3D空对象,将推理机组件负载于Unity3D空对象上,c)自动推理机驱动;利用Unity3D引擎刷新所有对象的Update()函数,d)以人称控制器为参考对象,划定空间渲染区域;e)实时场景生成;通过查询空间数据库获得Unity3D引擎会再次生成的对象,该对象数据通过自动推理机求得,实时生成3D场景。该专利申请存在的不足是:缺少对人群、环境和事件三个要素进行统一设计。
技术实现思路
本专利技术针对上述现有技术存在的问题,提出了一种基于Unity3D建模技术的虚拟危险场景生成方法,可用于快速生成由虚拟人群以及相关环境因素所构成的虚拟场景。本专利技术的具体步骤如下:(1)建立数据库:(1a)将Mono.Data.Sqlite.dll文件与System.Data.dll文件放在Unity3D游戏引擎中的Assets文件夹中,作为Unity3D游戏引擎内部数据库基础文件;(1b)在Unity3D游戏引擎内部数据库基础文件中,分别建立环境数据库、事件数据库和人物数据库;(2)建立静态虚拟环境:(2a)利用三维建模软件,生成一个基础环境模型;(2b)将基础环境模型以.fbx格式,导入Unity3D游戏引擎中,转换为静态虚拟环境;(2c)使用Unity3D游戏引擎中的StreamingWorld插件,在x轴和z轴平面上设定划分网格尺寸为10米乘10米,由该插件将静态虚拟环境划分成多个独立的子环境,并存储到环境数据库中;(3)建立事件:(3a)定义用于三维虚拟危险场景生成的不同事件;(3b)为所生成的不同事件添加描述事件属性的脚本文件;(3c)将所生成的不同事件和与之对应的描述事件属性的脚本文件存储到事件数据库中;(4)建立人物模型:(4a)利用三维建模软件,设计3D人物模型;(4b)将设计好的3D人物模型以.fbx格式,导入到Unity3D游戏引擎中,转换为虚拟人物模型;(4c)使用Unity3D游戏引擎的动画控制模块,为虚拟人物模型添加提供运动动画播放功能的AnimatorController组件并添加C#动画控制脚本;(4d)使用Unity3D游戏引擎的导航控制模块,为虚拟人物模型添加提供自动寻路功能的NavMeshAgent组件,得到设置好的虚拟人物模型添加C#寻路控制脚本;(4e)将设置好的虚拟人物模型存储到人物数据库中;(5)建立故事控制对象:(5a)在Unity3D游戏引擎中新建一个Object空对象,为Object空对象添加C#控制脚本,并将该对象命名为故事控制对象;(5b)在故事控制对象中使用Unity3D游戏引擎的EventOrganizer插件,建立事件树,存储事件间关系;(5c)在故事控制对象中新建一个Object空对象,为Object空对象添加C#事件触发脚本,并将Object空对象命名为对事件数据库中的事件添加事件触发形式的事件触发子对象;(5d)在故事控制对象中新建一个Object空对象,为Object空对象添加C#事件选择脚本,并将该Object空对象命名为事件选择子对象;(5e)在故事控制对象中新建一个Object空对象,为Object空对象添加C#事件冲突检测脚本,并将该该Object空对象命名为事件冲突检测子对象,利用事件选择子对象选出备选事件,检查备选事件与当前事件所产生的地点是否一致;若是,则执行步骤(5d),否则,执行步骤(5f);(5f)在故事控制对象中新建一个Object空对象,为Object空对象添加C#人群动态生成脚本,并将该对象命名为人群动态生成子对象;(6)生成三维虚拟危险场景:(6a)游戏引擎从环境数据库中任意选择一个子环境;(6b)游戏引擎调用事件选择子对象选择事件;(6c)游戏引擎调用事件冲突检测子对象检测事件逻辑;(6d)游戏引擎调用事件触发子对象生成事件;(6e)游戏引擎调用人群动态生成子对象动态生成人群;(6f)判断环境数据库中所有的子环境是否均被选择,若是,则执行步骤(7),否则,执行步骤(6a);(7)完成三维虚拟危险场景的构建。本专利技术与现有技术相比具有以下优点:第一,由于本专利技术在Unity3D游戏引擎内部数据库基础文件中分别建立环境数据库、事件数据库和人物数据库,所建立的事件数据库和人物数据库补充了现有场景开发中缺少的背景事件和背景人物,克服了现有技术在场景生成时,只涉及环境开发方面的缺点,使得本专利技术综合了虚拟人群场景开发所需基本的设计要素,从环境搭建,事件设计到人群设计都有所涵盖,具有功能完善的优点。第二,本专利技术包括使用Mono.Data.Sqlite.dll文件与System.Data.dll文件作为Unity3D游戏引擎内部数据本文档来自技高网
...
基于Unity3D的三维虚拟人群场景生成方法

【技术保护点】
一种基于Unity3D的三维虚拟人群场景生成方法,包括步骤如下:(1)建立数据库:(1a)将Mono.Data.Sqlite.dll文件与System.Data.dll文件放在Unity3D游戏引擎中的Assets文件夹中,作为Unity3D游戏引擎内部数据库基础文件;(1b)在Unity3D游戏引擎内部数据库基础文件中,分别建立环境数据库、事件数据库和人物数据库;(2)建立静态虚拟环境:(2a)利用三维建模软件,生成一个基础环境模型;(2b)将基础环境模型以.fbx格式,导入Unity3D游戏引擎中,转换为静态虚拟环境;(2c)使用Unity3D游戏引擎中的Streaming World插件,在x轴和z轴平面上设定划分网格尺寸为10米乘10米,由该插件将静态虚拟环境划分成多个独立的子环境,并存储到环境数据库中;(3)建立事件:(3a)定义用于三维虚拟危险场景生成的不同事件;(3b)为所生成的不同事件添加描述事件属性的脚本文件;(3c)将所生成的不同事件和与之对应的描述事件属性的脚本文件存储到事件数据库中;(4)建立人物模型:(4a)利用三维建模软件,设计3D人物模型;(4b)将设计好的3D人物模型以.fbx格式,导入到Unity3D游戏引擎中,转换为虚拟人物模型;(4c)使用Unity3D游戏引擎的动画控制模块,为虚拟人物模型添加提供运动动画播放功能的Animator Controller组件并添加C#动画控制脚本;(4d)使用Unity3D游戏引擎的导航控制模块,为虚拟人物模型添加提供自动寻路功能的NavMeshAgent组件,得到设置好的虚拟人物模型添加C#寻路控制脚本;(4e)将设置好的虚拟人物模型存储到人物数据库中;(5)建立故事控制对象:(5a)在Unity3D游戏引擎中新建一个Object空对象,为Object空对象添加C#控制脚本,并将该对象命名为故事控制对象;(5b)在故事控制对象中使用Unity3D游戏引擎的Event Organizer插件,建立事件树,存储事件间关系;(5c)在故事控制对象中新建一个Object空对象,为Object空对象添加C#事件触发脚本,并将Object空对象命名为对事件数据库中的事件添加事件触发形式的事件触发子对象;(5d)在故事控制对象中新建一个Object空对象,为Object空对象添加C#事件选择脚本,并将该Object空对象命名为事件选择子对象;(5e)在故事控制对象中新建一个Object空对象,为Object空对象添加C#事件冲突检测脚本,并将该该Object空对象命名为事件冲突检测子对象,利用事件选择子对象选出备选事件,检查备选事件与当前事件所产生的地点是否一致;若是,则执行步骤(5d),否则,执行步骤(5f);(5f)在故事控制对象中新建一个Object空对象,为Object空对象添加C#人群动态生成脚本,并将该对象命名为人群动态生成子对象;(6)生成三维虚拟危险场景:(6a)游戏引擎从环境数据库中任意选择一个子环境;(6b)游戏引擎调用事件选择子对象选择事件;(6c)游戏引擎调用事件冲突检测子对象检测事件逻辑;(6d)游戏引擎调用事件触发子对象生成事件;(6e)游戏引擎调用人群动态生成子对象动态生成人群;(6f)判断环境数据库中所有的子环境是否均被选择,若是,则执行步骤(7),否则,执行步骤(6a);(7)完成三维虚拟危险场景的构建。...

【技术特征摘要】
1.一种基于Unity3D的三维虚拟人群场景生成方法,包括步骤如下:(1)建立数据库:(1a)将Mono.Data.Sqlite.dll文件与System.Data.dll文件放在Unity3D游戏引擎中的Assets文件夹中,作为Unity3D游戏引擎内部数据库基础文件;(1b)在Unity3D游戏引擎内部数据库基础文件中,分别建立环境数据库、事件数据库和人物数据库;(2)建立静态虚拟环境:(2a)利用三维建模软件,生成一个基础环境模型;(2b)将基础环境模型以.fbx格式,导入Unity3D游戏引擎中,转换为静态虚拟环境;(2c)使用Unity3D游戏引擎中的StreamingWorld插件,在x轴和z轴平面上设定划分网格尺寸为10米乘10米,由该插件将静态虚拟环境划分成多个独立的子环境,并存储到环境数据库中;(3)建立事件:(3a)定义用于三维虚拟危险场景生成的不同事件;(3b)为所生成的不同事件添加描述事件属性的脚本文件;(3c)将所生成的不同事件和与之对应的描述事件属性的脚本文件存储到事件数据库中;(4)建立人物模型:(4a)利用三维建模软件,设计3D人物模型;(4b)将设计好的3D人物模型以.fbx格式,导入到Unity3D游戏引擎中,转换为虚拟人物模型;(4c)使用Unity3D游戏引擎的动画控制模块,为虚拟人物模型添加提供运动动画播放功能的AnimatorController组件并添加C#动画控制脚本;(4d)使用Unity3D游戏引擎的导航控制模块,为虚拟人物模型添加提供自动寻路功能的NavMeshAgent组件,得到设置好的虚拟人物模型添加C#寻路控制脚本;(4e)将设置好的虚拟人物模型存储到人物数据库中;(5)建立故事控制对象:(5a)在Unity3D游戏引擎中新建一个Object空对象,为Object空对象添加C#控制脚本,并将该对象命名为故事控制对象;(5b)在故事控制对象中使用Unity3D游戏引擎的EventOrganizer插件,建立事件树,存储事件间关系;(5c)在故事控制对象中新建一个Object空对象,为Object空对象添加C#事件触发脚本,并将Object空对象命名为对事件数据库中的事件添加事件触发形式的事件触发子对象;(5d)在故事控制对象中新建一个Object空对象,为Object空对象添加C#事件选择脚本,并将该Object空对象命名为事件选择子对象;(5e)在故事控制对象中新建一个Object空对象,为Object空对象添加C#事...

【专利技术属性】
技术研发人员:罗林波周佶发柴程李金库马建峰
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:陕西,61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1