[Help] Navigation mesh objects menu

User Tag List

Results 1 to 15 of 15
  1. #1
    unsigned's Avatar Member
    Reputation
    2
    Join Date
    Jul 2023
    Posts
    14
    Thanks G/R
    11/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    [Help] Navigation mesh objects

    Game Version: WoTLK 3.4.2.50664

    Afternoon, have been working on an internal for a while and over the last couple of days I have been learning about navigation meshes, recast / detour, etc, and have successfully implemented it.


    I'm using an .obj file for the current tile geometry (Extracted using: GitHub - Kruithne/wow.export: 📩 Export Toolkit for World of Warcraft) & loading the navmesh in game. I noticed that the geometry for the tile is just the terrain, and a .csv file is generated that lists all objects, their position & rotation.

    I am now wondering how to go about adding these objects to navmesh? from other posts I can see that some people use the temporary obstacles feature from recast / detour but i would assume that would only be for dynamic objects (campfires etc.). I have tried to create a parser that will take the base tile .obj file and add the objects onto it, before creating the navmesh but I wanted to ask here first to make sure I'm not wasting my time on something that could be a lot simpler. Here's a showcase of what my parser outputs currently:


    I'm using stormwind as an example, I'm able to merge the two files but I'm guessing i have to:
    a) Find the original tile origin point and translate the buildings to the same
    b) apply some rotation matrix / scale to the buildings.
    Last edited by unsigned; 09-08-2023 at 11:06 PM.

    [Help] Navigation mesh objects
  2. #2
    Glitt's Avatar Active Member CoreCoins Purchaser
    Reputation
    38
    Join Date
    Dec 2022
    Posts
    49
    Thanks G/R
    8/15
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    You'll want to follow their instructions for installing their blender add-on. That will allow you to combine the doodads to the adt and represent it all in an obj. Keep in mind that some objects are dynamic and only populated by the game client during loading, and won't be present in your mesh files.

    For things that don't align as expected you can select the chunk of things (in blender) and do align geometry to origin or align origin to geometry. I always forget it's one of those options.

  3. Thanks unsigned (1 members gave Thanks to Glitt for this useful post)
  4. #3
    unsigned's Avatar Member
    Reputation
    2
    Join Date
    Jul 2023
    Posts
    14
    Thanks G/R
    11/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Glitt View Post
    You'll want to follow their instructions for installing their blender add-on. That will allow you to combine the doodads to the adt and represent it all in an obj. Keep in mind that some objects are dynamic and only populated by the game client during loading, and won't be present in your mesh files.

    For things that don't align as expected you can select the chunk of things (in blender) and do align geometry to origin or align origin to geometry. I always forget it's one of those options.
    For now I'm leaving blender as a last resort, appreciate the info though. I'm trying to make my project as self-sufficient as possible, auto-generating the meshes as needed, etc.

    Would be a hefty job doing each tile for each continent manually with blender I assume haha

  5. #4
    Glitt's Avatar Active Member CoreCoins Purchaser
    Reputation
    38
    Join Date
    Dec 2022
    Posts
    49
    Thanks G/R
    8/15
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by unsigned View Post
    For now I'm leaving blender as a last resort, appreciate the info though. I'm trying to make my project as self-sufficient as possible, auto-generating the meshes as needed, etc.

    Would be a hefty job doing each tile for each continent manually with blender I assume haha
    You can hopefully look at both TC and RecastDemo projects and make one thing out of those ideas to have a mesh builder/tester - where you click the path, edit the mesh, or bake all without having to fire up the game until you are ready to make use of it.

    edit: I wouldn't count out blender right off. when things don't work as intended, blender is that last resort to clean up a tile for either just walkables or off-mesh connections. A lot easier to learn blender in 10 minutes and edit some geometry than expecting perfect results with one set of parameters used in Recast.
    Last edited by Glitt; 09-09-2023 at 12:13 AM. Reason: info

  6. Thanks unsigned, Corthezz (2 members gave Thanks to Glitt for this useful post)
  7. #5
    unsigned's Avatar Member
    Reputation
    2
    Join Date
    Jul 2023
    Posts
    14
    Thanks G/R
    11/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Glitt View Post
    You can hopefully look at both TC and RecastDemo projects and make one thing out of those ideas to have a mesh builder/tester - where you click the path, edit the mesh, or bake all without having to fire up the game until you are ready to make use of it.

    edit: I wouldn't count out blender right off. when things don't work as intended, blender is that last resort to clean up a tile for either just walkables or off-mesh connections. A lot easier to learn blender in 10 minutes and edit some geometry than expecting perfect results with one set of parameters used in Recast.
    Just a small update: Appreciate the advice to give blender a go, got it working with their object translation stuff in their plugin, will make it a lot easier for future. So I now have full per-tile navigation and am trying to setup my navigation system to use a grid tile system where I can load / unload tiles when needed. Having trouble right now with loading them into the grid but I should figure it out

  8. #6
    namreeb's Avatar Legendary

    Reputation
    658
    Join Date
    Sep 2008
    Posts
    1,023
    Thanks G/R
    7/215
    Trade Feedback
    0 (0%)
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

  9. Thanks unsigned (1 members gave Thanks to namreeb for this useful post)
  10. #7
    unsigned's Avatar Member
    Reputation
    2
    Join Date
    Jul 2023
    Posts
    14
    Thanks G/R
    11/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Oh wow, hadn't seen this before lmao. Really nice work appreciate it mate.

    Currently having issues querying the mesh with multiple tiles, etc. This should help

  11. #8
    namreeb's Avatar Legendary

    Reputation
    658
    Join Date
    Sep 2008
    Posts
    1,023
    Thanks G/R
    7/215
    Trade Feedback
    0 (0%)
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by unsigned View Post
    Oh wow, hadn't seen this before lmao. Really nice work appreciate it mate.

    Currently having issues querying the mesh with multiple tiles, etc. This should help
    Thanks. It's not feature complete, but what is outstanding is mostly documented in the issues. It's starting to get some attention from others to start checking things off the list. I accept MRs

  12. #9
    InnerSilence's Avatar Active Member
    Reputation
    29
    Join Date
    Oct 2019
    Posts
    92
    Thanks G/R
    13/16
    Trade Feedback
    0 (0%)
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    Things you are doing are really good for learning. But in the end it is what namreeb already did as well as wow emulators, so there is not much point to do it again.
    About what you asked here are my 2 cents.
    1- What you get from the wow export is the full mesh of the tiles but for the navigation collision mesh should be enough if not better.
    2- You need to consider liquid mesh too and handle it seperately, last time I checked wow export did not export those. Things might have been changed since.
    3- Yes it is better to bake objects (buildings etc.) into the the navmesh itself (there is no reason not to do this) and use that temp obstacle features only for the dynamic objects. (I think namreebs project wont use this system if I am not mistaken).
    4- I am not sure what is your approach to find path through many tiles but if you are thinking you can just load tiles on demand, it may not be that easy. I think namreeb can give you a better insight in this regard.

  13. Thanks unsigned (1 members gave Thanks to InnerSilence for this useful post)
  14. #10
    namreeb's Avatar Legendary

    Reputation
    658
    Join Date
    Sep 2008
    Posts
    1,023
    Thanks G/R
    7/215
    Trade Feedback
    0 (0%)
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by InnerSilence View Post
    4- I am not sure what is your approach to find path through many tiles but if you are thinking you can just load tiles on demand, it may not be that easy. I think namreeb can give you a better insight in this regard.
    I'm aware of three approaches to this, but there are probably others. If you're attempting to build a path between two points on non-adjacent tiles:

    1. Load all tiles around both the start and destination tiles, and all tiles in between, with a slight radius. The problem with this is that mountains, obstacles, etc. may make the optimal path take a non-intuitive series of tiles.
    2. To solve this, you could use a hierarchical approach. Each tile would have a reachability cost for every other tile. So you could do an A* search on which tiles to load for an arbitrary (start, stop) pair.
    3. Just load all tiles for the map.

    I am heavily in favor of option three irrespective of use case:

    1. You're running a server. You're going to want to support pathfinding across the continent for all players.
    2. You're running a bot. Most paths are going to be constrained to one tile, or two adjacent ones. For those that aren't, if RAM is really that big of a problem for your users, you could offer long-pathfinding as a RESTful API service, which would double as a piracy protection mechanism.
    3. It's 2023. Just get more RAM.

  15. Thanks unsigned (1 members gave Thanks to namreeb for this useful post)
  16. #11
    unsigned's Avatar Member
    Reputation
    2
    Join Date
    Jul 2023
    Posts
    14
    Thanks G/R
    11/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Yeah 100% agree, not trying to reinvent the wheel, more doing it so I can learn more about navmeshes etc.

    The solution I had in mind, instead of loading a path from A to B across a large number of tiles like @namreeb mentioned, I would be under the assumption that any routes I create would almost never need to navigate this far by foot, rather I would go through other transport methods before defaulting to walking. e.g.

    1. If within ~1000m, ignore all conditions and just walk there
    2. Check if hearthstone is available & near target
    3. Check flightpath taxi nodes, if flightpath nearby connects to taxi node nearby target, take it.
    4. Portals etc.

    With this solution I feel like loading a 3x3/5x5 grid of tiles around the current tile would be perfectly fine? But yeah its definitely giving me a headache right now with the bounds & tiling etc. Appreciate the feedback

  17. #12
    namreeb's Avatar Legendary

    Reputation
    658
    Join Date
    Sep 2008
    Posts
    1,023
    Thanks G/R
    7/215
    Trade Feedback
    0 (0%)
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by unsigned View Post
    rather I would go through other transport methods before defaulting to walking. e.g.
    Yep. But I would argue that this is beyond the scope of a navigation library. It's role should only be finding a path between two different places, avoiding obstacles, and that's it. This kind of thing belongs in some bot-specific game logic.

  18. #13
    InnerSilence's Avatar Active Member
    Reputation
    29
    Join Date
    Oct 2019
    Posts
    92
    Thanks G/R
    13/16
    Trade Feedback
    0 (0%)
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    I also came to the conclusion that option 3 is the best along with trimming the mesh to get smaller mesh sizes. For the cases of running multiple bots, in order to reduce the RAM usage, nav server can be used.

  19. #14
    unsigned's Avatar Member
    Reputation
    2
    Join Date
    Jul 2023
    Posts
    14
    Thanks G/R
    11/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by InnerSilence View Post
    I also came to the conclusion that option 3 is the best along with trimming the mesh to get smaller mesh sizes. For the cases of running multiple bots, in order to reduce the RAM usage, nav server can be used.
    Do you load the entire continent into a single mesh?

    Edit: I'm probably going to go for the entire continent mesh for mine for the moment, because I've got plenty of RAM & I probably wont be running multiple instances. Will revisit the tiled implementation at a later date probably. Ill update with progress
    Last edited by unsigned; 09-17-2023 at 02:44 AM.

  20. #15
    InnerSilence's Avatar Active Member
    Reputation
    29
    Join Date
    Oct 2019
    Posts
    92
    Thanks G/R
    13/16
    Trade Feedback
    0 (0%)
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by unsigned View Post
    Do you load the entire continent into a single mesh?

    Edit: I'm probably going to go for the entire continent mesh for mine for the moment, because I've got plenty of RAM & I probably wont be running multiple instances. Will revisit the tiled implementation at a later date probably. Ill update with progress
    No that makes testing and creation very hard. I do tiles then load them all into the memory.

Similar Threads

  1. [python] Navigation mesh, call for help
    By nopz in forum Programming
    Replies: 1
    Last Post: 02-17-2020, 06:12 AM
  2. [HELP] WMO Game Objects
    By NitroMan in forum World of Warcraft General
    Replies: 3
    Last Post: 06-09-2010, 01:22 PM
  3. [Help Request] TLS / Object Structure
    By Zephir in forum WoW Memory Editing
    Replies: 18
    Last Post: 04-21-2009, 08:08 AM
  4. In help. Need a object ID for a wall
    By Victoria in forum World of Warcraft Emulator Servers
    Replies: 10
    Last Post: 02-16-2008, 03:18 PM
  5. Please help i have Object Problems
    By caution1 in forum World of Warcraft Emulator Servers
    Replies: 3
    Last Post: 12-19-2007, 09:04 PM
All times are GMT -5. The time now is 06:15 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search