1
$\begingroup$

So I was following this guide of creating a low poly person and rigging it, and as you can see he created a person from multiple cubes and spheres and connected them to one rig manually, by selecting each object and connecting it to a proper bone. That works beautifully and it's simple, intuitive, and fast to me.

Now I wanted to import my model with working rig to Unity, and he also has this guide. The first problem is that he uses a model that is a single object, so I just use Ctrl + J to merge all cubes and spheres into one object, but it breaks the rig completely. Here he uses automatic weights and weight paint, and both of these work terribly in my case. I wouldn't have such a big issue with facts like the forearm actually moving some bits of my legs as well if the weight paint tool wasn't so painful to use for me. I struggle so much to remove every bit of paint anywhere besides where it should be and, even if I succeed, I can never get it to work as it used to while using the first method (like forearm scaling down and leaving the bone while rotating for whatever reason).

Is there any way to somehow merge these objects and keep the skeleton working? I do realize that the rig breaks because references break when I merge the objects, but there's a couple of reasons why I wanted it to be a single object, like changing the center of the whole object to the bottom and make it work so I can animate it with Unity.

$\endgroup$
10
  • $\begingroup$ what does your character look like, is it made of several pieces like in the first tutorial you cite? The 2 methods are completely different, in the first case it's like a simple parentage, while in the second case when you parent With Automatic Weight it creates vertex groups in your character that are supposed to be controlled by the bones that have the same name. If your character is made of several separate pieces and you want to join them, rather use the With Empty Groups parenting method, then assign each part each group in the Vertex Groups list $\endgroup$
    – moonboots
    Commented Apr 1, 2021 at 14:26
  • $\begingroup$ if your character is made of one piece, then you need to go through the second method (Withe Automatic Weight) and give some correction, either in Weight Paint mode, or with the Assign button under the Vertex Groups list $\endgroup$
    – moonboots
    Commented Apr 1, 2021 at 14:31
  • $\begingroup$ As I said, my character is made of several pieces like in the first video and it's working perfectly, but I want to import it to Unity, which I guess I have to make into a single object., but that breaks the rig and I have to use the weight paint, which is a pain to use. $\endgroup$
    – Hakej
    Commented Apr 1, 2021 at 14:45
  • 1
    $\begingroup$ you don't have to use the weight paint, use the method I describe, i.e. parent With Empty Groups, then go into the Properties panel > Object Data > Vertex Groups, select the vertices you want in your object in the 3D view, then select the vertex group these vertices are supposed to be part of, and click on the Assign button under the Vertex Groups list $\endgroup$
    – moonboots
    Commented Apr 1, 2021 at 14:47
  • 1
    $\begingroup$ I think you misunderstood, what you need to do: select all your objects, join them with Ctrl J, select the object, shift select the armature, press Ctrl P > parent With Empty Groups (which is going to create vertex groups in your objects but no vertex is assigned for the moment), go in Edit mode, select one part of tour object (example: the head), go into the Properties panel > Object Data > Vertex Groups, select the head vertex group (i.e. the vertex group that has the name of the bone that is supposed to control the head), click the Assign button under the Vertex Groups list, and so on... $\endgroup$
    – moonboots
    Commented Apr 1, 2021 at 15:37

2 Answers 2

2
$\begingroup$

For the rigging of machines / robots / non-organic objects, etc. you have 2 methods.

If you want to keep separate objects, use basic parenting: Select on piece, shift select the armature, switch to Pose mode, select the bone you want and CtrlP > Bone

If you want to join all your objects into on (i.e. your case), parent with vertex groups:

  • Select all your objects, join them with CtrlJ
  • Select the object, shift select the armature, press CtrlP > parent With Empty Groups (which is going to create vertex groups in your objects but no vertex is assigned for the moment)
  • Go in Edit mode, select one part of tour object (example: the head), go into the Properties panel > Object Data > Vertex Groups, select the head vertex group (i.e. the vertex group that has the name of the bone that is supposed to control the head), click the Assign button under the Vertex Groups list, and so on
$\endgroup$
0
$\begingroup$

As moonboots said you can do it with vertex groups but this can be slow and repetitive. So I somehow made a plugin for blender to add vertex groups for each selected object fast. I do this because it can be hard with complex models to assing the vertex groups and I usually rage when doing it.

  • Select all objects and use the plugin to make the vertex groups for each object.
  • Then merge the objects together.
  • Parent the object with armature: parent > armature deform
  • Then name the bones to the object vertex groups

Link to the plugin

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .