当前位置:首页 » 操作系统 » 导航网格算法

导航网格算法

发布时间: 2022-10-01 14:13:41

❶ 导航地图,规划路径的原理

GPS

❷ unity test用的什么算法

并没一种寻路适合所有场合,选择都是基于需求而定的。

1. A* 算法与贪婪算法不一样,贪婪算法适合动态规划,寻找局部最优解,不保证最优解。
A*是静态网格中求解最短路最有效的方法。也是耗时的算法,不宜寻路频繁的场合。一般来说适合需求精确的场合。
与启发式的搜索一样,能够根据改变网格密度、网格耗散来进行调整精确度。
使用的地方:
a. 策略游戏的策略搜索
b. 方块格子游戏中的格子寻路

2. Unity 自带的导航网格系统
Unity 内置了NavMesh导航网格系统,一般来说导航网格算法大多是“拐角点算法”。
效率是比较高的,但是不保证最优解算法。
使用的地方:
a.游戏场景的怪物寻路
b.动态规避障碍

❸ 如何使用Unity3D做游戏中的寻路导航

现在的大部分mmo游戏都有了自动寻路功能。点击场景上的一个位置,角色就会自动寻路过去。中间可能会有很多的障碍物,角色会自动绕过障碍物,最终达到终点。使用Unity来开发手游,自动寻路可以有很多种实现方式。
最近,一名海外开发者在博客中分享了自己用Unity引擎重做此前研发的Flash游戏寻路导航的心得,希望可以给大家带来帮助:
大家好,最近我一直都在忙于把2006年的一款Flash游戏用Unity引擎重做出来,尽管我们在《Arrival in Hell》这个项目已经工作了一年多,但这里我希望从头开始来写开发者博客,因为这样才能让读者们有比较完整的印象。
如果你们不太熟悉这款游戏的话,我这里做几句话的介绍,我们在对2006年我和朋友Eardo Mojica以及Richard Rout三人研发的一款Flash游戏进行重做,这是一款点击式操作的冒险游戏,我们将用Unity引擎进行重做。我做编程和研发游戏已经有十年左右的经验,但这是我使用Unity引擎做的首款游戏。
在其他事情之前,我首先想要说的就是玩家角色的移动,由于这款游戏现在是真正的3D,因此玩家角色需要在3D空间里寻路。幸运的是,Unity引擎已经有了一些不错的内置寻路功能,你只要打开窗口-导航(Navigation),选择你想要使用的物体并且放到路径中,然后把他们标记为‘导航静态(Navigation static)’这就会告诉Unity这些物体是静态的(非移动),在寻路的时候应该被考虑进去。

把物体设置为‘导航静态’
这里我想要说一说这个功能有多么强大。过去,我和大多数的游戏开发者一样,都必须打造自己的寻路系统,我之前就做过一个A*tile和基于节点的寻路系统,在两种情况下,特别是基于节点系统的寻路所产生的walls让人非常头痛。在基于节点的寻路系统中,你必须手动地把AI使用的点在两者之间进行导航。Unity不仅做导航功能,还使用了导航网格(Navigation meshes),这比手动放置节点更有效率而且更流畅。更重要的是,你还可以一键重新计算整个导航网格,彻底摆脱了手动修改导航节点的做法。

我用基于节点系统做的失败的寻路系统之一
在把静态物体加入了导航网格之后,你可以选择一系列的设定然后点击bake按钮,比如在考虑加入一堵墙之前确定坡有多陡以及台阶应该多高。这样你就可以获得可以预览的视图。值得注意的一件事是,不要仅仅因为物体存在在场景中就意味着它是导航网格的一部分。比如说在这款游戏中,我不在乎玩家们是否会踩到瓦砾,所以我并没有把任何瓦砾标识为导航静态,这加快了当行网格的生成速度。

《Arrival in Hell》中其实是有数值的
在导航网格生成之后,我简单地给玩家模型增加了一个NavMeshAgent组件,这款游戏现在就可以进行寻路了,唯一剩下的就是增加鼠标输入控制NavMeshAgent的目的地。

