PYTHON: Maya Procedural Graphics Generator

- All Elements

One of my favorite things to is experimenting with ways of generating procedural designed tools that are art directable. Obliviously these are just experiments, so not all of them work, but most of the time they can at least be re-purposed into something interesting like this specific tool.

My original idea in this case was to art direct a 3D landscape using curves. At it's fundamentals, it would be a tool that would generate connecting curves based on proximity, and then would loft those curves into a landscape. As it would turn out, I was able to find a pretty efficient way of doing this in Python. However, for something as vast and detailed as a landscape, the tool would require a lot more work then the time I had available. So instead I decided to make it into a poster graphics generator for a SCAD club that I was Co-President of.

Python Data Management


What I personally enjoy about Python is the ability to generate new procedural variables on the fly with lists and dictionaries. Using the code above along with a few other snippets, I was able to grab the world positions of CV in the curves selected and then compare them all easily and efficiently; no matter how many curves I had selected, or how many CV's were in them.

Once I had all of the data I needed, I would simply loft them based on their connecting curves as shown below.

Final Outputs


All of these backgrounds used the same tool and were generated from the same curves 'D' 'M' 'C', but their positions and proximity values were changed.

The biggest issue with the way that I am connecting these curves is that they create focal points at the edges. One way to fix this would be to add some randomization to the CV values based on the arc tangent of sequential CV's on the curve. My next iteration of this script will have this feature.