Note there are pictures of non-procedural models way down the list. One was provided within the thread itself, the other is Daz Original. These are not being used in my project.
This is a very early version of my humanoid generator, built entirely in Geo nodes, using procedural textures. It’s currently almost 4000 nodes, with and has over 70 controls.
One of the benefits of a procedural model VS normal models: Ability to add/remove/replace entire sections of the model instantly. Adding a 3rd eye, horns, wings, tail seamlessly, or change to cyclops, is a single click of the button, and near instant.
This is a WIP, I’ve only did the most basic rough out for most of the model, and just added the first level of details for the rest. I’m not an artist, I’m an engineer. I’m using math to make art! Comments that tell me what needs to be improved and how are welcome.
Currently, I’m in the process of rigging it, but auto-rig doesn’t work with procedural meshes… so if anyone knows a good tutorial on manual vertex group weight assignment for bones, please share.
If you want to see the rest of the pics I took along the way:
Very cool! I’ve had the same idea a couple years ago ,but I’m not smart enough to build the node tree
I’ve made a procedural skin shader that uses vertex colors as masks for the different layers: sss, pores, roughness, etc (you can take a look at the end result in my Pepper fanart here. If you want to take a look at it, I can send you a screenshot of the nodes.
I’d love a screenshot of the nodes.
My skin shader is 100% procedural. I use “named attributes” to set weights for various masks, like the freckles.
Added self-intersection joint fix.
How is the viewport performance when you change parameters? Such massive geonode trees arent exactly fast
“Such massive geonode trees arent exactly fast”
Is 120ms fast enough? I have timings turned on all the time, and optimize for speed. And I’m up to 6000 nodes now, having added horns, wings, and a tail.
That’s indeed not bad performance
I spend hours figuring out ways to do things differently when I see a node that uses >10ms. Doing things the right way, straight from the beginning, makes a world of difference. I’ve had some nodes >200ms for just one node… not something I would have ever even noticed without timers being on. And I optimize further by using switch nodes that ‘discards’ parts that aren’t being used. So, if tail is turned “off”, then zero calculations are done for that part.
Mesh boolean is the biggest one I had had to get rid of… It’s extremely time intensive, and it shouldn’t be. So, I had to make my own version to add arms/legs/hands/feet/head/torso to each other.
I look at this way: if it takes more than 500ms total, then I’ve failed. Project over.
The entire point of the project is to be able to generate a number of unique models in real time, without a hit to performance.
What’s with animation use? Have you tried?
It’s procedurally rigged, and uses blender’s standard rigify armature. Any animations that work with it should work fine with this model. I haven’t specifically tried yet.
Alright. Last question: does it support custom assets? Say, I need shape for eye socket; can the mesh/displacement map/whatever you used be replaced?
Sorta. The eye is procedural, and as you adjust the size (the shape could be done as well, if I added in a modifier for it, and probably will just cause you mentioned it), the eye socket automatically shapes itself around the eye.
Same with everything else, when it changes, whatever is around it changes to accommodate.
Now, if you just insisted on using your own pre-made eyes, that’s a different story. You’d have to set the procedural eyes to the same size/shape as the premade, for the socket & eyelids to be done correctly. And you’d have to apply the Geo-nodes modifier, and delete the eyes. (or alter the node group to delete the eyes after making the sockets)
And please, feel free to ask as many questions as you like. It helps me think about how to do things, and gives the info to others that may have similar questions.
Have you thought of making a “mannequin maker” version of this? Seems to me like it’d be easier (and useful to others) to create a humanoid figure made of disconnected parts and create basemeshes or starter bases for characters this way rather than trying to make the final model with just geonodes. I think there could be good money to be made there, with a “base model creator”.
It is disconnected parts that are stitched together, seamlessly.
There is a very specific reason why I’m not using base meshes. Data-storage.
The target audience for my product is video games, where each high-def mesh takes up massive amounts of data storage, and if it’s a MMO, bandwidth.
With my product, you just have to store the math formula, and each new model only takes up the amount of space/bandwidth as the summation of input variables… Same with textures. 1000’s of 4k resolution textures would take up an insane amount of space… VS 1 formula that can replace all of them.
If you’re a gamer, have you ever noticed each bad guy has one model with 100’s of copies? With my system, each ally and enemy would be created at runtime and be completely unique.
That’s pretty great! But it seems that there’s been a bit of a misunderstanding in what I said: my proposal was to use your system to release a “primitive-based character creator” of sorts. I’d totally buy an addon that’d allow me to quickly iterate between different proportions and sizes of the character (total height, limbs’ length, limbs/torso/waist/hips width, distance between the eyes, head/hands/feet size, etc.) before diving into modeling the details of my characters and settling on a final look.
Does you setup allow something like that?
I’m imagining them looking just like this: image 01, imag2.
It could, if I turned off “attachment” of hands/arms/legs/head/torso/feet.
And my current version does everything you’re asking for… and way more.
If I knew how to make a website that could load Blender and export the models, I absolutely would do that. Assuming I got enough in sales to pay for the server…
I’m not overly found of selling the node-group, would rather sell the results very cheaply.