1
$\begingroup$

I'm trying to make an animated model of the lungs breathing naturally. I have two separately meshes and I want to merge them together in a single model.

The first model is the lung surface (the ribcage) with the external motion animation. It dilates and contracts when breathing. The frames were created using shrinkwrap shapekeys.

Second model armature The second model are the airways and blood vessels with the internal motion animation. The frames were created using an armature that deforms these internal structures. However, this movement does not consider the external motion from the ribcage, which leads to strange behavior near where the lung surface would be.

My question is, is there a fast way to use the first model (the lung surface) as a constraint for the second model? For example, in places near the surface, the mesh from the second model would follow the surface and deforms instead of following the internal motion pattern.

*EDIT Thanks for the replies. I don't think I was very clear about the problem, I have close to zero expertise with blender so I'm quite lost with the tools availiable. I will be adding some information and an image to get a better idea of what I'm trying to do. I will try the shrinkmap method meanwhile.

Initially I had only the second model (the one with the airways and the blood vessels). The motion pattern (and deformation) is calculated using a 3rd party software, creating the armature for the airways (in cyan in the image). While near the airways the blood vessels (the colored objects) are fine, at the endpoints I must consider the lung surface movement, more than the motion pattern from the armature. As it is the endpoints behaves incorrect, even piercing the rib cage at some locations.

What I was trying to do was creating an animation of the rib cage moving, and then merging this rib cage model with my armature, adding new constraints to it. Is it possible to combine these two somehow? I thought about using hooks but it would take quite a long time to do manually, since I would have to fix every endpoint of the blood vessels to a correspondent location at the rib cage model. Also, I'm using real CT data so the way the 3rd party software calculates the armature unfortunately cannot be changed

$\endgroup$
  • 1
    $\begingroup$ I feel like I'm missing something here. What is preventing having your two models share the same armature? $\endgroup$ – Kirbinator Apr 28 '16 at 20:25
  • $\begingroup$ I'm not sure on the specifics of your setup, but you can use Mesh Deform as a way to deform both meshes at once. If you bind with the same cage with the same precision, both meshes will deform equally when the cage is deformed with a shapekey or armature. $\endgroup$ – Italic_ Apr 28 '16 at 21:33
1
$\begingroup$

Kirbinator is on the right track. The "correct" way to do this is either to have them both in the same object, and deformed (animated) by the same armature, or to have two armatures that are both controlled by a third (you move one thing, and it moves both others).

You can just select both objects and press ctrlj to join them into one mesh, but that can be a little tricky. Experimenting with it wouldn't be hard.

Where you are now, though, it seems like the best solution would be a shrinkwrap modifier. You'll need to experiment with whether to shrinkwrap the lungs to the inside of the chest, or the chest to the outside of the lungs, but one of those should work.

The reason I mention this is that the shrinkwrap modifier has a setting for "Offset" which will shrinkwrap to a certain distance from the target, instead of to the target itself. So, for example, you could shrinkwrap the chest to the lungs, but with a 1cm gap.

IIRC, you said the lungs had the armature, in which case you'd want to shrinkwrap the chest to match the lungs. Either way, you'll want to shrinkwrap the one that is NOT rigged onto the one that is.

Hope that helps!

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.