AI and walls

How can I make AI to not go into walls but to go around walls? I dont want to use navigation mesh bc my scene is too complex.
When I use

self.worldAI.addObstacle(walls)

and set the AI to avoid obstacles:

self.npcBeh.obstacleAvoidance() 

it doesnt work, it still keeps going into walls.

I have no clue about Panda’s included AI, but this sort of things requires either a pointgraph or better, a navmesh. There exist other techniques like local avoidance, where actors scan their surroundings and act based on the findings, but I don’t think this makes sense for static mesh.

By the way, there are no scenes too complex for navmeshes. You can generate a navmesh from anything. I believe, some 3d modelling packages, e.g. blender, have the functionality to extract a navmesh from any scene (most probably by using voxels).

If your scene is simply too big for one navmesh, split it into multiple navmeshes and switch them at runtime.

PandAI does use navmeshes as well, I believe.

Yes, PandAI uses NavMeshes. In my case, Py2D is much better: sseemayer.github.com/Py2D/ maybe that’s something for you.

So how can I generate the navmesh?
I tried to use panda3d.org/manual/index.php/Mesh_Generation but I am getting errors

D:\pythonMeshGen>python BlenderMeshGen.py test.egg test3.egg
DirectStart: Starting the game.
Known pipe types:
  wglGraphicsPipe
(all display modules loaded.)
Creating full node list...
Correcting full node list...
Traceback (most recent call last):
  File "BlenderMeshGen.py", line 297, in <module>
    app = MyApp()
  File "BlenderMeshGen.py", line 50, in __init__
    self.createNewFullList()
  File "BlenderMeshGen.py", line 110, in createNewFullList
    if currentColNode.vertex[self.rightVertex] == self.oldList[i].vertex[self.lo
westVertex] and currentColNode.vertex[self.toprightVertex] == self.oldList[i].vertex[self.topVertex]:
AttributeError: 'NoneType' object has no attribute 'vertex'
Known pipe types:
  wglGraphicsPipe
(all display modules loaded.)
Creating full node list...
Correcting full node list...
Traceback (most recent call last):
  File "BlenderMeshGen.py", line 297, in <module>
    app = MyApp()
  File "BlenderMeshGen.py", line 50, in __init__
    self.createNewFullList()
  File "BlenderMeshGen.py", line 110, in createNewFullList
    if currentColNode.vertex[self.rightVertex] == self.oldList[i].vertex[self.lo
westVertex] and currentColNode.vertex[self.toprightVertex] == self.oldList[i].ve
rtex[self.topVertex]:
AttributeError: MyApp instance has no attribute 'rightVertex'

now this, still dont know what I am doing wrong

hmm it seems it doesnt work with uneven terrain