Consider that a robot has to travel from one point to another in a non-grid-like plane. How will I find the shortest path if there are things like a forest, etc? I know that grids can use A* algorithm. But another example of what I'm trying to achieve would be a zombie which has excellent knowledge of the terrane trying to find it's shortest path to the human.
You can reduce this to something more tractable if you make a simple few assumption: the robot/zombie is a point.
This is to avoid things like checking if you fit and so on. If the robot/zombie is a circle you can make all the other objects 'fatter' by moving all the edges of the obstacles toward outside the object by the radious of the circle. If the robot/zombie is a rectangle you can still push the edges out but use the cube dimenstions to do it, but this doesn't work if the rectangle should rotate.
Once you are trying to find the path for a single point then it become simpler. Transform every vertex of the 'fat' polygon obstacles as a node in the graph, and connect it to every other node that's directly visible (not going through some obstacle). If you are in 3d you need to consider edges and the problem becomes a bit more tedious.
Once you have the graph do A*/Dijkstra/whatever works for your problem.
If you want really precise results you need to be careful around corners if your robot/combie is a circle, because going around the corner becomes moving on a arc segment. If you are running a game/simulation the difference is not likely visible except for very thin obstacles and relatively large circles/robots/zombies.
For performance you can precompute the graph if the setup is static. Also the number of nodes depends on the number of vertices of the obstacles so it might be worth running with lower quality objects for path-finding.