Page 1 of 4

Joint helpers in maketarget

PostPosted: Sun Jun 21, 2015 2:12 am
by Oscalon
I understand that the joint helpers need to be moved to stay consistent with any changes you make in your custom targets. But what happens if the join helpers themselves are changed? If you scale them, or let them be grabbed by proportional edits, they will be slightly squished or stretched. Does this matter?

How exactly is the helper geo even detected and used? Vertex index?

Are the eye, eyelash and teeth geometries that come when you load the base mesh from maketarget in blender essential to maintaining vertex count?

Re: Joint helpers in maketarget

PostPosted: Sun Jun 21, 2015 8:18 am
by duststorm
Oscalon wrote:what happens if the join helpers themselves are changed? If you scale them, or let them be grabbed by proportional edits, they will be slightly squished or stretched. Does this matter?

No. You might notice that some other MH targets stretch the helper cubes as well.
For calculating the joint position, we simply take the average of the 8 vertices of the cube, or in other words, we use the center of the cube. It doesnt matter if it is twisted, as long as the average position is where you want the joint to be.

Oscalon wrote:How exactly is the helper geo even detected and used? Vertex index?

It's referenced by the vertex indices.

Oscalon wrote:Are the eye, eyelash and teeth geometries that come when you load the base mesh from maketarget in blender essential to maintaining vertex count?

Yes and no. The body vertices come first, so if you remove the helpers you are still able to make targets for the body.
Then come the joint helpers and the helpers for eyes and eyelashes. Finally clothes and hair helpers. You can make targets on any level of granularity, as long as you include the levels under it, so that the vertex indices are kept.

Re: Joint helpers in maketarget

PostPosted: Sun Jun 21, 2015 6:17 pm
by Oscalon
Great, thanks!

Re: Joint helpers in maketarget

PostPosted: Sun Jun 21, 2015 7:15 pm
by Oscalon
While we're on the subject, how are weight groups determined on the model? If I am making a new body target and I move some knee vertices further up the thigh, does that mesh things up? Are weights already assigned based on vertex index, or are they generated around helper geometry? Around bone envelopes?

Re: Joint helpers in maketarget

PostPosted: Sun Jun 21, 2015 7:58 pm
by duststorm
Weights are defined against vertex indices directly, both to the body and to the helpers.
For other proxies, like clothes or hair, these vertices are transferred from those helpers (or the body) to the proxy, based on which vertices the proxy is attached to. Alternative topologies are proxies as well.

It is, however, possible to define custom weights for a proxy mesh (directly per vertex index on the proxy mesh) to fine tune the result (eg muscle topologies).

When making targets, you should try to keep the "semantical meaning" of each vertex. With that I mean that no matter how the human is modeled, the vertices in it should always indicate the same landmarks on the body. This will ensure that proxies fitting makes sense as well.

If you need more fine-grained control and want to have a custom weighting for some targets you can always create a new skeleton definition. Weights are defined per skeleton (they can also be implicit, where an alternative skeleton does not define its own weights, but inherits them from the default skeleton).

Re: Joint helpers in maketarget

PostPosted: Sun Jun 21, 2015 8:29 pm
by Oscalon
Alright.

What's the deal with proxy meshes? They have different vert counts (and I assume indices) from the main body, so how are they setup?

Re: Joint helpers in maketarget

PostPosted: Tue Jun 23, 2015 5:58 pm
by duststorm
A proxy is an obj mesh file and a .proxy or .mhclo file (they are the same format, this is an unfortunate legacy choice).
The proxy file describes for each vertex in the .obj mesh what basemesh vertices they are to be fit to, and the offsets.
A proxy can either specify for each mesh vertex 3 basemesh vertices with each an offset (to those three vertices the proxy mesh is then fit and offset), or specify one single basemesh vertex. In the second case, the proxy vertex is placed at the exact position of the referenced basemesh vert.
Both can be intermixed.

This allows for example to have an alternative topology that follows the original body topology perfectly for 90% of the vertices, but have a different topology in other areas.

Re: Joint helpers in maketarget

PostPosted: Tue Jun 23, 2015 6:30 pm
by Oscalon
That seems really useful. I'm working on some more toon-style bodies which don't need anywhere near as many verts as the base mesh. Are there tools to let me setup a proxy? Any docs that explain the process?

Re: Joint helpers in maketarget

PostPosted: Tue Jun 23, 2015 6:50 pm
by duststorm
It's done using MakeClothes.
There is quite a bit of documentation spread out here and about. It's still difficult to use though. Especially for body proxies as you need to get difficult parts like the eyes right. Experimenting is the best way to go.

Re: Joint helpers in maketarget

PostPosted: Wed Jul 22, 2015 3:38 am
by Oscalon
I've been building my custom targets off the default model loaded by MakeTarget. But in makehuman, they are very distorted. I assume this is because the model loaded by maketarget is very different from the more up to date base body used in current versions of MakeHuman. Can anyone tell me where I can get the current base body so I can test?

Note that you can't use an exported model as it doesn't match the vert count.