I am running into two issues.
I’m wanting the long tentacles of this creature to follow along with a source animation, so I set the pose space to “world”. How can I avoid the tentacles from separating from each other after colliding with the ground?
When assigning a (walk) locomotion plan to this creatures body and leg tip pins, the plan places the body pin underneath the ground plane on the start and end frames. How can I fix this? I am noticing that I am getting the “Not enough iterations” message on this, is that related?
Video link: https://drive.google.com/file/d/1lFnUgNsrdm8p-VefGjNsWZqmq6L5Zphm/view?usp=sharing
Any help is greatly appreciated.
For future viewers, in a world where links have all broken, here’s issue 1.
Because I don’t have access to this scene, I can only guess and my guess would be that the solver is being tasked with three conflicting goals.
- I want you to follow this position that intersects the ground
- I want you to not intersect the ground
- I want you to hold markers together
These goals are all “soft” and the strongest one will win. In this case, it seems (2) wins at the expense of (1) and (3). You can either:
- Increase substeps and iterations, to allow the solver more time to come up with a fair compromise
- Reduce your worldspace stiffness, to make (1) and (3) more likely to win
To really get to the bottom of this, try reproducing this in a new scene with as few objects as possible, and let me know the steps you took to get there. That way, I can reproduce this here and find a solution that works.
The same applies to your locomotion problem; I can’t tell what’s going on. Does it happen in a new scene, with a fresh set of locators? Does it happen in that same scene, but with a fresh set of locators? At what point does it start acting unexpectedly?
Thank you Marcus, I am still learning and I greatly appreciate your patience. I had been trying to crank up the pose stiffness to get the tentacles to follow along when in Inherit pose space, and then when I realized I actually want world pose space I didn’t think to go back and reset the pose stiffness.
The locomotion issue still persists with new pins. I have no issue with applying locomotion to other rigs in the same scene. I’m completely stumped. Here is the Maya scene, although please be mindful that the rig asset is a purchased, not free Protofactor rig: https://drive.google.com/file/d/1Y5eQZdilI5EBNa48y06S-qdWsTY5wK2Q/view?usp=sharing
After uploading this file I tried applying limits to the tentacles to remove the Z shape that is occasionally happening now, but realized that I needed to apply a Euler filter to my source animation. I had hope for one second that this might solve the locomotion issue, but it did not. It does seem to help with the Z shape issue, although I need to make the limits fairly tight to do this so I figure the solution I’m looking for is likely in finding a better pose stiffness value. Does that sound accurate?
There are a few too many issues going on at once here. How about we focus on one at a time?
For your tentacles, they are going to be tricky to control because they have such a deep hierarchy. Between every marker, there is a little motor that tries to reach the angle of your animation. The more motors you link together, the less of an effect they have because of the immense weight left to the inner-most motor.
You can work around this to some extent by manipulating the masses and give the motors less work.
Here’s a similarly long tentacle with default settings and a very high stiffness of 100,000.
And that’s pretty much it. It’s nearly impossible to push past this behaviour without manipulating the physics a bit. In this case, we’ll tell Ragdoll that these tentacles are actually much thicker than they look. Stiffness loves thick shapes. The thicker the shape, the more of an effect it is able to achieve.
You can think of it like the gears on a bike. The lowest gears have the largest cogs. The largest shapes.
Here we’ve lowered the gears by a lot, so it becomes that much easier for Ragdoll to pedal.
- Angular Mass X = 1
- Angular Mass Y = 100
- Angular Mass Z = 100
This isn’t a universally good idea, it’s a trade off in realism elsewhere. But for long tentacles like this, it should work a little better.
@Andrei_da_02 this might also apply to your long tentacles!
Thank you for the feedback. It is really helpful to see how I can change the angular mass for specific use cases, although I’m actually getting the best non-breaking results with the angular mass left at -1 and a much lower pose stiffness (~1-10), which I think is the opposite of what you are suggesting?
I’m getting the best results when the angular mass and stiffness are either both really high or really low, but when the values are really high the simulation always breaks on the ground, which I figure would be expected given your explanation above. I suppose if the tentacles weren’t interacting with the ground (and hopefully soon with another character), then a high stiffness would get the job done.
Pose stiffness: 10000000
Angular mass: 999999995904
Pose stiffness: 1
Angular mass: -1
I personally think these last settings will work great for me for now, even if it will need some minimal cleanup.
I’d love to hear if you were able to successfully apply a locomotion plan to this character though. I am wondering if Ragdoll is tripping up on the fact this that rig as a root joint that isn’t part of the Ragdoll system? This part is where I feel I am the most lost… I feel foolish saying it, but I am thinking it might be a bug in Ragdoll? I’m using 2022.06.29
Cool looking creature! My suggestion on the tentacles - just before they hit the ground I’d make them go
local space you’ll get some nice interaction with the ground, having
world on the whole time give a vacuum to the ground feel as they are trying to get to where the animation is. I would then animate back to world when the tentacles start lifting up again. using
Custom Space would be ideal for this as
-1 = to local space and
1 is world , everything in-between is a mix of both .
Locomotion in a situation like this I’d create some locators in the position of the limbs and body then constrain any Pins or controls to those locators.
Wu’wu’wuuw that is not what I meant!
What I meant was, use
Pose Space = Local like in my example, and use values of Angular Mass between 1-100. That way, you shouldn’t need
Pose Space = World. The local option will never force the solver to push objects through the ground like what you’ve got here and will behave much more realistically as it would remain attached to the body rather than follow your controllers around in worldspace.
- Make a locator for body and each foot
- Place them approximately where the body and feet are, but do not parent them anywhere
- Assign a plan to the locators
- Use a Maya Parent Constraint to have your controls follow the locators