Procedural Node-based Modeling: Proof-of-concept
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
I've always felt that somewhere between Fusion's Parametric Modeling and Direct Modeling there needed to be another option - something along the lines of Grasshopper or Dynamo. I've dabbled in developing my own add-ins, but vibe coding has allowed me to punch way beyond my weight. A few months ago I started scratching an itch - could I build a node-based modeling tool inside Fusion? The first test was to get a UI up and running - something simple like: could I build a box?
This first test was built in Python, HTML, JavaScript, CSS, and React using ReactFlow as the framework for the Node interface. I can dive deeper into how it works, but it essentially takes advantage of the lightweight Direct Modeling tools built into Fusion. Since the result is driven by the node graph, I can skip the complex parametric overhead. This allows me to build a lot of boxes near instantly:
The thing about working in a non-parametric space is that I could now manipulate the boxes in a way not typical of Fusion. Here I created a node type called a Falloff Effector - this uses a reference point in space to generate a field about which the boxes are moved:
I can chain these effects together to both move and scale the boxes within the radius of the point using a parametric falloff curve to define the rate of decay.
The next logical step was to try to pattern the boxes along a surface. I developed this test surface that has some very specific surface topology - things like convex to concave, and varying compression and expansion of the surface isoparametric features.
My surface patterning tools allow me to conform explicitly to the flow of the surface UV topology, or defy it to create regular grids on non-regular surfaces like below:
I also built a spiral tool specifically for patterning geometry around revolved surfaces. This example is taking advantage of the 3D Point node, which allows me to use sketch or construction geometry to define the point in space about which to apply the Falloff effect. This is but one of a handful of "math" nodes that can be used to drive various parameters.
All the above examples illustrate the capability by way of a procedural "box". I have a variety of primitive types that are natively supported, but I can also reference parametric geometries that exist in the scene. Here I built a little triad shape that can then be patterned and manipulated along a surface to make a car-grille-type-thing.
The add-in is built to be modular, and over the course of writing it, we (Claude.ai and I) developed a specification that allows new nodes to be added fairly easily and not break things (too much). I plan on adding to it - things like geometry masks, or mesh networks for multi surface pattering. For now, it's still very much a proof-of-concept. There are tons of convenience features that are missing - like node values only work in centimeters regardless of document settings, or viewport widgets that could help position things and help keep track of world space vs local space manipulations. There are some things that are flat-out broken - like graphs routinely lose track of references to things in the scene, such as a body that is to be patterned, or the surface it should be pattered upon. And I'm always running up against edge cases that break things - all the stuff that developers combat, I'm sure. But I have used it on projects, and I find it useful.
The main thing I wanted to do here was share what's possible and maybe start a conversation about a feature or new workspace that could be added to Fusion at some point if there's a need.