Doubles are merged and the weights are normalized, so that the influence factors are averaged or smoothed. This mapping is used to transfer the vertex weights from basemesh to proxy: a proxy vertex referencing three basemesh vertices gets the bone weights of those three vertices. A proxy defines its fitting as a 3d offset from one or three vertices on the basemesh, allowing it to deform as the human deforms. Proxies derive their vertex weights from the vertices on the basemesh on which they are fitted. Generally proxies are mapped to basemesh geometry, that means either to the body or to helpers, or a combination of both (though this is unusual). Watch for messages in the log to verify this. Any vertex that is not weighted will be assigned to the root bone. Doubles are merged, and weights renormalized. If the alternative rig does not explicitly define its own vertex weights, the mapping of reference bones is used to infere a set of bone weights for each bone: All the weights of the reference bones on the master rig (with the weights definition of the default/master rig) are combined and apply to the bone of the alternative rig. Reference bone mappings can also be used for determining vertex weights of custom rigs. Poses are applied to all other rigs by using the reference bone mapping: all the rotations that the pose applies to the referenced bones are combined (in the order in which the references were specified – note: rotations are NOT commutative) and are applied to the alternative rig bone. All poses are defined as BVH files that pose the master rig, so they reference only the bone names of the master rig. They are used for mapping poses defined on the master rig to other rigs. Reference bone mappings are required for two purposes. Having a list of bone references always overrides the implicit mapping. An alternative rig can also omit these references if it uses the same name as bones in the master rig, in which the mapping is implicit. Every bone of an alternative rig can have such a list of reference bones. Reference bones are defined on alternative rigs, they are a list of names of bones contained in the master rig. Reference bones for vertex weights and poses See section Vertex weights for proxies for more details. Custom vertex weights in alternative rigs override those defined on the master rig, except in the case where a proxy defines its own vertex weights. Skeletons will derive their weights from the master rig if they do not specify a weights file explicitly. When loading weights, any vertex that receives no weighting is assigned to the root bone, as this is needed for skinning to prevent all those vertices jumping to the origin (0*pos # 0).Īlternative skeletons can define their own weights, by referencing a weights file just like the master rig, or they can choose to derive their weights from the master rig, through so called reference bone mappings. It also reports what the maximum number of bone weights per vertex is, additionally it allows compiling the weights to a reduced set with n number of bone weights, and automatically renormalizes those weights so they, again, sum to 1. The weights loader automatically removes doubles and normalizes the weights (so that they sum to 1). They link each vertex of the basemesh including helpers to a named bone of this master rig, together with a certain weight. They are defined in a json file with jsonw extension. Vertex weights are defined for the default “master” skeleton or rig. The vertex weights can be exported to external tools as well using formats such as collada (DAE), FBX, Ogre3D meshes or MD5 quake meshes. For the skinning algorithm to work correctly it’s required that the weights are always normalized, otherwise you will see vertices move out of place disproportionally (though the weight loading code in MakeHuman ensures that this normalization always happens, so this is not a concern to the artist that defines the weights). This weighted vertex to bone mapping is used for skinning (posing and animating, using vertex skinning, smooth skinning or linear blend skinning algorithm). A weight map in MakeHuman is expressed as a bone name (becomes a bone index internally, using the index of the bone in a breadth-first list relative to skeleton structure), a vertex name and a floating point weight between 0 and 1. The weight is a value between 0 and 1, the sum of these weights for each vertex should be normalized, which means they should sum to 1 (note: no euclidian distance, just simple addition of all weights). With vertex weights we intend a weighted mapping of vertices of a mesh to a bone of a skeleton. Technical notes on MakeHuman Vertex weights
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |