Building the NavMesh out of .adt's menu

User Tag List

Page 3 of 4 FirstFirst 1234 LastLast
Results 31 to 45 of 51
  1. #31
    Bananenbrot's Avatar Contributor
    Reputation
    153
    Join Date
    Nov 2009
    Posts
    384
    Thanks G/R
    1/3
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    @namreeb: No, I only chose that Recast should work in MCNK sized tiles, like pendra described, tt's all pregenerated. Then each adt gets its own mesh-file with 256 tiles with navigation polys in it. Since the 256 tiles are each within adt bounds, there will be no overlapping models, because I only save the tiles which belong to that specific adt.
    Well finally, I'm not the best at verbalise my thoughts :P

    @pendra: Probably I'll finally have something like your implementation for NavMesh generation. Right now I'm working on a 'WoWNavGen' Recast wrapper class, if it doesn't fit my needs, I have to some sort of rewrite the Recast algos.

    Actually, I wanted to know, if you had the same things with reading the MH2O RenderMap, the MLIQ of the WMOs (stormwind canals) and the funny rotation of boats.

    Thank you for your feedback!
    Last edited by Bananenbrot; 02-09-2010 at 09:00 AM.

    Building the NavMesh out of .adt's
  2. #32
    abdula123's Avatar Sergeant
    Reputation
    14
    Join Date
    Feb 2010
    Posts
    46
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I implemented simple navigation for my bot using recast&detour on small (max 2x2 adt) precalculated navmeshes.
    (bot written in Python, so I make dtNavMesh binding for it using Cython. pretty easy)

    but there is some troubles:
    1. gameobjects, created by server.
    bot stuck with postboxes, firepits etc.
    is there a way to read loaded M2 names/coords/rotations/scales from wow.exe's memory?

    2. holes in adt heightmaps.
    is there a more precise way to get holes, except from map chunk header's bitfield ?

    3. minor path calculation errors.
    at now I set agent's radius as 2.0-2.5 - and bot sometimes go VERY close to walls/obstacles.
    is this a reacst/detour problem or errors in my geometry generation?

  3. #33
    Apoc's Avatar Angry Penguin
    Reputation
    1388
    Join Date
    Jan 2008
    Posts
    2,750
    Thanks G/R
    0/13
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by abdula123 View Post
    I implemented simple navigation for my bot using recast&detour on small (max 2x2 adt) precalculated navmeshes.
    (bot written in Python, so I make dtNavMesh binding for it using Cython. pretty easy)

    but there is some troubles:
    1. gameobjects, created by server.
    bot stuck with postboxes, firepits etc.
    is there a way to read loaded M2 names/coords/rotations/scales from wow.exe's memory?

    2. holes in adt heightmaps.
    is there a more precise way to get holes, except from map chunk header's bitfield ?

    3. minor path calculation errors.
    at now I set agent's radius as 2.0-2.5 - and bot sometimes go VERY close to walls/obstacles.
    is this a reacst/detour problem or errors in my geometry generation?
    Your agent radius should be 0.6 (the radius of a Tauren model.

    As for the 'too close to walls' issue, it's not. Try making your actual movement a little more precise.

  4. #34
    abdula123's Avatar Sergeant
    Reputation
    14
    Join Date
    Feb 2010
    Posts
    46
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Apoc View Post
    Your agent radius should be 0.6 (the radius of a Tauren model.

    As for the 'too close to walls' issue, it's not. Try making your actual movement a little more precise.
    its not about movement precission.
    I use ClickToMove, so can see exact position of next movement point as white circle on the ground. and when I set radius to 0.6, movement position sometime set INSIDE walls/obstacles.

    with radius 2.5 all ok.

    so I guess, that these minor errors in my geometry building code.




    alse, about gameobjects models - I found, that gameobject's _vtable function #24 can be uset to get filename of model.
    this valid also for unit/player objects (and maybe other, not tested)

    _vtable#11 - for position.

    still not found how to get scale and rotations.
    is there any functions to get it?

    Code:
    Водопад насосной станции Кривого Клыка WORLD\EXPANSION01\DOODADS\COILFANG\ACTIVEDOODADS\RAID_DOOR\COILFANG_RAID_DOOR.MDX
    Большой костер WORLD\KALIMDOR\ORGRIMMAR\PASSIVEDOODADS\ORGRIMMARBONFIRE\ORGRIMMARBONFIRE01.MDX
    Горн World\SkillActivated\TradeskillEnablers\Tradeskill_Forge_01.mdx
    Наковальня World\SkillActivated\TradeskillEnablers\Tradeskill_Anvil_01.mdx
    Плакат "Разыскивается" World\Generic\Orc\Passive Doodads\WantedPosters\WantedPosterFramed01.mdx
    Топлянник World\Expansion01\Doodads\Silvermoon\Flowers\SilvermoonFlower05.mdx
    Топлянник (безобидный) World\Generic\PassiveDoodads\Traps\SpellObject_InvisibleTrap.mdx
    Горящая жаровня World\Generic\Orc\Passive Doodads\Braziers\SmallBrazier01.mdx
    Горящая жаровня World\Generic\Orc\Passive Doodads\Braziers\SmallBrazier01.mdx
    Наковальня World\Azeroth\BurningSteppes\PassiveDoodads\OrcAnvilStoneBurningSteppes\OrcAnvilStoneBurningSteppes.mdx
    Горн World\SkillActivated\TradeskillEnablers\Tradeskill_Forge_01.mdx
    Топлянник World\Expansion01\Doodads\Silvermoon\Flowers\SilvermoonFlower05.mdx
    Топлянник World\Generic\PassiveDoodads\Traps\SpellObject_InvisibleTrap.mdx
    Горящая жаровня World\Generic\Orc\Passive Doodads\Braziers\SmallBrazier01.mdx
    Топлянник World\Expansion01\Doodads\Silvermoon\Flowers\SilvermoonFlower05.mdx
    Топлянник (безобидный) World\Generic\PassiveDoodads\Traps\SpellObject_InvisibleTrap.mdx
    Горящая жаровня World\Generic\Orc\Passive Doodads\Braziers\SmallBrazier01.mdx
    Почтовый ящик World\Generic\PassiveDoodads\PostBoxes\PostBoxTroll.mdx
    Горящая жаровня World\Generic\Orc\Passive Doodads\Braziers\SmallBrazier01.mdx
    Горящая жаровня World\Generic\Orc\Passive Doodads\Braziers\SmallBrazier01.mdx
    Тюрьма Корки World\Goober\G_Cage02.mdx
    Горящая жаровня World\Generic\Orc\Passive Doodads\Braziers\SmallBrazier01.mdx
    Горящая жаровня World\Generic\Orc\Passive Doodads\Braziers\SmallBrazier01.mdx
    Топлянник World\Expansion01\Doodads\Silvermoon\Flowers\SilvermoonFlower05.mdx
    Топлянник (безобидный) World\Generic\PassiveDoodads\Traps\SpellObject_InvisibleTrap.mdx
    Горящая жаровня World\Generic\Orc\Passive Doodads\Braziers\SmallBrazier01.mdx
    Топлянник World\Expansion01\Doodads\Silvermoon\Flowers\SilvermoonFlower05.mdx
    Топлянник (безобидный) World\Generic\PassiveDoodads\Traps\SpellObject_InvisibleTrap.mdx
    Тюрьма Боевого Молота World\Goober\G_Cage02.mdx
    Last edited by abdula123; 04-09-2010 at 02:46 PM.

  5. #35
    Apoc's Avatar Angry Penguin
    Reputation
    1388
    Join Date
    Jan 2008
    Posts
    2,750
    Thanks G/R
    0/13
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Really?

    I mean... really?

    The GetModel function is mirrored on the 23rd (I think that's what it is this patch) and 42nd vfuncs.

    You can get the scale from the descriptors, and the orientation from any number of 'facing' functions, or straight from the GO itself.

    Please search.

  6. #36
    abdula123's Avatar Sergeant
    Reputation
    14
    Join Date
    Feb 2010
    Posts
    46
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    not 42. 24. typo happens

    Code:
        def getM2Name(self):
            addr = c_long(0)
            res = _vtable_call(self.ptr, 24, addressof(addr))
            addr = addr.value
            return cast(c_void_p(addr), c_char_p).value

  7. #37
    namreeb's Avatar Legendary

    Reputation
    668
    Join Date
    Sep 2008
    Posts
    1,029
    Thanks G/R
    8/222
    Trade Feedback
    0 (0%)
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by abdula123 View Post
    I implemented simple navigation for my bot using recast&detour on small (max 2x2 adt) precalculated navmeshes.
    (bot written in Python, so I make dtNavMesh binding for it using Cython. pretty easy)

    but there is some troubles:
    1. gameobjects, created by server.
    bot stuck with postboxes, firepits etc.
    is there a way to read loaded M2 names/coords/rotations/scales from wow.exe's memory?

    2. holes in adt heightmaps.
    is there a more precise way to get holes, except from map chunk header's bitfield ?

    3. minor path calculation errors.
    at now I set agent's radius as 2.0-2.5 - and bot sometimes go VERY close to walls/obstacles.
    is this a reacst/detour problem or errors in my geometry generation?
    1. I'm sure there is a way to do this, but it will require re-meshing the tile in question with the extra geometry.

    2. Not entirely sure what you mean here. I'm not aware of terrain hole information being specified elsewhere.

    3. It depends what you mean by "very close". As Apoc said, your radius is wrong. If you mean that it is so close to walls that it would put your character into the wall, it sounds like you're not doing everything you need to do in Recast. If you mean that it is simply hugging the walls and gives you 'bot-like' motion, that is to be expected. Detour's goal is to find a path that is close to optimal. It does this in two stages: first finding the optimal sequence of mesh polygons from the start to the finish and second it performs what's known as a string pulling algorithm to take that sequence of polygons and turn it into actual in-game coordinates.

    Edit: after reading another one of your replies, it seems that using the proper radius gives bogus pathing. Have you tried cross-tile pathing? Does it work?
    Last edited by namreeb; 04-10-2010 at 01:43 AM.

  8. #38
    abdula123's Avatar Sergeant
    Reputation
    14
    Join Date
    Feb 2010
    Posts
    46
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    [quote=namreeb;1849256]1. I'm sure there is a way to do this, but it will require re-meshing the tile in question with the extra geometry.

    2. Not entirely sure what you mean here. I'm not aware of terrain hole information being specified elsewhere.

    Edit: after reading another one of your replies, it seems that using the proper radius gives bogus pathing. Have you tried cross-tile pathing? Does it work?
    I use tile size 256x256, so many pathes, that calculated in runtime is cross-tile.

    error was is in translation MODF / MDDF coordinates to "normal" wow coordinates.

    it was done as
    Code:
                pos = (17066 - pos[2], 17066 - pos[0], pos[1])
                rot = (rot[2], rot[0], 180+rot[1])

    [code]

    now it done as
    Code:
                pos = (17066.666 - pos[2], 17066.666 - pos[0], pos[1])
                rot = (rot[2], rot[0], 180+rot[1])
    error is gone.
    at now agent with radius 1.0 not run inside walls.

  9. #39
    namreeb's Avatar Legendary

    Reputation
    668
    Join Date
    Sep 2008
    Posts
    1,029
    Thanks G/R
    8/222
    Trade Feedback
    0 (0%)
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)
    Using 1.0 will still give you some accuracy issues. You'll lose some narrow doorways that you shouldn't lose. What's more, what you're doing is masking some other problem. Using 0.6 should work just fine.

  10. #40
    ostapus's Avatar Active Member
    Reputation
    60
    Join Date
    Nov 2008
    Posts
    180
    Thanks G/R
    3/10
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Speaking about recast/detour, question to people who are doing recast/detour based navigation - how do you incorporate logic for water ? In general "heuristic" value for water supposed to be higher than land one but i am stuck to figure out how to implement it. I wish recast could be pointed to generate separate polys for land and water (in this case polys area field can be easily used).

    thanks
    Last edited by ostapus; 04-12-2010 at 11:49 AM.

  11. #41
    MaiN's Avatar Elite User
    Reputation
    335
    Join Date
    Sep 2006
    Posts
    1,047
    Thanks G/R
    0/10
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by ostapus View Post
    Speaking about recast/detour, question to people who are doing recast/detour based navigation - how do you incorporate logic for water ? In general "heuristic" value for water supposed to be higher than land one but i am stuck to figure out how to implement it.

    thanks
    What I do is that I first remove the RC_WALKABLE flag from all triangles that are underwater. Then I add the water surface to the mesh and let Recast see it as an actual surface. I then mark this water in the meshing progress, and give it a traverse cost modifier of 1.55. I also mark lava except that is given an "impassable" flag.

    The modifier is not perfect, but it seems to work ok and can easily be modified later to make it perfect.
    [16:15:41] Cypher: caus the CPU is a dick
    [16:16:07] kynox: CPU is mad
    [16:16:15] Cypher: CPU is all like
    [16:16:16] Cypher: whatever, i do what i want

  12. #42
    ostapus's Avatar Active Member
    Reputation
    60
    Join Date
    Nov 2008
    Posts
    180
    Thanks G/R
    3/10
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    thanks for reply.
    In this way you eleminating any underwater surface ? how do you pathing ie to underwater mines/herbs then ? On what step in mesh generation do you mark water, well as water ? Recast will rasterize land/water in one poly (the case where water/land coexists in one tile) so you either mark whole poly as land or water ? (loosing some precision, which could be not that big deal)

  13. #43
    namreeb's Avatar Legendary

    Reputation
    668
    Join Date
    Sep 2008
    Posts
    1,029
    Thanks G/R
    8/222
    Trade Feedback
    0 (0%)
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)
    To do underwater properly you would need the mesh to be aware of the vertical dimension, which it is not in recast and detour.

  14. #44
    MaiN's Avatar Elite User
    Reputation
    335
    Join Date
    Sep 2006
    Posts
    1,047
    Thanks G/R
    0/10
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by ostapus View Post
    thanks for reply.
    In this way you eleminating any underwater surface ? how do you pathing ie to underwater mines/herbs then ? On what step in mesh generation do you mark water, well as water ? Recast will rasterize land/water in one poly (the case where water/land coexists in one tile) so you either mark whole poly as land or water ? (loosing some precision, which could be not that big deal)
    Anything that is underwater is not pathable, simple as that.
    Also, you mark between building the distance field and building the compact heightfield.
    That means the regions/contours have not yet been created, hence no precision is lost. All Recast does it to go through all cells that your poly/box touch and give them the area type you passed. This is then used in the region and contour creation process to only make regions/contours of the same area type.
    [16:15:41] Cypher: caus the CPU is a dick
    [16:16:07] kynox: CPU is mad
    [16:16:15] Cypher: CPU is all like
    [16:16:16] Cypher: whatever, i do what i want

  15. #45
    ostapus's Avatar Active Member
    Reputation
    60
    Join Date
    Nov 2008
    Posts
    180
    Thanks G/R
    3/10
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    thanks, guess i need to check more closely recast code.

Page 3 of 4 FirstFirst 1234 LastLast

Similar Threads

  1. [World Building] The New Way to get to GM Island on Live Servers
    By Matt in forum WoW Advanced Model Edits
    Replies: 530
    Last Post: 04-18-2009, 05:36 PM
  2. [World Building] The 5th Azo Isle
    By AZO in forum World of Warcraft Model Editing
    Replies: 24
    Last Post: 10-06-2007, 11:15 AM
  3. [World Building] The 4 Azo Islands
    By AZO in forum World of Warcraft Model Editing
    Replies: 24
    Last Post: 10-06-2007, 08:47 AM
  4. Fake Leroying and scare the crap out of your guild =)
    By ragingazn628 in forum World of Warcraft Exploits
    Replies: 9
    Last Post: 12-03-2006, 01:44 PM
All times are GMT -5. The time now is 04:54 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Google Authenticator verification provided by Two-Factor Authentication (Free) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search