KhronosGroup / glTF

glTF – Runtime 3D Asset Delivery
Other
7.18k stars 1.14k forks source link

Proposal for morph/skinning compression #165

Closed kmammou closed 6 years ago

kmammou commented 11 years ago

For morph/skinning compression, I would like to propose the following approach.

Let's say that we have a base mesh M with the following associated attributes:

M.position: vertices positions, M.normal: vertices normals, M.floatAttribute0: vertices texCoord set 0, M.floatAttribute1: vertices texCoord set 1, M.floatAttribute2: vertices animation weights, M.intAttribute0: vertices joint IDs. Let T(0), T(1), ..., T(n) be the associated morphing targets and let's suppose than only the vertices positions and attributes are update by the morphing. Therefore, only the following information need to be stored for each target T(i):

T(i).position: vertices positions, and T(i).normal: vertices normals. I propose to encode {M, (Ti)i} in one stream to be able to exploit the correlations between the base mesh M and the targets (Ti)i. More precisely, we will encode a mesh C composed of the following information:

C.position = M.position, C.normal = M.normal, C.floatAttribute0: vertices texCoord set 0, C.floatAttribute1: vertices texCoord set 1, C.floatAttribute2: vertices animation weights, C.intAttribute0: vertices joint IDs. C.floatAttribute3 = T(0).position- M.position, C.floatAttribute4 = T(0).normal - M.normal, C.floatAttribute5 = T(1).position - M.position, C.floatAttribute6 = T(1).normal- M.normal, ... C.floatAttribute2n+3 = T(n).position - M.position, C.floatAttribute2n+4 = T(n).normal- M.normal, Any thoughts?

pjcozzi commented 9 years ago

@fabrobinet post 1.0?

fabrobinet commented 9 years ago

yes, post 1.0

pjcozzi commented 6 years ago

@FrankGalligan do you have any interest/plans for morph/skin compression? Is this a useful issue to keep open here?

donmccurdy commented 6 years ago

Closing, I think we have both interest and tentative plans to iterate from KHR_draco_mesh_compression to support morphs, skinning, or both, but probably do not need an issue open at this stage.