virtools之Ai人工智能

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1.导论Virtoolsdev的AI软件包为电视游戏或虚拟现实带来了更高的仿真度。AI软件包提供一组扩展的行为模块,这些行为模块可以管理特定角色或物体。使用AI软件包提供的行为模块,用户可以定义角色或物体为AI物体(一般称为AIbot),这些物体可以对周围环境做出评测,并且作出行为上的选择,创建群体行为和独立角色,使那些角色可以寻找物体、守卫巡逻区或与其他角色格斗等等。AI行为模块首先赋予角色视听感觉能力以便侦测他们的环境,然后使用更高级的行为模块(例如follow、runaway、hide等)管理角色对环境做出的反应。在virtools中提供四类AI行为模块,他们是:Initialization(初始化行为模块组):在执行AI之前对场景进行测试、初始化AI引擎和场景中的AI物体、自动生成或输入AI引擎所需要的环境数据。DataEdition(数据编辑行为模块组):用户编辑环境信息的行为模块。AILogic(逻辑行为模块组):测试条件,然后在复杂的环境中开启恰当的AIaction。Action(动作行为模块组):这些行为模块是AI软件包的核心部分,这些行为模块可以使AIBots拥有相当智能的行为(例如射击、藏匿或跟随等等)AI行为模块和virtools标准的行为模块在使用方法上是相同的,通过参数调整诸如秘密行动、听觉能力和组队行为的标准。2.流程AI过程包括三个主要任务:定义场景、了解环境以、决策和行为。用户首先要对场景和要使用的角色进行初始化定义,ai软件包提供专门的行为模块可以进行该类工作。了解环境需要使用GraphData。GraphData需要用户使用特定的行为模块创建,并且保存到硬盘中。决策和行为需要使用AI的Action类行为模块配合Logic类行为模块。Logic类行为模块为AIbots提供决策,然后触发各种由Action类行为模块控制的格斗、射击、藏匿或徘徊等动作。GraphData用于通过使用动态射线选择路线或寻找可以躲避目标AIBot的位置。所有的AI动作都通过消息驱动,消息被用户的脚本解释和处理并且一般会触发一个动作。2.1.AI执行过程在使用AI功能之前,用户首先需要创建场景。用户需要保证所有的角色和动画的功能正常,并且在添加任何AI功能之前需要设置碰撞侦测和障碍物。障碍物和地板必须被声明为固定的障碍物,并且用户需要建立碰撞系统。用户需要添加PathObject属性到诸如门、梯子等一类物体上。这将影响到路径搜寻。首先有三个初始化行为模块需要在每一个场景中被运行:AILevelSettings行为模块需要出现在Level脚本中、CreateAIEntity行为模块和SetPersonalParameters行为模块需要出现在AIbot的脚本中。当用户的场景准备好,需要使用TestAgent行为模块测试场景中的位移和碰撞然后使用creategraphdata行为模块,为AIbot勘测地形。GraphData可以描述环境信息,主要的作用就是简化环境信息,使用graphdata可以加快角色在环境中寻找路径的能力。graphdata信息会在硬盘上面保存bin文件,并且可以被editgraph行为模块查看、编辑。graphdata信息可以被importdata行为模块导入并在场景中保存为一个数据阵列。注意,用户可以为不同的AIbots生成不同的graphdata,不同角色的graphdata会相同的环境进行不同的描述。例如个子较高的角色可能不能到个子教矮的角色可以到达的区域,这时候两个角色虽然同处于同一个环境中,但是需要不同的graphdata,以便定义不同的角色的活动区域。使用editpathway行为模块创建或辑特定路径,路径独立于GraphData。例如创建一个角色的巡逻区最后可以使用Actions类行为模块配合Logics类行为模块,添加AI功能到AIbots上面。3使用AI软件包3.1.准备工作AI基本上是工作的最后一个步骤。用户首先需要构建场景和脚本。然后确定所有的角色和动画功能正常,并且在添加AI功能之前需要确定碰撞监测和障碍物需要进行正确的设置。在使用AI之前,需要为场景中的特定物体添加AI(Path)Object和CollisionManager这两类属性定义障碍物地板和障碍物需要被定义为固定的障碍物。首先需要打开物体的setup窗口,为物体添加FixedObstacle属性,之后可以通过属性值修改固定障碍物的属性。定义路径物体路径物体是场景中用于更改所访问的区域的元素。用户可以为诸如门、梯子、电梯和传送点一类的物体添加对应的属性,并且做出正确的设置,这样做之后则可以作为路径被搜寻到。定义避让区域AI的动作类大多数行为模块可以控制物体移动,这些行为模块中的arrayofpointstoavoid参数可以定义某些区域在物体移动的时候应该避让,我们称之为避让区域。用户需要创建一个数据阵列定义避让区域,数据阵列中列出所有围成避让区域的点的Vector。行为模块中的displacementmode参数提供的Furtivedisplacement(隐秘行动)和avoiddangerouspoints(躲避)两种模式,会对避让区域做出反应。Furtivedisplacement(隐秘行动)模式会使物体在避让区的时候尽可能隐藏自身;avoiddangerouspoints(躲避)模式会使物体尽可能的远离避让点。很多时候,删除GraphData中的点也可以使AIbots避让某些区域,这比创建避让点更加容易一些,但是这种方法生成的避让区域将是静态的,在避让区域时常需要更改的时候这种方法就无能为力了。有些行为模块中会有referentialforthepointstoavoid参数,当使用referentialforthepointstoavoid参数的时候,描述避让区域的数据阵列中的点的Vector值,将不再使用世界坐标系统。创建角色群组AIAction类某些行为模块中会有DisplacementMode参数,当使用参数的furtivedisplacementconsideringthecharacter’sviewangle选项的时候,物体会在角色的视觉范围内隐秘行动,这个时候用户需要设置Groupsofcharacterstoavoid参数为某个特定的由角色组成的群组。3.2.初始化AI与程序测试3.2.1.初始化AI用户需要使用一些AIInitialization类行为模块初始化AI,并且在脚本开始的时候这些行为模块必须被触发。AILevelSettings一般用于整个场景的AI初始化,而CreateAIEntity行为模块和SetPersonalParameters行为模块用于单个物体的初始化。AILevelSettings行为模块AILevelSettings行为模块必须使用在levelscript上,并且只需要也只允许在AI角色被初始化之前启动一次。在AILevelSettings行为模块里面有三个重要的设置:Maxentity:场景中允许出现的最大AI物体数量。比较大的参数值会占用更多的cpu和内存资源。allowedtimeperframe(ms):AItime将ai的计算任务分配到很多桢,以便保持桢速率。参数值为0代表着没有时间限制。参数值比较低的时候,计算会被分配到更多桢,aibot的响应速度会降低。参数值比较高的时候,桢速率会降低。这个参数值常被设置为1到5毫秒之间,设置这个参数需要考虑AIbots的数量、场景的复杂程度、aibots的响应速度和桢速率需求。valueofameter:用于变换创建模型的单位。如果模型所使用的单位是英寸,那么这个参数值应该设置为39.37这个行为模块添加诸如AI_WALK、AI_RUN等消息。他允许AIAction类行为模块发送这些消息,这些消息将会作用于用户的脚本中。这些消息会触发类似UnlimitedController一类的行为模块控制的角色动作。CreateAIEntity行为模块在物体运行任何其他AI行为模块之前,用户需要为物体运行CreateAIEntity行为模块,这会将物体添加到AI引擎的物体列表。任何需要被AI引擎计算的物体都必须使用createAIEntity行为模块进行定义。所有的路径物体同样需要使用createAIEntity行为模块进行定义。createAIEntity行为模块可以将物体定义为三种不同类型的AI物体。Player:有游戏者控制的物体,虽然这些物体不被AI引擎控制,但是这些物体会影响AI引擎内其他的物体。AIbot:这一类物体时被AI引擎控制的自动物体PathObject:这类物体只会对搜寻路径起作用,一般用于定义门、电梯、传送点或梯子一类的物体。注意:在createAIEntity行为模块必须是物体脚本中第一个被触发的行为模块,所以createAIEntity行为模块出口处的连接必须被设置延迟,这样才能保证所有的AIaction类型为模块会在物体被初始化之后运行。因为很多的AI行为模块会需要物体作为参数输入,但这些作为参数输入的物体必须是已经被初始化的物体,所以我们说,所有的AIaction类型为模块必须在createAIEntity行为模块将物体初始化之后才可以被执行。另外当一个物体不再需要被ai引擎考虑的时候,可以使用RemoveAIfromEntity行为模块将物体设置为非ai物体,这样会减轻ai引擎的计算负担。SetPersonalParameters行为模块这个AI初始化行为模块可以在需要的时候动态的设置角色的技能和属性:视听敏锐度、视觉角度、组队信息、GraphData信息使用和路径搜寻精度等。(例如如果一个AIbot进入了一个黑暗的房间,那么视觉敏锐度就应该降低,并且使用新的GraphData)。这个行为模块同样需要在物体脚本的开始被触发。在SetPersonalParameters行为模块中会出现如下参数:EntityDirection:设置物体正前方的方向TeamID:组队的编号Hearingacuteness:角色听觉的敏锐度。设置角色和声音的距离,当角色和声音之间的距离小于这个参数的时候,角色就可以听到声音。Visualacuteness:角色视觉的敏锐度。设置角色和可视物体的距离,当角色和可视物体之间的距离小于这个参数的时候,角色就可以看到物体。Angleofviewcone:角色的视角大小,设置角色可以看到的范围BotMaxSpeed:bot的行动速度(单位为米/秒)BotHeight:角色的双脚和位置之间的y轴距离BotWidth:角色的宽度DistanceBetweentwoGoals:当角色在追寻一个活动的目标,并且这个目标移动超出了参数所设置的距离,角色将启动一次新的路径搜寻。比较大的参数值将会降低目标搜寻的精准度,但是会提高程序的执行速度。MinimumDistancetothegoal:当角色与目标之间的距离小于这个参数的时候,角色会认为自己已经到达。MinimumDistancetoanintermediarypoint:当角色与路径的中间点的距离小于这个参数的时候,角色会认为自己已经到达。Slowingdistancetothegoal:当角色与目标之间的距离小于这个参数的时候,角色会在保证不丢失目标的情况下减慢自己的速度。Slowingdistancetoanintermediarypoint:当角色与路径中间点之间的距离小于这个参数的时候,角色会在保证不丢失路径中间点的情况下减慢自己的速度。Maximumheightdelta:物体与目标或路径中间点的Y轴距离小于这个参数的时候,角色会认为自己已经到达。GraphName:制定用作搜寻路径的GraphData。LevelPrecisionofthePathFinding:选择路径搜寻模式。选择robot-like模式,在搜寻路径的时候将紧贴节点,这样得到的路径不适合生物使用,但是这样搜寻路径会占用较少的系统资

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功