一种3d场景的实时生成方法
【技术领域】
[0001]本发明涉及一种软件应用技术领域,具体的说,本发明设计一种应用于手机游戏的3D场景的实时生成方法。
【背景技术】
[0002]3D场景实时生成方法简介
[0003]在手机游戏当中3D场景是由游戏引擎根据算法随机生成的,这包括新场景的创建和旧有场景的删除。具体的做法是预置好一些由相同或不同3D对象组合而成的模型集合,然后根据算法随机在其中选择比较合适的形态组合进行3D场景的实时渲染。
[0004]Unity3D游戏开发引擎简介
[0005]Unity3D是目前最为流行的游戏开发工具,它是由Unity Technoogies公司开发的专业游戏引擎。它的特点是开发效率高、跨平台和支持多种美术资源文件格式。特别的,Unity还提供了一个网上资源商店(Asset Store),任何Unity用户都可以在这个平台上购买和销售Unity相关资源,包括3D模型、材质贴图、脚本代码、音效、Π界面、扩展插件等。
[0006]空间数据库索引技术
[0007]空间数据库索引是近年来在应用中发展起来的一个新兴学科。已经提出的多种多维索引技术包括Bang文件,、网格文件、hB树、KDB树、Paramid树、四叉树、R树、R3树、R+树、TV树和VA文件,这些索引主要是用来对点的集合进行索引。能够同时处理区域数据和点数据的索引结构包括区域四叉树、R树和SKD树。3D游戏明显的空间信息特征,因此将空间数据库索引技术引入3D游戏引擎具有重要的价值。
[0008]目前市场上3D场景实时生成技术较为成功的解决方案是ImangiStud1的Temple Run系列游戏所采用的游戏逻辑。在Temple Run游戏中,场景的生成是随机出现的。新场景的位置是当前场景最远处地形模块的左侧、右侧或者是后面。而当前场景最近处地形模块移过相机覆盖窗口后将被删除注销。这种方法的优点是保证三角形面数保持在一定限制内,现有的3D场景实时生成技术存在着很多缺点:完全依赖随机算法,不具备记忆功能。总体场景逻辑怪异,地理上自相矛盾。
【发明内容】
[0009]本发明的目的在于提供一种基于自动推理机的3D场景实时生成方法,解决当前手机游戏当中3D场景的动态生成和消亡存在的严重的问题,包括由于系统软硬件资源的限制,3D游戏场景常见的设计方法是随机生成新场景对象同时删除旧场景对象,此类方法造成许多自相矛盾的游戏逻辑。
[0010]本发明提供的技术方案是:一种3D场景的实时生成方法,包括以下步骤:
[0011]a)建立场景的空间数据库;利用最基本的数据结构(如:散列等)构造微型空间数据库,所有游戏对象做成一个空间数据库;将整个场景划分为若干个独立的小场景,然后将这些小场景以Unity3D形式登记到空间数据库当中;将各个小场景内的对象归类,使对象都具备地理位置属性;
[0012]b)设计自动推理机;将已分好类的对象分别制定其生命周期和活动范围,避免对象之间的复杂交互,由此,确定各个场景内对象的行为模式,写入到一个推理机组件中;声明一个Unity3D空对象,将推理机组件附载于Unity3D空对象上,由此,完成自动推理机组件;
[0013]c)自动推理机的驱动;利用Unity3D引擎刷新所有对象的UpdateO函数,为所有对象建立行为数学模型,更新整个空间数据库中登记的所有对象,由UpdateO函数驱动;
[0014]d)以人称控制器为参考对象,划定一个空间渲染区域;
[0015]e)实时场景生成;当相机再次覆盖到已经被删除的对象时,Unity3D引擎会再次生成该对象;空间数据库的对象数据采集于重新生成的对象,该对象数据通过查询空间数据库获得,该对象数据通过自动推理机求得,从而实时生成3D场景。
[0016]本发明的有益效果是:
[0017]本发明采用全局空间数据库解决了地理信息的记忆问题,并削弱了游戏逻辑对随机算法的依赖;采用自动推理机方法解决总体场景逻辑怪异和地理上自相矛盾等问题。
【附图说明】
[0018]当结合附图考虑时,通过参照下面的详细描述,能够更完整更好地理解本发明以及容易得知其中许多伴随的优点,但此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定,其中:
[0019]图1是本发明的流程示意图。
【具体实施方式】
[0020]为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本发明作进一步详细的说明。
[0021]参考图1,如图1所示,本发明的一种3D场景的实时生成方法,包括以下步骤:
[0022]a)空间数据库的建立
[0023](I)利用最基本的数据结构(如:散列等)构造微型空间数据库,所有游戏对象做成一个空间数据库。
[0024](2)将整个场景划分为若干个独立的小场景。然后将这些小场景以Unity3D形式登记到空间数据库当中。将各个小场景内的对象归类,这些对象都具备地理位置属性。
[0025]b)自动推理机的设计
[0026]自动推理机是为空间数据库建立的。将已分好类的对象分别制定其生命周期和活动范围,避免对象之间的复杂交互,减少复杂度。由此,各个场景内对象的行为模式就已经确定了。将以上算法写入到一个组件中。
[0027]声明一个空对象,将推理机组件附载于其上。由此,自动推理机组件就完成了。
[0028]c)自动推理机的驱动
[0029]Unity3D引擎会不断地刷新所有对象的UpdateO函数,这个过程类似操作系统的监视进程。自动推理机组件同样具备Update函数,随着Update函数的刷新,整个空间数据库中登记的所有对象都将得到更新。这个过程模拟了游戏引擎所有对象的生存过程。
[0030]d)以人称控制器为参考对象,划定一个空间渲染区域;
[0031]e)查询空间数据库,实时生成3D场景;
[0032]虽然整个场景的所有对象都是登记在空间数据库之中,然而空间数据库的对象数据并非采集于真实对象。真实对象仅在相机窗口覆盖时才会生成,离开窗口后就会被删除。当相机再次覆盖到已经被删除的对象时,Unity3D引擎会再次生成该对象。再次生成的对象,数据是通过查询空间数据库来获得的,该数据通过自动推理机求得。
[0033]该方法的好处是大大地降低了系统开销,如100个小场景的系统开销与4个小场景大概相等。这对于手机游戏是非常合适的。此外,由于空间数据库本身就是记忆的产物,因此不会出现地理信息自相矛盾的问题。
[0034]以上实例的说明只是用于帮助理解本发明的核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【主权项】
1.一种3D场景的实时生成方法,其特征在于,包括以下步骤: a)建立场景的空间数据库; 利用最基本的数据结构,构造微型空间数据库,所有游戏对象做成一个空间数据库;将整个场景划分为若干个独立的小场景,然后将这些小场景以Unity3D形式登记到空间数据库当中;将各个小场景内的对象归类,使对象都具备地理位置属性; b)设计自动推理机; 将已分好类的对象分别制定其生命周期和活动范围,避免对象之间的复杂交互,由此,确定各个场景内对象的行为模式,写入到一个推理机组件中; 声明一个Unity3D空对象,将推理机组件附载于Unity3D空对象上,由此,完成自动推理机组件; c)自动推理机的驱动; 利用Unity3D引擎刷新所有对象的UpdateO函数,为所有对象建立行为数学模型,更新整个空间数据库中登记的所有对象,由UpdateO函数驱动; d)以人称控制器为参考对象,划定一个空间渲染区域; e)实时场景生成; 当相机再次覆盖到已经被删除的对象时,Unity3D引擎会再次生成该对象;空间数据库的对象数据采集于重新生成的对象,该对象数据通过查询空间数据库获得,该对象数据通过自动推理机求得,从而实时生成3D场景。
【专利摘要】本发明公开一种3D场景的实时生成方法,包括以下步骤:a)建立场景的空间数据库;b)设计自动推理机;确定各个场景内对象的行为模式,写入到一个推理机组件中;声明一个Unity3D空对象,将推理机组件附载于Unity3D空对象上,c)自动推理机驱动;利用Unity3D引擎刷新所有对象的Update()函数,d)以人称控制器为参考对象,划定空间渲染区域;e)实时场景生成;通过查询空间数据库获得Unity3D引擎会再次生成的对象,该对象数据通过自动推理机求得,实时生成3D场景。本发明采用全局空间数据库解决了地理信息的记忆问题,并削弱了游戏逻辑对随机算法的依赖;采用自动推理机方法解决总体场景逻辑怪异和地理上自相矛盾等问题;场景生成的性能相对完全固定地图的模式要高出很多。
【IPC分类】G06T17-00
【公开号】CN104599319
【申请号】CN201410830804
【发明人】陈乐 , 黄恩武, 许雪林, 张兆臻, 侯振源
【申请人】福建工程学院
【公开日】2015年5月6日
【申请日】2014年12月26日