x

Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

如何导出UE4的导航数据

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

Product Version: UE 4.11
Tags:
more ▼

asked Jul 05 '16 at 12:57 AM in C++ Programming

avatar image

yelei8363
1 5 10 10

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

1 answer: sort voted first

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

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

RecastNavMeshGenerator.cpp

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

more ▼

answered Jul 05 '16 at 07:38 AM

avatar image

TIANMIN STAFF
30 3 4 4

avatar image yelei8363 Jul 06 '16 at 08:21 AM

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

avatar image TIANMIN STAFF Jul 06 '16 at 08:30 AM

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

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

avatar image yelei8363 Jul 07 '16 at 07:20 AM

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

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

11.png (9.3 kB)
avatar image TIANMIN STAFF Jul 07 '16 at 07:24 AM

明白你的需求了。

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

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

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

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

avatar image yelei8363 Jul 07 '16 at 09:08 AM

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

avatar image TIANMIN STAFF Jul 08 '16 at 04:18 AM

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

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

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

avatar image yelei8363 Jul 11 '16 at 06:25 AM

您好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 已经挂了二天了,没有人回答。

avatar image sha hu Jun 12 '18 at 11:06 PM

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?

(comments are locked)
10|2000 characters needed characters left
Viewable by all users
Your answer
toggle preview:

Up to 5 attachments (including images) can be used with a maximum of 5.2 MB each and 5.2 MB total.

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question