如何导出ue4的导航数据

我们项目遇到一个问题,就是如何导出导航数据给服务器使用,我们查看了UE4的代码,无法找到一个可用的函数,能导出Recast Navigation格式的导航数据。希望有人能帮我们解决一下,谢谢。

目前引擎有一个命令行,输入 ExportNavigation 就可以导出这些数据。

如果需要细节可以直接看下相应的代码:

RecastNavMeshGenerator.cpp

static class FNavigationGeomExec : private FSelfRegisteringExec
{
   ...
   Generator->ExportNavigationData( FString::Printf( TEXT("%s/%s"), *FPaths::GameSavedDir(), *Name ));
   ...
}

这个方法,我已经试过了,导出的数据不是Recast Navigation格式的导航数据,目前我是将UE4的代码进行了修改,暴露了Recast Navigation的导航数据,才实现了导航数据的导出。如果想知道具体怎么做的,可以通过邮箱联系我。邮箱地址:ye_lei_@126.com

能把你要的 导航数据 更详细的描述一下吗?我先前错误理解了你的意图。

如果可以的话,分享一下你的代码修改也许对以后类似问题的人能有帮助。

我目前使用UE4开发MMORPG游戏,服务器是使用Recast Navigation导航。通过代码发现UE4导航底层也是Recast Navigation,只不过做了一些修改,所以我想将客户端的导航数据导出给服务器使用。
但是通过代码查看,UE4是没有提供导出导航数据的接口的,所以我们决定自己写。但是遇到了问题,FPImplRecastNavMesh类是可以获取到导航数据(dtNavMesh),但是想获取FPImplRecastNavMesh对象却是保护的,所以我修改了RecastNavMesh.h里面的代码,将protected改成了public。

97471-11.png

希望UE4下个版本能暴露dtNavMesh数据,让我们可以获取,或者提供一个函数导出导航数据。

明白你的需求了。

看起来这么做也没什么问题。

不过我想交流下,通常 MMORPG 的话,服务端都是大世界,服务端的寻路数据应该比客户端简单得多,以提高服务器本身的性能。AI 在服务器上进行寻路计算后,在服务器和客户端之间只做位置同步即可。

你这边如果把客户端的寻路数据给服务端用,如果地形不复杂也许还行,如果地形复杂的话,尤其是当 AI 很多的时候,对服务器也会造成一些压力。你们需要留意一下。

当然这个话题已经脱离你的主题了。我们 CLOSE 这个 THREAD 吧。谢谢你提供的方法和代码。

是的,这个我们也会考虑的,客户端导航数据确实很多,但是服务器不会用那么多数据的。只要Recast Navigation的必要数据即可。你能通过我的邮箱和我联系吗,论坛联系还是太麻烦了,我们这边遇到很多问题,想私底下和你交流一下。

我们通常不做私下交流(坏笑)

技术问题欢迎继续在 AnswerHub 讨论,也有利于其他开发人员收益。

引擎业务的合作欢迎通过邮箱联系我们。 egc-business@epicgames.com

您好TIANMIN,能不能帮我回答一下这个问题https://answers.unrealengine.com/questions/448506/%E5%A6%82%E4%BD%95%E5%B0%86ue4%E5%8D%95%E4%BD%8D%E6%94%B9%E6%88%90%E7%B1%B3.html
已经挂了二天了,没有人回答。

Is this issue finally solved by ue4.19?
I want to obtain all the points’ positions, i.e., (x,y,z) from the .obj file generated by the ExportNavigation command.
Is it possible with current ue4.19?