I'd like to try animating a character, but in a way where I don't have to manually approximate collisions frame by frame.
Let's say a person walks on a flat ground, or a person's hand touches a wall but still leans into it.
Obviously a character's hands or feet shouldn't go past those solid boundaries. How do I make bones detect and respond to those boundaries?
Hi Sid,
The best thing for those situations is not to use any collision but to use IK in world space.
This is what happens in animation all the time.
What is IK?
It stands for inverse kinematics - where you would use the end of a chain to decide how the rest of the bones should be rotated to reach that target.
This is standard for something like a Leg where you want it to stick to the floor but still be able to move it around freely.
"World Space" just means that it is parented to the Root of your character (which usually doesn't move)....there's is a little more technicality that goes with this but it's not important right now.
How do you get it to stay on the floor?
You keyframe it there.
Does it need collision?
Nope. Adding this makes it way more complicated for something that will actually make the animation harder in the long run.
Just keyframe it not going through the ground.
What about the hand on the wall?
Most of the time it's easier to get nice looking animation with FK on the arms.
Forward kinematics is where the upper_arm is connected to the forearm, then the hand. And the movement of the parent affects all the children down the line (the opposite of IK).
However, if you want the hand to stick to a wall, you want IK in world space for this.
Do you have to animate frame by frame?
Nope, just keyframe it at the start and the end of where you want it to be stuck.
If you were using FK, you would have to keyframe it frame by frame......actually you would have to keyframe all the bones in the chain frame by frame.
TL;DR
Use IK ;)
Hey Wayne, I appreciate you taking time to answer.
I was already aware of inverse kinematics, but unfortunately that doesn't cut it for a lot of reasonable animations.
Let's say a character runs into a wall, literally. Well, not only are their hands going to collide, but their legs, their abdomen, their face, etc interially squishes into the wall one by one over a short time window. I'm looking for a character's collision with a wall or floor to interially affect other parts of the mesh, so if for instance a dodge ball or base ball his them in the back of the spine, the spine responds and the character's spine is pushed forward with the other parts of their body are gradually being dragged along before the character starts to control their limbs and stay grounded once they realize what happened.
This is a very long-term problem I've had with blender for at least 10 years, that you can't have multiple IK chains smoothly layering and interweaving over each other, in addition to the fact that bones don't really respond to physics which is still a huge bummer. All in all this is probably why I never took blender seriously as an animation tool and did graphic design and audio design instead to pay rent.
It would be great if I can just instantly grab any arbitrary bone and make it a temporary "IK" and control how many other bones it affects for exactly this kind of realistic inertial animation, but it doesn't seem like I can do that even still after the 5.0 update, or if I can, I have to use some complicated wonky hacks like parenting the IK to object cubes or empties, then giving the cubes/empties their own physics.
The sculpting is pretty cool, and all the modifiers for hard surface modeling is pretty nice. But then when it comes to animating something reasonably realistic in like a professionally efficient way, it really falls short.
And then even with sculpting, Blender doesn't seem like it can handle as many vertices as Z-brush, but I still stick with blender because blender is where everything comes together, it's where I'm going to rig, animate, texture, add drivers, control the lighting, etc.
Maybe blender should charge money but simply use a bracketed income model. Are you from another country with a currency that's not as strong as the euro? No problem. Do you fall above or below your country's poverty line? We got you covered.
Then blender can get more funding to do this professional stuff. One peso or one yaun isn't a lot for most people, imagine of blender suddenly got 50 million pesos and 40 million yauns every year.
I think you are looking for something like Bone Dynamics: https://superhivemarket.com/products/bonedynamics
or Swingy Bones Physics: https://superhivemarket.com/products/swingy-bone-physics
Maybe blender should charge money but simply use a bracketed income model. Are you from another country with a currency that's not as strong as the euro? No problem. Do you fall above or below your country's poverty line? We got you covered.
There's a lot of oversimplifications and assumptions in this. Even if Blender were to suddenly break it's founding principle and overcome the very obvious furore then I'd suggest a good proportion of any money raised would go into setting up and maintaining a funded model. There would also be additional costs in hiring more staff as I think a good many volunteers would stop volunteering. The end result could well be net negative unless a sufficiently commercial model (read expensive) was implemented.
Hmm, bone dynamics, I'll look into that. The video is too fast-paced to see what's actually happening but I can try contacting the author.
As for the bracketed income model, I think you're overthinking this. It can literally just an honor system survey that pings your ip address and says "please give us one yaun...one peso...one euro...one dollar....if you meet these income thresh-hold requirements...".
Preferably yes, you'd have an automated system that "checks", but even still, blender doesn't need to set that up from scratch themselves when there's an entire world of professional banking platforms that handle the sensitive data securely, even paypal has one.
Isn't that essentially what's in place at the moment... 'Please consider donating?'
All those professional banking systems want a cut, often with a minimum threshold cap. So accepting that 1 peso mights cost 1 euro in transaction fees as well as a standing charge for access to the platform. I've done quite a lot of web dev production and something like this that seems 'trivial' costs far more time/energy/money than you expect. We haven't even mentioned China
I didn’t say it wasn’t doable. I said the doing would cost more than it would generate.
The way it’s structured at the moment with commercial donors and individual donations is absolutely the most efficient and practical funding model.
I don't think it would, I think if you're a tiny small time, one-off website, it's possible. If you're a big, well known entity like Blender, you have a bit more autonomy with paypal, banks, government entities, and not to mention actual collateral to offer. Even beyond individual donations, there's billions of dollars in other sources Blender could be seeking if it spent the time to tailor to each of them, not just the private sector or individuals.