# Defining "inside" and "outside" of a 3D space

Computer Graphics Asked by Avatrin on August 27, 2021

I am not sure if this is the correct SE to ask this question. However, lets say I have been given 3D models of several enclosed spaces.

I want to populate spaces with, lets say, planes flying through them, taking the optimum route from A to B. Since there are many of them, I want to write an algorithm that does this; I already have the 3D models of the planes.

I am looking for resources I can use to learn how to do define the boundary conditions for the opimization algorithm given the 3D model.

I think you can make a graph of the entire surface and have your algorithm "walk" over it. Your planes would be hugging the surface but it would be the shortest. You could fix the hugging by a local upward translation on the plane.

If you have a weird maze-like structure, you might want to "cross the gaps", so you need to adapt the algorithm to be able to cross air gaps, you could do this by just iterating all triangles and connecting them to all other triangles (thus creating a graph). Of course, you can't pass through the walls, so you need to take into account the surface normals. If you construct the lines between two surfaces, and you compare the surface normals to the direction of that line, it can tell you whether you are going through the surface (forbidden) or away from it (crossing air gaps). If the 2 surfaces are direct neighbors you don't need to do the line-normal check, and you can assume your algorithm can walk from one triangle to the other.

Most 3d model files reuse the same vertices for multiple triangles so it's easy to check whether they are neighbors: just check if they have vertices in common.

Once you have constructed the final graph, you can just use a pathfinding algorithm to find the shortest path to traverse the graph.

Answered by AnnoyinC on August 27, 2021

As no one else seems to want to suggest something, given that you said you wanted to navigate within an arbitrary enclosed volume, perhaps you could use an approach similar to that of the 1995 game Descent.

IIRC the world model of the 'mine' the spacecraft and enemy robots navigated was made up of "cuboid" units/voxels that pieced seamlessly together, some of which had solid walls that then formed the boundaries of the enclosing volume. The source code is freely available online e.g. here .

If, in the likely scenario you can't force the enclosing volume to have quadrilateral facets, you might want to consider "tetrahedral" volumes.

Answered by Simon F on August 27, 2021