【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 3166|回复: 0

[Navmesh寻路] NavMesh动态创建寻路网格技术在多障碍物的情况下

[复制链接]
发表于 2013-12-17 11:16:41 | 显示全部楼层 |阅读模式
阿赵


上次发上来的NavMesh动态生成技术,有网友问我效率的问题,上次的演示只是简单的测试实现的情况,然后简单的测试了在少数障碍物的情况下的时间是0毫秒。这次修改了一下,模型的范围不再是矩形,而是有了一个边角范围。这样的计算比上次的稍微复杂了一点。然后我这次放比较多的障碍物,来测试效率的问题。
        看看上面的视频可以知道。在物体不多的情况下,基本上是感觉不出来生成网格的时间的。不过物体到达了一定数量之后,还是会有一定的等待时间的,比如上面的例子再最多障碍物的情况下,大概是半秒左右。
        这个网格生成的过程,其实是计算了很多东西的,物体多了之后肯定是会占用一定的时间的。我们可以这样看待它的使用价值:
1、我们不需要漫长的bake等待,只需要短短的几毫秒到几秒钟时间,就能生成好需要的网格。当然了,我这个计算的东西会比官方自带的NavMesh要少很多,不过我觉得针对一般的手机游戏或者网页游戏,应该是够用的。那么,我们不需要bake就能用,而这个短短的几毫米到几秒钟,我们可以放在场景初始化的时候做,玩家基本不会有感觉。
2、可以动态障碍物。在实际的应用中,动态障碍物不会经常的出现,而只是会出现在某些情况。比如一条路突然被石头砸中挡住了,或者某些树木被铲平了变成可以走了,再或者复杂点的,下起流星雨,某个区域渐渐越来越多障碍物了。这些情况,我们可以提早的知道出现的区域,然后单独的生成一个网格作为动态改变网格的区域。在这样的情况下,动态障碍物生成网格的时间久不会很多了。
3、寻路的信息可以按照自己的需要才生成,或者传输。我们可以在各种平台动态下载我们需要的寻路信息,或者直接到用的时候才生成。这样,我们可以在服务器用、可以在网页游戏用,可以在手机平台用。

        官方提供的NavMesh比我这个自己写的功能强大很多,不过由于需要烘焙,使用的限制会比较大一点。最新的4.3版本的Unity3D,看官方的升级文档,好像已经有了动态障碍物的功能,但我试了一下,没有发现。如果这个功能可以由官方提供,那肯定是更好了。
        然后这个功能我也很顺便的移植到了flash上面去,同样的顺利运行了。不过flash的效率比unity3d真的差很多很多,同样的代码,同样的算法,但在flash生成动态网格的时候,只有少数几个障碍物的情况也会明显的感觉到生成的时间。而unity在这方面就好很多了。
        不过做flash是有很多郁闷的事情的,很多很基础的东西,都是要自己写,所以用unity3d的人是很幸福的,什么工具和常用功能都已经提供了,直接用就可以了。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2024-11-23 15:27

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表