kodra
General speaking, I think this kind of logic is what one should avoid when designing any kind of programming language: editing itself as data. These "AddNode", "FindPort" and "ConnectInput" are the equivalent of editing your Python script as a string in Python then evaluate it later. That's what every programmer (except Lisp ones. Lisp-like languages, while being very powerful, arent mainstream for a reason) has learnt to avoid.
If you haven't yet tried to build an entire rig by yourself using apex, you have no idea of how fast and performant it is so far.
All the rig I could only dream to do on Maya (and the one that I could but were suboptimal in term of performance), I could do them in apex like never before.
so far I approach the 600Bone and +1200 apex node in my rig and I keep a +120Fps realtime performance, even the generation step of my rig is realtime and I never expected a single ounce of slowness that you described.
There is not one way to build an apex rig, all the problem you mention don't even mean anything in fact, if you think about it, Apex is very similar to the maya node editor, with the difference being that maya use 'tool' to generate that network, where you select bone on the viewport and then hit 'constraint', and then you automate that process through python script who ultimately work by doing these manual selection aumatically. a maya professional rig has never been realtime to generate in maya.
Apex graph is only data, complaining that you need to use another apex graph to generate apex rig is so wrong because :
- nothing prevent you from generating your apex graph using python the SAME WAY YOU COULD DO ON MAYA.
- nothing prevent you from executing an apex graph in your own python code as you generate it : you can build your own debug tool that fit your style, I did mine and I have no problem building insanely complex apex graph today, why can't you ?
apex have a ton of different way you can rig and ship your character :
- you can either build an apex rig like you'd do on maya, save your character and ship it to the artist, incrementing the save file as - you update your rig
- you can ship your character in an HDA, giving you the possibility to add tweak to the rig through the HDA's parameter, letting the artist configure his rig the way that would matter for the task
- you can ship the rigscript that would generate the rig on the artist scene, allowing the artist to modify the generation process by substituing certain part of the rig by other.
- use a mix of these above, like I do
Apex is a low level framework, whatever tool sidefx propose today are only a suggestion, 'rigscript', 'component', if you don't like them, then do it the way you want, use python to generate your graph, or vex for that matter if that how you fancy it. heck if you miss maya so much then maybe just redo all of there pseudo tool like 'constraint parent, constraint point, curve', there virtually no difference to that 'meta programming' you described when you use python to generate maya rig , it mostly string based anyway.
Don't call yourself a programmer if you can't figure out the abstraction behind apex by yourself.