###### Figure 01: Basic 3D Space Filling (10-20 Iterations).

As a progression from my previous research on 2D Space Filler, I managed to develop the 3D version of the Definition. It’s a Program which can aggregate an initial geometry into the 3D space around it in a growing pattern. It works like a living organism which can sense its existence and its surroundings. In my previous research, I developed a system which can expand its self recursively, without getting stuck in the inner space. The flexibility of the Algorithm allowed for a variety of shapes to operates on. We started with a simple square shape, but we managed to drag triangles and hexagons to the operation.

###### Figure 02: 3D Space Filling (50-100 Iterations).

The special thing about the 3D space filling is that it differs from the normal 2D on its growth nature. Space Growth follows more directions on space than the one in 2D enumerations, Therefore, the number of possibilities increases by N factor. Additionally, the aggregation start to sense more than a 2D region. Actually, it starts to sense a collection of masses rather than one, as its almost impossible to reach acceptable geometrical expansion or flourishing without enough number of iterations.

###### Video 01: 3D Space Filling

So I needed to manipulate my original algorithm to fit the new criteria. I installed an initial geometry, it was a simple box, but that drove a full refurbishment inside the definition. The number of possibilities of movements raised to match the number of faces. All handling operators such like as evaluators and area calculators needed to be converted into new geometrical operators.

###### Figure 03: 3D Space Filling with growth branching.

The issue of the geometrical type of representation is another challenge faced me while developing the Space filling algorithm. On higher dimensions, with a massive number of iterations. Each Iteration with all its inner code line is simply an order for the computer or the graphic engine to redraw the scene from the beginning. Maybe we don’t feel it in lighter scripts, But it’s more than obvious on heavy codes. In some cases, its easier to just delaying the Redraw to the end of the running code. In simulations such like my code, it’s very important to follow up with the growth in real-time.

Therefore, I decided to replace the initial geometry with mesh representation. Mesh representation performs much faster and much efficient on recursive processes with massive data pools. The way the mesh is identified for the program allows the computer to handle it much easier than the normal NURB Geometry. To be specific, I can say 50% less on very small algorithms which take 4-6 seconds. Can you imagine the cost reduction on expensive computing for large clouds of geometrical representations?!

The only thing with meshes that it behave irrelevantly different when we make a query for its faces. The Mesh sometimes subdivides its geometry’ faces on one plane more than once, It’s the way it usually defines its contents, but that would cause the status of more than one geometry centre. and as a result, a repeated collided patterns. I fixed this problem by using the mesh vertices instead, by using an average value, it helped to keep using the meshes for rapid geometrical enumerations.

###### Figure 04: 3D Space Filling with Mesh-Geometry and Shadowing.

At the beginning, when I used the Box for the space filling, It was very easy to pack the aggregated geometry in perfection, But when I tried other kinds of geometries, I realised that its very important to use familiar geometries which come with identical edges and angles; Mathematical geometries. The irregular geometries don’t fit together for 3D space Filling, it starts to deviate and intersect. sharp edges intervene with right angles. This why I recommended a patience on initial geometry selection.