Make two animation models move as one?

I have these two robot animation models from TurboSquid: the Tarologist Robot and the Floating Orange Robot:

By accident I placed them in the exact same spot and saw this:

I think this looks really cool! To me, it looks almost as if it was a single model created specifically to look this. How can I combine them so they will move as one and make use of this happy accident?

Do I create a new group and add them both to the group or will that lead to overlapping or occluded “parts” when I execute either model’s animations? Some other technique?

Also, what do you think of the combined model?

The easiest way to make them look like a single model would probably be to create a group and add both to that group. Then, apply general transformations like translating, rotating or scaling on the group instead of the individual robots. Apart from that, for things applied to components specific to individual robots, like arms, wheels, legs and so on, you’d have to find a way to synchronize them yourself to match one robot’s movements with another.

Whether you’ll have overlapping / occluded parts when manipulating the group would most likely depend on the scaling used for each robot, its particular shape, etc. You could probably make more things visible if you make the bigger robot a bit translucent or similar.

As for the combined model, unlike the individual robots that look, well, like robots, this one looks more humanoid, bar the ball at the bottom whose function could range from poop deposit to … other “robotic” organs, LOL. Now all you have to do is make it alive and tell it to go out of the screen and pinch your nose or something like that… :rofl:

2 Likes

Thanks @Yin_Cognyto! I think the hardest part will be synchronizing the “leaning” of each model with each other. For example, the floating orange robot leans forward when it does its “picking” animation, and as you said, I’ll have to match that robot’s lean and make the tarologist robot lean to. Unfortunately I think the only way I’ll be able to do that is through trial and error, trying different rotation values each trial.

Or do you think I could identify the mesh that is the main sub-structure of the floating orange robot and simply look at its rotation, and set the entire tarologist robot animation model to that rotation value?

That depends, but if possible, that would be a good idea and it would help “simplifying” (compared to the alternative) the process indeed. For example, if the robots are groups as well, you could identify the mesh object of the orange robot that performs the most suited rotation and apply that to an equivalent mesh object from the blue robot.

You should also make sure that the space in which the rotations will happen matches, e.g. the meshes will probably rotate in each robot’s local space, so converting that to world space via .applyQuaternion() or .getWorldQuaternion() or similar applyMatrix4() for the matrixWorld could help in using the same standard for both cases. Also, if the blue robot is also a group, you might want to rotate only the part of that group that corresponds to the orange robot, mainly the “upper body”, so to speak, maybe a little bit the upper part of the “legs” too.

It won’t be that simple, but shouldn’t be too complicated either. The bottom line is that their structure matters, since you’d want to replicate things for the same parts of their structure on both robots, in order to make the whole thing reasonably “realistic” and hide the fact that they are in fact two separate models.

P.S. A subtle alternative would be to group similar parts of both robots together, in addition to making the overall robots belong to the same group, and this way you won’t need to bother with replicating rotations since groups and subgroups will handle that for you. For example, you could add the upper part of both the orange and the blue robots to an uppergroup, the lower part to a lowergroup, and finally the robots themselves to a robotgroup. If that works, the only thing required to do would be to identify the meshes for grouping… :thinking:

1 Like