Hello, is there any procedural way I can prevent feather cards from clipping through each other when animating them ? Or do you know any compositing trick that could just hide it ?
In this example, each feather card has a bone. The bones are driven by simple constraints like copy rotation and transformation. I thought about using the action constraints but quickly gave up as there are a lot of feathers and it was slowing things down. No simulation is involved for the same reason, the character already has particle systems and clothes to be simulated and I don’t want my computer to go boom.
I tried using geo nodes, and more precisely the proximity node, but I’m not good at that and couldn’t get any desirable results.
I tried both with completely flat cards and slightly curved cards and the problem stays the same.
Even using precise transformation constraints, there are still instances where some feathers clip through each other. The last resort is to fix the rebellious ones manually and frame by frame I guess, but if I can avoid it, that’d be great
I am not sure If this can ever be completely avoided by using constraints.
If I were in your place, my actions would depend on what is the use you intend for this wing. Is this just a short sequence? Then animating each feather might be doable. Is this a long, complex animation? Then it might require cutting some corners so you can even finish it.
You could accept that the feathers will intersect a little, but modify them so it looks less obvious. If you were to give the material a little bit of translucency, it might be less noticeable.
An other option would be to give the feathers a little bit of thickness and fluffyness, at least for the smaller ones, where this would be more realistic. Ex: instead of making the whole feather as a single flat plane, you instead make a feather texture out of sparse, spaced hairs, but add multiple layers of it at slightly different angles to form a single fluffy feather with depth. That way, instead of having solid planes intersect harshly, it would look like the hairs of different feathers are weaving in between each other.
If you are going to animate feathers one by one, you could decide to focus only on the larger ones in the outer row. They are the more important and mobile ones. Also, you could do it as a last step of animation, so you can see which feathers need to be fixed in the final camera shot and which ones are not visible or too far and don’t need it.
Raw, “prevent collision” is physics-- physics is the right solution. There is no general, automated solution to the problem, for arbitrary positioning of the wing and feathers.
Here are your options:
Retopo to a single manifold mesh. This will eliminate clipping, but you may have problems with stretching.
Give each feather its own bone, and the animator can manually fix clipping. But of course, they’ll find that when they fix one feather, they’ll break another. That’s exactly why collision is a hard, slow problem, even for computers.
Use physics.
Note, these three techniques are not totally independent; they can be combined. You can retopo to mostly a single manifold mesh, then leave a few hair-card feathers for the animator to control on top. Or you could have a retopo low-poly for the animator, and then enable (and bake) a physics layer only after getting the animation mostly complete.