用NavMesh做的bake

NavMeshAgent设定
为了告诉NavMeshAgent导航我做了以下指令:
1.注意听取鼠标输入
2.把鼠标放进屏幕空间
3.把屏幕空间转变成来自摄像头的一束光
4.在光达到地面的时候把它移除
5.把NavMeshAgent的目的地设定到地板的对应位置。
C#代码是这样的:

可视化视图下的目的地与路径
这就解决了我这款游戏的大多数导航需求,唯一的例外就是导航网格由于游戏内的一些活动而发生改变的时候。比如第一个房间的们最开始是关闭的,后来当它打开的时候,当行网格需要更新反映此次变化,允许玩家从新开的们中走过去。我并没有在游戏运行的时候rebake完整的静态导航网格,而是使用了NavMeshObstacle组件,该组件可以让你把寻路过程中的动态物体加进去,如果物体移动,Unity的寻路算法就会根据实际情况而更新。

导航路径会根据NavMeshObstacle的变化而自动发生改变

可视化视图
所以,游戏寻路导航就这么做好了,这就是《Arrival in Hell》游戏中的导航工作原理,这一些只需要Unity内自带的导航功能就可以完成了。

❹ ue4导航网格看不到绿色

按下P键。
先来新建一个场景,添加到场景里寻路体积,右边世界大纲里就会出现这个体积的东西,但是我们发现现在按下P键,P是显示寻路导航体积覆盖面的显示和隐藏功能。按下P后我们发现场景就会有绿色。
导航网格是AI行为中必不可少的,在其范围内是AI可以执行相关行为的地方,而出了这范围就无法再生效,根据支持的导航代理者类型,导航网格会生成不同的RecastNavMash以支持不同代理者。

❺ 什么是网格算法

网格化是解释流程中构造成图的比较重要的一步,算法种类也比较多。在SMT中就列出了许多种算法供选择,当然每种算法有自己的特点和适应性,所以在真正网格化操作时为了提高预测的精度需要选择合适的算法。如下为SMT中提供的几种算法简单对比。

Collocated Cokriging
协克里金算法
层位、断层、网格、XYZ数据、层段属性、钻井分层(较好用于井数据与地震属性匹配)

Cubic Spline
样条插值
三维的层位、网格、断层、XYZ数据

Flex Gridding
弹性网格化
层位、断层、网格、XYZ数据、层段属性、钻井分层

Gradient Projection
梯度投影
二维、三维的层位、网格、断层、等值线、XYZ数据(较好用于构造数据)

Inverse Distance to a Power
反距离加权
二维、三维的层位、网格、断层、等值线、XYZ数据、层段属性、钻井分层(较好用于速度成图)

Natural Neighbor
自然邻点插值
XYZ数据、层段属性、钻井分层(较好用于非地震类数据)

Ordinary Kriging
普通克里金插值
XYZ数据、层段属性、钻井分层(较好用于渗透率成图)

Simple Kriging
简单克里金插值
XYZ数据、层段属性、钻井分层(较好用于渗透率成图)

Universal Kriging
广义克里金
XYZ数据、层段属性、钻井分层(较好用于渗透率图件和有整体变化趋势的数据)

这里对两种算法做个介绍:

1、SMT8.2版本中新出现的Flex Gridding 弹性网格化算法

该算法利用差分方程系统原理,产生的网格节点处数值需要满足以下两种原则:

. 内插面与实际数据产生的趋势面一致或者很接近;

. 该面的RMS曲率值尽可能小。

如果在一个节点处应用每一种方程都计算差分的话,而且将邻近点都考虑在内的话,其结果会形成一个组合,但越远的点影响越弱、越不直接。因此,在计算时都假设邻近节点为常数,每个方程就会得到一个网格数值。如此重复应用于其它节点处。这样可以解决单个节点的问题,我们将方程称为“调和器”。该方法产生的曲率面会趋于最小,而且逼近实际数据。

由于每个节点在进行调和滤波计算时都需要一个局部的调和器,网格节点多时就会有许多次迭代计算过程。迭代次数差不多为N的e次方(N为数据列/行数)。因此初始网格一般时非常小的。

