This is working a lot better than the pose sequencer, the timeline sequencer. Functionally it’s the same, visually it provides a much-needed overhaul.
I think I can now retire the pose sequencer in favor of this.
However, I’m not too familiar with actual timeline structures and all that… if you think something is missing visually, do inform so I can address accordingly. I pretty much built this off of “This is how I feel it should work,” not necessarily “This is how it should actually work in a similar program” lol.
Should be ready to upload the next version soon. After tweaking this, the code probably needs a lot of TLC.
The old ordered point system quickly became unable to serve the purpose I was looking for when it came to performing more complex movements across the model…
Now I’m working through generating a more rig-accurate system for part movement:
Maybe once this is all said and done and working and polished, I move on to trying to get it to develop a Blender extension that converts its origin-point rig into a proper Blender rig lol… probably not, we’ll see.
I have now reached what I would officially dub the “1.0” build of the ARCticulation tool. I’m now in the process of just building a new model from the ground up using the new tool so I can find any little minor bugs with the system that require addressing. Here’s a preview of what it looks like:
The labels/rig can be hidden. The entire rigging system has been fully redone from the previous “ordered” structure into something akin to a more proper rig structure. I can now have proper branching parts that function individually with the whole, such as a shoulder piece branched from the main arm:
I’ve included a whole diagnostics systems for finding faults in the script and am slowly but surely running through things… for example I found a bug this morning that didn’t even cross my mind during the entire testing because I wasn’t creating and renaming clips across the board, just running with a basic model I setup ahead of time.
As a result, I came across an issue where I created some clips, renamed them later… and the Sequencer was only seeing the old names! Because of that, it wasn’t firing off the clips correctly in the sequence, saying they were missing… a major flub!
Honestly just glad to be past the major hurdles of the project, and am now ironing out the small kinks as a I develop a new model to fully test out the ARCticulation system.
I’ve also been consistently throwing it against sketchup rubocop simulations as well as forcing it to adhere to tenants laid out on the Sketchup Developer’s site, which has allowed me to find and address multiple problems with the underlying code. I’ll probably try putting it through a more proper test later.
Some continued progress on the tool… moving on to “contact awareness,” not necessarily “collision physics.” It’s aware of the parts around it, which can serve as blockers to avoid clipping, or push other parts out of the way when they make contact… had to start doing C++ to include this, not sure if I’ll keep it or not.
Slowly building out this model as I continue to improve the tool. Those little + symbols that appear on the parts when the shoulder is selected are showing the contact points it’s detecting.
I’m using C++ for the mesh contact queries. Ruby is still the big contender and controls everything higher-level: joints, limits, driver/passive decisions, yielding, returning, UI, Smart Rig, transactions, etc. Pretty much it tells Ruby “are these meshes touching?”, then Ruby decides what ARCticulation should do about it.
But to break it down, it:
Stores cached triangle meshes in a native contact kernel.
Tests two transformed meshes for contact, clearance, and penetration.
Performs broad-phase/BVH traversal and triangle-level intersection checks.
Returns contact points, normals, distances, and diagnostic work counts to Ruby.
Evaluates hypothetical Yield and Return poses without moving SketchUp geometry.
So it can function the original way, or with contact awareness. Both can function at the same time, so you can still set your point limits if you want.
Next goal is to try and make clips contact-aware. For example, I made a clip where the arm was positioned behind the body and another where the arm was positioned on top of the chest. The clip, as expected, clipped through the torso to get the arm there. I’ll need to see if I can plan contact-aware routes with parts so they go from Point A to Point B while keeping the contact awareness contract in mind.
I had to scrap the contact awareness… it was working fine for one contact point, but as soon as multiples were introduced (Such as shoulder armor on the shoulder joint), it just kept locking up. Was fighting too hard against it, so gave in and scrapped it.
I’m currently in the process of consolidating all the tools… it got annoying having like five different windows open for using the various tools/processes. Everything (Excluding the Export option) is now in the “Rig Editor” tool:
Some new features include an actual proper motion profile tool where you can use default motion profiles or create your own (I believe including this idea originated from panixia).
The newest tool is a super simple camera tool that allows for some super basic camera pathing:
Put it all together and you get some simple but nice camera motion and model motion:
Considering I’ve had no real knowledge prior to this and am just making this off pretty much the equivalent of a gut feeling… I think it’s turning out pretty good so far?
I guess I’ve gone ahead and added animation now, because now the entire rig can be moved and the position saved to produce viable “motion” outside of just the body moving while stationary. Here’s the initial “jump test” (I haven’t made legs yet lol):
And here’s me attempting to use my amateur camera pathing system to give it a more dynamic shot:
Still trying to work out various kinks… these functions all came about after I came across “problems” with the rig and articulation inheritance and all that jazz, which have been addressed.
Getting closer and close to release now! Maybe a couple more weeks.
Finally moving on to the hands, and found a bug (Or intentional limitation at the time) with the Rig Controls that won’t allow me to make multiple controls for the fingers; only one control. So while I can do a open/close flex of the fingers, I can’t then make controls that throw hand symbols n’ stuff, like a peace sign lol.
Also found some inconsistencies with undo/redo, as well as a slew of other issues such as the rig graph not updating joint limit icons while applying changes… once I get those addressed, along with a general pass-through on the extension structure, I’ll probably upload the first version to the Sketchup Warehouse.