I don't understand how to stop bones from clipping trough floor, help needed

How to stop bone tip from clipping trough the floor? Part of the foot is controlled by floor constraint and it stopes the bones but when the rig is rotated the tip of this bone clips trough. Please help

The best way to keep bones from clipping through the floor is not move or rotate them through the floor. You have to pose them anyways. So don’t pose them that way.

One pretty common structure for a foot is a foot roll bone, whose origin is at the bottom of the foot, generally at the point that the toe rotates, but your mesh, would be at the end of the toe. Then you can parent the IK target to this bone:

A floor constraint is only ever going to affect the head of the bone, never the tail (and never, ever going to be calculated from the mesh.) By placing a bone with the origin where it should get floored, our floor works pretty well.

If that’s not what you want, it’s not really reasonable to make a constraint + bone system that floors the tail of a bone. It’s possible, but ridiculously complex, to do it mathematically perfectly with constraints; it’s slightly less complex to do it with mesh booleans of spheres and planes to get the intersection where the tail should be.

But it is more reasonable and more possible with drivers. Not so reasonable that I ever do it though. You’re essentially making a script that finds the nearest point on the intersection of a sphere and a plane.

3 Likes

I was reflecting on the problematic, thanks to this discussion.
Then just came up with a plausible method; theoretical it is, though, as I haven’t tried myself; but there is no apparent reason it would not work.

The current limitation on that Floor Bone Constraint is that it doesn’t care about the Mesh Vertex Groups (of the Owner, that would be a Foot-related Bone on this case.

However, it is possible to create a few Bones for strategic ‘tipping’ points of the Foot Mesh; needs to create something like one single Vertex Vertex Group for like the most commonly colliding features of the Foot in relation to the Floor, and then create extra Bones that will Copy Location having as Target those Vertex Groups, case by case. Those Bones don’t need to be very tiny in size, their orientation might not even matter, since it’s their Head that being the one being “glued” to the individual Vertex Groups case by case. Then, those Bones would receive each of them an appropriate Floor Bone Constraint.

In simple form, I believe the Vertex Groups / Bones could be: 1) somewhere around the back end and bottom of the heel bone; 2) the ball of the foot near the big toe; 3) the “opposite ball” of the foot near the little toe, so you get a triangle virtual face from these three standing points; 4) somewhere around the point of the big toe.
Maybe a Vertex Group of these can contain more than a single Vertex, but I haven’t tested… the Local constraint Bone can’t be on all Vertexes at the same time, it will find a middle point. That’s the reason we required many sets like these in strategic points of the foot.

Must be careful though: Copy Location Bone Constraint, last time I’ve checked on this kind of method, gets crazy with Mirror Modifier turned ON, I guess because normal Vertex Groups cannot be Mirrored like Weight Paint -related Vertex Groups, so the Local Constraint Bones tend to go the the Origin of the Mesh Object or sometimes at the middle of the World Z-Axis aligned with the Vertex Group (because it’s trying to reach the Mirrorer Vertex Groups “Mesh Islands” of both sides, and the middle is the best reference it can get. However, if Mirror Modifier is Hidden, or Applied (and in this case the Vertex Groups properly Re-Assigned not to both sides), then the Copy Location Bone Constraints works as expected.

Using this method doesn’t mean the usual Floor Bone Constraint method cannot be employed. Actually, it might not be a bad idea to have the methods combined, like as a backup on special foot positions in relation to the floor.

1 Like

One thing I’ve thought might be interesting would be to have equirectangular depth maps for a bone to indicate an offset (for shrinkwrap, or for floor.) Look up the vector of the direction it travels on the depth map, use that as the offset.

I don’t know what exactly would be “Equirectangular Depth Maps for a Bone” concept; that’s sounds and interesting proposition, ¿but how to achieve it? Theoretically, I imagine that something like the exclusive feature of Envelope Bones, which have some sort of “sphere of influence” for them that is even adjustable (through Bone Envelope Tool [ Ctrl+Alt+S ] on Edit Mode, if only it would apply to other interactions besides just Weight Painting (I suppose it’s only about Weight Painting…), that would be great.

Take a mesh (like your foot), copy transforms from your foot bone to your camera, set the camera to equirectangular, render depth.

1 Like