2、Collocated Cokriging 协克里金插值

协克里金插值与克里金算法原理基本一样,都是通过差异比较来计算网格数值,同时产生方差图,但是该方法假设事件都是多属性的,可以利用第二种协数据(如层位)辅助第一种主数据进行稀疏数据点(如井控制点)的内插。

协克里金插值利用第二种协数据指导主数据的网格化,可以提高克里金插值的准确性。该算法中断层可以参与运算。在使用时用稀疏数据(如井数据)作为主数据,另外一种密集分布数据作为协数据。

在具体计算中网格点处主数据有值的地方都用主数据的值,如果网格点处没有值时则用协数据作为辅助进行计算。并且会同时产生一个方差模型。

最终的协方差网格结果为主数据进行克里金插值,同时受协数据影响。

因此,如果主数据为密集分布的数据,计算产生的网格也会接近主数据。例如,数据中包括测井解释的孔隙度数据(稀疏分布),从地震属性中预测的伪孔隙度数据(密集分布)。数据单位是一致的,但来源可能不一样。

对于这种情况下协克里金插值就是一种很好的网格算法,还可以建立起振幅与孔隙度之间的关系。

在应用时有以下注意事项:

1)在主数据为稀疏分布,协数据伪密集分布时应用效果最好。

2)如果主数据与协数据之间有一定联系的话效果最好。

3)数据类型最好一致。

❻ 手机端APP界面导航布局中使用的九宫格 布局形式属于

手机端APP界面导航布局中使用的九宫格布局形式属于网格组合。
导航是APP设计时要着重考虑的,常见的APP框架有列表、网格、屏幕轮显、标签导航、tab导航、抽屉导航、卡片、泳道、堆叠组合。
网格就是把应用图标、缩略图、功能图标等内容根据水平方向和垂直方向划分所构成的辅助线进行布局。在界面设计中,九宫格这种类型的构图更为规范和常用,用户在使用过程中非常的方便,应用功能会显得格外的明确和突出。

❼ unity导航网格里哪个函数是获取路线的

在Unity3d中,我们一般常用的寻路算法:
1.A*算法插件
与贪婪算法不一样,贪婪算法适合动态规划,寻找局部最优解,不保证最优解。A*是静态网格中求解最短路最有效的方法。也是耗时的算法,不宜寻路频繁的场合。一般来说适合需求精确的场合。
与启发式的搜索一样,能够根据改变网格密度、网格耗散来进行调整精确度。
使用较好的地方:
a.策略游戏的策略搜索
b.方块格子游戏中的格子寻路
2.U3D自带的导航网格系统
U3D内置了NavMesh导航网格系统,一般来说导航网格算法大多是“拐角点算法”,具体大家可以去查下。效率是比较高的,但是不保证最优解算法。
使用较好的地方:
a.游戏场景的怪物寻路
b.动态规避障碍
3.WayPoint寻路插件
速度最快,但相应来说表现也非常局限,它常常走“Z”型的轨迹,并不适合复杂场合的使用。例如它不能根据宽度、高度、路径点耗散等来改变行进路径。
使用较好的地方:
a.塔防怪物行进路径
b.AI巡逻路线

热点内容
sqlserveronlinux 发布:2024-09-19 08:16:54 浏览:253
编程常数 发布:2024-09-19 08:06:36 浏览:950
甘肃高性能边缘计算服务器云空间 发布:2024-09-19 08:06:26 浏览:161
win7家庭版ftp 发布:2024-09-19 07:59:06 浏览:715
数据库的优化都有哪些方法 发布:2024-09-19 07:44:43 浏览:268
知乎华为编译器有用吗 发布:2024-09-19 07:32:20 浏览:617
访问虚拟机磁盘 发布:2024-09-19 07:28:13 浏览:668
原地工作算法 发布:2024-09-19 07:28:07 浏览:423
如何设置linux的ip地址 发布:2024-09-19 07:22:25 浏览:750
微信忘记密码如何修改密码 发布:2024-09-19 07:05:07 浏览:80