# 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

## Related Questions

### Corrupt values when writing and reading from the same RWTexture2D in HLSL/DirectX?

0  Asked on August 27, 2021 by b1skit

### BRDF for point lights should not return values over 1

1  Asked on August 27, 2021 by emil-kabirov

### Approximating Geodesics in a half edge DS, how can I refine my mesh to get good approximations

1  Asked on August 27, 2021 by makogan

### How to translate the center of an equirectangular projection?

1  Asked on March 3, 2021 by lucio-coire-galibone

### Properties of the image reconstruction filter in rendering

2  Asked on February 10, 2021

### Dynamic Array in GLSL

3  Asked on January 13, 2021 by archmede

### Applying voltages to conductors in passive-matrix LCD

0  Asked on January 5, 2021 by bisma

### Combine box shadow with a signed distance field

0  Asked on January 2, 2021 by weichsem

### Why is eye-based ray tracing preferred over light-based ray tracing?

2  Asked on August 12, 2020 by jheindel

### Aligning (matching) colors (white balance, brightness) of two scenes based on reference object

0  Asked on July 23, 2020 by przemek-b