Skeletal Mesh Questions

Hi all, looking for some pointers on how to go about setting this up.

Im wanting to create a customisable mech. The legs, torso and each arm need to interchangeable.

I thought I might be able to share a skeleton for the whole thing, but as the legs will vary a lot. Some may be bipedal, reverse, tracked, and multilegged. So I don’t think i will be able to share the skeleton/animations.

Would it be possible to attach two skeletal meshes together and make the torso attach to the legs via a socket or something a long those lines? And then the torso would have two sockets, one for each arm.

If anyone could give me any pointers on getting something like this setup it would be very much appreciated.

Yeah, I’m making a completely modular bot set for the marketplace. (actually it’s a FPS Construction Kit) What you need to do is make each part separately, attach each part to it’s own FULL skeleton, import them separately, then use the ‘Master Pose Component’ to tell each part to follow one main part. When you do this the parts will ‘stick’ together via the bones and follow whatever animation is going on in the 'Master Component". In other words the skeleton for your arm overlays the skeleton from your head and follows the motions of the skeleton for the head. What is of absolute importance is having the UV’s set up right. If you don’t you wind up with a ton of textures for one character. You have to create a template where all the UV’s are laid out so that they’re in the same places. All the heads need to occupy the same space, all the legs, etc. That way you can create one texture. In essence you’ll have a different UV for each part but when you go into Photoshop, you can paint it then condense the parts into one file that will work. If the UV map for the legs is set up in the same space where the head is this will not work and you’ll be forced to use many, many textures.

I’m not sure how well that will work.

I’m almost certain we will need different skeletons for the legs as some will be bipedal legs, and some will chicken like legs, others tank tracks, and the torso will sit on top of those.

Also, its likely that all the legs will have different sizes, so the torso will attach at different world locations. It will only ever be able to attach to one location, but that point will move based on the leg type and leg used.

As for the UV’s. The Legs, torso, and individual arms will all be entirely unique, so they will have their own UV’s entirely.

There are probably a few ways to do it but there is a dedicated way to do it as I pointed out. What I described is how Epic does it with armor etc. You do have different skeletons for each part but you HAVE to have the entire skeleton AND it needs to be the same skeleton. You wind up with 1 ‘Master’ skeleton and all the other parts follow it. If the skeletons don’t match they get confused. There’s actually a section in the documentation on it if you do a search. As far as the materials go, you can use as many as you want but too many materials can be worse than too many polygons in most cases. Putting the heads in one space and the other parts in their own dedicated spaces allows you more freedom. As I said you can create separate textures in Photoshop, flatten them out into one texture, then you bypass the issue of taking a performance hit because there are too many textures being called. All of this is moot if you’re doing something that the end user can adjust however because that’s a different scenario all together.

Well all the unique parts will use the same materials. But it’s not feasible to have the textures done in the way you suggest. Due to there potentially being hundreds of unique parts.

I have read through the documentation (everything I can find which relates to this) and I understand roughly how it all works. I just don’t see how I could animate and rig two completely different meshes with one skeleton.

As I understand it, I can morph the skeleton to match the model right? Because all of the legs I want to use will be different heights completely. But then how do I model different sized legs onto the same sized skeleton outside of UE4?

Imagine two characters with the same skeleton. Each bone’s rotation/position can communicate with the same bone from the other and say ‘Do what I’m doing’. If you have different skeletons, one will say ‘Hey! He doesn’t have legs!’ You can have a character with no legs, but it should still have leg bones in order to communicate. You could, however, make a character with a socket that attaches to your tank treads but I think it would require some extra work to get it right. UE4 is set up to do the whole modular thing using the first method (ie matching skeletons). As far as the textures go that’s just my personal thing, feel free to ignore it, but consider the number of texture calls you’re going to have the system make. Think about the props, the environment, etc. If you always have the head in the upper left quadrant and the torso in the lower right quadrant you can be sure that you can collapse them into one texture so as to minimize the number of texture calls. The textures themselves can be whatever you want, my method just gets rid of the need to have many textures on one character. If you have 10 characters with 4 different textures each that’s 40 textures already and I’m just talking diffuse maps. Add in Normal maps and Light Maps and you’ve got 120! Throw in an environment with some props and your system will eventually start to choke. Also, NEVER assume that you end user will have the same hardware as you (unless your going for a console game of course).

I understand the concept behind the skeletons n what not. But I don’t understand the way you would make that.

I am wanting to make mechs. The legs will be all different sizes, and some will walk completely differently. Biped, chicken legs and so on.
So in blender, I have a base skeleton. How do I make something which needs to be a different size conform to this one skeleton? In blender.

I completely understand what you are saying about textures and I am aware of all of that. Its irrelevant to what I’m trying to achieve here.
Also, it would make very little sense for a particular torso to share texture space with a particular pair of legs. They are completely separate and may or may not ever be used together.

Here you go.

or if you prefer C++