Inochi2D / inochi2d

Inochi2D reference implementation aimed at rendering 2D puppets that can be animated in real-time (using eg. facial capture).
BSD 2-Clause "Simplified" License
1.25k stars 47 forks source link

[Enhancement] Adding Mesh Group #24

Closed seagetch closed 1 year ago

seagetch commented 1 year ago

For some complex expressions like hair movement which consists of several parts, creating biding configuration for all facial angle are difficult.

https://mobile.twitter.com/seagetch/status/1575779070016901120 To solve above problem, suggesting Mesh Group as follows: 1. Mesh Group is a container node, which contains parts node as children. 2. Mesh Group has its own mesh and binding same as ordinary parts node. 3. Rigger can handle and edit its mesh and bindings of Mesh Group same way as the parts node. 4. Mesh Group override any attempted bindings to transformation in the children. 5. All transformation of the children node is done first, and then transformation defined in the Mesh Group is applied to all vertices in the children node. As a result, Mesh Group can handle all of descendant nodes as a grouped one object, and virtually applied Mesh Group transformation to its projection image. This Mesh Group can be also used for several different use cases: 1) If some parts consist of several sub nodes (e.g. base color node, overlay decoration node, and line drawing node), this can transform them at once. (mouth, arms, and legs are example of this use case.) 2) Maping several sub-parts into some curvy plane, and apply deformation of all of the parts along with the surface.
AndrewRyanChama commented 1 year ago

This seems like it's approximately equivalent to the live2d "warp deformer" feature. The functionality is described here: https://docs.live2d.com/en/cubism-editor-manual/making-and-placement-of-warp-deformer/

Having this functionality would be very useful, it seems like it's used quite frequently in some live2d models.

seagetch commented 1 year ago

This issue is closed by https://github.com/Inochi2D/inochi2d/pull/30