2022.07.20
Highlight for this release is Meshes meshes meshes!
- ADDED Translate & Rotate Stiffness Simplified "Pose Stiffness"
- ADDED Mesh Export & Import Meshes are now included when exporting and importing!
- ADDED Attach Constraint Like a Weld Constraint, but soft and animated
- ADDED Closed Loop Recording Alternatively recording strategy
- ADDED Pin Constraint Axes Fine-grained control over each axis of a pin constraint
- ADDED New Frameskip Default More intuitive, less surprising skipped frames
- ADDED Output Geometry You can now generate Maya geometry from a Ragdoll Convex Hull
- ADDED Simplified Density No more types, just a number
- ADDED Convex Decomposition 2.0 More performance, simpler interface
- ADDED Frameskip Ignore A more intuitive behaviour when skipping frames
- ADDED Ignore Mass More predictable stiffness
- ADDED Cache HUD More accessible cache options
- FIXED Record Stuck at 0% Fix for a semi-common recording issue
- FIXED Import Solver Attributes Minor bug squashes!
- FIXED Use Selection for Record and Snap The Use Selection option now works as expected
- FIXED Group Enable Enable and disable markers of a group, all at once
- FIXED Locomotion Empty Terrain More robust handling of terrain
- FIXED Predictable Enabled Attribute
- FIXED Infinite Terrain More robust terrain for Locomotion
- FIXED Fields Crash Less of these, begone!
- FIXED Solver Bounding Box A little improvement
- FIXED Locomotion on Linux A blunder in the last release prevented use on Linux
- FIXED Viewport Refresh Meshes and limits sometimes would not refresh properly
- FIXED Locomotion Crash Occasional crash on scene-open with a plan in your scene
- FIXED Cacheless Save Fresh simulation on every scene open
Leave any comments and report any issues here.
Showcase
We've launched a Ragdoll Challenge since the last release, here are some highlights!
Crabomotion
From the ongoing competition by Kaehwai.
Hands
By V4NDL0 on the forums.
Jason
Some clips from Jason's LinkedIn feed over the past 2 weeks.
Raggraph
In August, we're heading to Siggraph 2022 in Vancouver!
We'll be over here, at booth 442.
Running a handful of demos of how Locomotion works under the hood (hint: robotics tech!) along with the basics of Ragdoll.
Our booth will look something like this.
We'll be wearing t-shirts that look like this.
And have some nice banners that look like this.
Preliminary schedule looks like this.
- Aug 9th:
- 11:00 Intro with manikin
- 13:00 Dragon rig setup
- 14:00 Dneg
- 15:00 Requests
- 18:00 End
- Aug 10th:
- 10:00 Hands and fingers
- 11:00 Self-walking rhino
- 14:00 Dneg
- 15:00 Requests
- 18:00 End
- Aug 11th:
- 10:00 Locomotion
- 11:00 Dneg
- 13:00 Best of/Requests
- 16:00 End
Translate Rotate Stiffness
The most important and complex aspect of Ragdoll are the Pose parameters.
Pose Stiffness
Pose Damping
Pose Space
In an effort to simplify these attributes, you'll now find an alternative - experimental - set of attributes.
Translate Stiffness
Translate Damping
Rotate Stiffness
Rotate Damping
A Translate Stiffness = -1
means "infinite" or "locked". It's the equivalent of Translate Motion = Locked
.
Use the new option in the Assign
option box to enable these.
Mesh Export Import
Any replaced mesh is now included in the exported .rag
file, enabling you to import meshes onto characters that are missing the originally replaced mesh.
This should help keep both scene files and rag files clean and self-contained!
To the programmers out there, the .rag
file now features this section.
"ConvexMeshComponents": {
"members": {
"indices": {
"type": "UintArray",
"values": [
0,
1,
2,
]
},
"vertices": {
"type": "PointArray",
"values": [
1.8463890552520752,
-0.5881761908531189,
-0.28559789061546326,
]
}
},
"type": "ConvexMeshComponents"
},
These are unique vertex positions of one or more meshes. Ragdoll separates them into individual convex hulls by looking towards their connectivity, as per the indices
array.
As a side-effect, you are now also able to delete the mesh you used with Replace Mesh
. Keeping your scene a little more clean.
Convex Decomposition 2.0
The automated convex hull mechanic has been updated and is now both faster and easier to work with.
Before
After
Furthermore, you now have the option of baking the automatically computed convex hull so as to avoid recomputing it each time you open the Maya scene file.
For example, here we've got a decomposited human mesh.
And here you can see how we get to keep the collider, but lose both the connection and the automatic decomposition. File-open times are now optimised, as well as file size. As we only store the bare essential vertices for the convex hulls!
Convert to Mesh
You can now convert any Marker geometry - including convex hulls - into Maya geometry!
Attach Constraint
The Pin Constraint has been expanded and can now pin one marker to another.
Under the hood
This is exactly the same as calling Reparent
to parent one marker to another. Except a marker can be attached to many other markers, and their relationship can be animated!
Here's how it works.
- Select child
- Select parent
- Attach
Let's take a closer look.
Here we've got two independent markers. No parent and child relationship. Now let's attach the box to the torus.
As you'd expect, the box is now a child of the torus. You can use the handle to reposition exactly where this box is attached onto the torus.
The position and orientation can be animated too. It's a rather complex little constraint, but very powerful!
Quality of Life
Next up, let's have a look at some of the minor improvements made to put a smile on your face.
Closed Loop Recording
If you parent the tip to the root, you'll get a closed loop. Something Maya natively cannot do, but Ragdoll can. And for good reason, since you can do things like this!
However, it wasn't able to record it. Until now. :)
Why make this an option?
Yes, if it's able to do more than why not just leave this as default and remove the option?
Well, as it happens, there are times when closed loop recording performs worse than regular recording. Keep an eye out for what happens between frames, your rotation channels might be under stress, and let us know in the forums how it got that way. It's something I'd like to sort out.
Pin Constraint Axes
You can now control individual axes of a pin constraint, just like you can with Pose Space = World
on normal markers.
For example, here's what happens if we pin it along X and Z, but ignore the Y axis.
Likewise, here we only pin the Z axis. Notice how it's only allowed to move along the Z plane, staying at wherever the pin is in Z.
And similarly for X.
The rotation works the same, except Twist represents the X axis and Swing is both Y and Z.
Predictable Enabled State
Every Ragdoll node has an Enabled
attribute for you to temporarily and non-destructively enable and disable the node without physically removing it from the scene. It acts indentically to physically deleting that node, but is safe to do even on a referenced node.
However, in the previous release you could find yourself..
- Setting
Enabled = Off
- Setting
Enabled = On
Only to then not actually having it enabled. What's up with that? When you..
- Setting
Enabled = On
a second time
It works. That isn't particularly intuitive, and has now been fixed!
Infinite Terrain
If you provide Locomotion with a terrain, it will generate a heightmap from it. Where there wasn't geometry, such as outside the borders of the geometry or inside of holes, it would struggle to figure out what to do.
This release now extends your terrain in every direction, such that you get more what you'd expect.
Notice how he's able to start outside of the terrain, and step on missing parts of the terrain!
Simplified Density
Fewer options for working with density, now it's just a single number.
As it turns out, the presets were really limiting and was rarely a good fit for anything. And they didn't make intuitive sense either. "Uranium"? I don't know how heavy that is, when should I use it?
So instead, a single Density
value with a default value of 1
remains. This is the previous Density Custom
attribute with a shorter name, so if you were already using this attribute then you already know what to expect.
With a special density of 0
you'll be greeted by the Mass
attribute to disable automatically computing mass from the size and volume of your shape.
Ignore Mass
You can now choose to work with Stiffness
values without worrying about the weight of markers.
This can help get a better understanding of what a value of 1 means, as it would no longer depend on the mass of a marker, which is automatically computed per default. The marker would retain its mass, such that if a heavy marker fell on a light marker it would still act accordingly. But the stiffness values would act as though they weighed the same.
Should this be enabled per default? What are the consequences of this option? Let's find out!
Frameskip Default
When a frame is skipped, Ragdoll would normally pause simulation and wait for you to return to the last successfully simulated frame. This ensures that the simulation always produces the same result each time you play. But also means it is unable to solve if Maya skips a frame, as can happen when a rig is especially heavy or when playing back with Audio.
This mode is called Pause
and the alternative is a mode called Ignore
which will continue solving even though it isn't given each and every frame.
Ignore
is now the new default, to avoid surprises especially for beginners who might not know why simulation suddenly stops for no apparent reason. You are still advised to stick with Pause
especially towards the end of fine-tuning your work. That's the only mode in which Ragdoll can guarantee that each and every playthrough is identical unless you have actually changed something in your animation.
The two lines towards the bottom tell you two things.
- Which frames were successfully read from Maya
- Which frames were simulated
Ideally, for the most accurate and consistent results, these two should be identical. And when they are, they are hidden. They can be explicitly enabled via the Solver Display settings, called Draw Buffer
.
Output Geometry
In addition to the Convert to Mesh
menu option, advanced users can now also experiment with the new rMarker.outputGeometry
attribute which provides access to the computed convex hull!
This is a live attribute, regenerating the mesh whenever anything affects the convex hull generated for collisions.
Cache HUD
You'll now find buttons in the viewport for manipulating the solver cache.
Record Stuck at 0%
Some users experienced recording getting stuck before it even began.
This should solve that!
Behind the scenes
For you programmers and riggers out there; as it turns out, calling OpenMayaAnim.MAnimControl.setCurrentTime
is not safe. When Maya wants to compute one or more things in parallel, this call could cause a deadlock. The simple solution, and the one employed here, was to instead use cmds.currentTime
. It was the strangest thing.
The alternative solution was to use Serial or DG evaluation modes.
Import Solver Attributes
A bug was found whereby the attributes from your solver would get exported properly, but not imported! This has now been fixed.
Use Selection for Record
The previous release broke the Use Selection
option for Record Simulation
and Snap to Simulation
commands. This has now been fixed!
Fields Crash
A bug was found (thanks Andrei!) whereby having fields on your scene could cause a crash. This was related to the field trying to also affect the "world" rather than just the markers. This has now been fixed.
Solver Bounding Box
Minor nitpick, if you had 2 or more solvers, unselected, and tried to "Fit all" (the F or A-key), it may not have actually fit all of the solvers. This has now been fixed.
The problem was that each solver was taking every marker into account, even those that did not belong to it.
Locomotion On Linux
We spent a lot of effort getting Locomotion running on Linux, only to trip over our own feet for release and include a spelling error in the Maya .mod
file causing Ragdoll to not find the Locomotion executable!
This has now been fixed, Linux users unite!
Viewport Refresh
Disabling and enabling a marker could sometimes leave it behind in the viewport, until the solver was hidden and unhidden, or the scene reloaded.
This has now been fixed.
Locomotion Crash
Ragdoll could sometimes bring Maya down when opening a scene containing a plan, for locomotion. This happened due to some really intricate memory and threading issues that you would not be interested in knowing more about. Rest assured, this has now been fixed!