Procedural Modeling

Starting with a simple input cube, the tool allow customization of the size in X, Y, Z.
During the first step of defining general dimension, the users are allowed to customize corner’s beveling and irregularity from slightly booleaning the initial cube input. 
The tool then take the primitive facing in Z+ direction as the source to spawn random points on its surface. The user then control how many points they would like to have on this electrical box.
These points then will be used to create smaller components inside the final assets. To control which “kind” or “species” of the smaller components, point attributes are assign to each point by user’s input probability.
For example, of 10 points, we can say: 0.4(40%) to have “Switch” attribute, 0.2(20%) to have “CircuitBox” attribute, and so on. 
These information then become used to populate premade smaller assets into the box. Next, dynamic modeling details like wires and cables are generated based on these smaller component models.
 The tool is set in the way that, for each “Switch” model, on the higest primitive surface, there will be a point with “start” attribute for the wire.
Similarly, for each “CircuitBox” highest primitive surface, there will be a point with “end” attribute. The “start” and “end” attribute for the pairing points then form into a line.
These lines then used to similate the cables with the rest of the models inside the box act as collision objects. 
Once smaller objects are placed, the user also has an option to define “empty area.” This can casually acts as negative space in the overall design, or they can use this area to place hero objects or the models they want to emphasize manually.
Once the design is completed, optimization options are included. The user can define the limit of polycounts on the overall model, or specifically to generated wires. The smaller premade assets are optimized already so they should be ready to be integrated from the beginning. 


2025 Chatrin Samanchuen
All rights reserved
Chatrinsamanchuen@gmail.com
Bangkok, Thailand