当前位置: 首页 > news >正文

[翻译]CryEngine3人工智能的正确设置——高级技巧

人工智能的正确设置——高级技巧

Forbidden Areas

下图中Forbidden Areas距离实际对象体太远:

        

        

  替换Forbidden Areas让他们更贴近对象边缘,这样可以避免AI体与对象过大距离滑过的问题。

  

不要将两个Forbidden Areas放置的过近,即时AI对象体不能够通过,但navigation(引擎中导航)仍然会认为在两个区域间是个路径。

         解决方案是删除一个Forbidden Areas,是一个大的Forbidden Areas包含两个对象

    

                  

         请不要将物体放置到太靠近Forbidden Areas的边缘,否则AI体会徘徊在这些隐藏体周围并且可能滑进Forbidden Areas

    

            

         要么将隐藏体放置到Forbidden Area内,要么将隐藏体放置到Forbidden Area外。确保AI体徘徊在这些隐藏体周围时不会滑进Forbidden Area内。

    

            

         大的开放式的结构不应该在他们周围设置Forbidden Area,相反,在他们周围替换成下的Forbidden Area

    

 

  

Hide Anchors

         如果一个敌人是锥体,AI会在Hide anchor处隐藏,越多的AI对象,你需要放置的Hide anchors越多。不要只为一个方向放置Hide anchors。尽可能的为所有方向都放置.

            

    在一个物体的各个面处放置Hide anchors而不只是在边处放置。面比边的覆盖度更好。

        

 

            

    对于薄的对象在靠近边处放置Hide anchors,这样AI体可以尽快的离开他们的位置。不要忘了在互相对着的两面都要放。

    

            

         只在AI真正可以躲藏的地方放置Hide Anchors.例如一个轿车的前后部分比他的中间部分覆盖度要少。

            

 

         房子的边缘通常的覆盖比较少,首先要在靠近边的朝向点放置hide anchors,软后在与边成45度角位置放置Hide anchors

    

        

         如果你没有足够多的Hide anchors来处理更多的AI体,你可以增加Hide anchors。基础的Hide anchors是最重要的。你可以增加45度角的hide anchors的数量。

  

      

如果你长的对象,不要在中间放置Hide Anchors,因为这样AI体要移动很远的距离来改变位置。如果有其他掩体的话,你可以只在中间放置他们。

Way Points

        

         对于两件屋子你可以放置两个导航点来连接他们足够了。房间的每个角落都可以到达最近的WayPoint。连接线给了Ai体更好的切换房间。

        

         在物体的边处放置WayPoints.这样AI体不会在围绕运动时被卡住。

    

        

         本例中是AI体在墙侧寻找最近的WayPoint,而碰巧最近的点在遮挡物的另一侧。在新引擎中AI体仍然会寻找正切的点,但会消耗更多性能。替换成与薄物体有相同距离的WayPoints

        

                

    注意当你连接WayPoints时,连接线不要穿越或太靠近物理物对象。

     

            

    避免WayPoints太过于接近连接线,如果两个AI体开始移动时,由于连接线太靠近彼此可能会导致碰撞。

    

            

         避免在物体边角的连接线交叉,这样AI体会在交叉处跑到其他连接中去。

    

            

         你可以通过在边上添加一个新的WayPoint来轻松解决这个问题。

    

            

         如果你有替代路线考虑它是什么样子的。如果你想完全沿着线路走,有时候最好使用更多的WayPoints来模拟一个更自然的移动如上图右侧的解决方案。

     

            

     如果你有一个房间首先要在物体的所有边放置WayPoints.,但只这样做你还不能走通。

     

 

            

    然后你要观察那些WayPoints彼此太靠近了。如果有的话用一个WayPoints替换。这样可以减少AI体卡住的机率。

     

           

      完成WayPoints放置后,放置Hide Points,要遵循像放置Hide Anchors的规则。

     

            

    Hide points也是Navigation导航的一部分,合并hidepointsway points如果他们太靠近的话。

     

           

      如果所有导航点都被放置好了,开始连接他们。

    

     

         尽管中间的Way point可能不能提供完善的运动,但他比AI体被卡住要好。

     

              

  红线显示了错误的连接,要么连接线穿过了几何体,要么与几何体太靠近了,要么与其他连接线太靠近了。如果AI体在走到正确的朝向前通过1-2步调整是正常的。这比AI体被卡住要好。

 

作者: 无花无酒
出处: http://www.cnblogs.com/WanaX/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

 

转载于:https://www.cnblogs.com/wanax/archive/2009/12/25/1632068.html

相关文章:

  • 莫贪 勿迫
  • PHP连接MySQL的数据库类文件【转】
  • 网络DNS域名转换成IP地址
  • 软件开发综合社区
  • Winform获取本地IP和外网IP
  • 用HttpURLConnection在服务器端发起HTTP Post请求的例子
  • .net开发时的诡异问题,button的onclick事件无效
  • ACCESS转化成sql
  • AI笔记
  • 一些SEO教程
  • win7声卡驱动不能安装(安装失败)完美解决方案
  • 微软大力支持开放数据协议(OData)
  • 小技巧:Visual Studio 如何设置同时启动多个项目
  • 【学习笔记】——网络营销2(赢利)
  • Sql Server 2005中的架构(Schema)、用户(User)、登录(Login)和角色(Role)
  • Android单元测试 - 几个重要问题
  • Angular6错误 Service: No provider for Renderer2
  • AWS实战 - 利用IAM对S3做访问控制
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • laravel with 查询列表限制条数
  • Less 日常用法
  • PHP变量
  • Python语法速览与机器学习开发环境搭建
  • swift基础之_对象 实例方法 对象方法。
  • Webpack 4x 之路 ( 四 )
  • 给初学者:JavaScript 中数组操作注意点
  • 离散点最小(凸)包围边界查找
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 日剧·日综资源集合(建议收藏)
  • 硬币翻转问题,区间操作
  • 原生 js 实现移动端 Touch 滑动反弹
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 如何用纯 CSS 创作一个货车 loader
  • #{}和${}的区别?
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #控制台大学课堂点名问题_课堂随机点名
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (一)基于IDEA的JAVA基础1
  • (转) 深度模型优化性能 调参
  • (转)平衡树
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .net解析传过来的xml_DOM4J解析XML文件
  • .Net下的签名与混淆
  • .pop ----remove 删除
  • @Bean, @Component, @Configuration简析
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @RequestMapping 的作用是什么?
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [2019/05/17]解决springboot测试List接口时JSON传参异常