KhronosGroup / glTF

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

proposal for morph & interaction with skin #164

Closed fabrobinet closed 7 years ago

fabrobinet commented 10 years ago

over to Tony

tparisi commented 10 years ago

I'll start on this next week

fabrobinet commented 10 years ago

@kmammou thanks Khaled, can you open a specific issue to track this ? Also we will make sure to integrate morph compression but to provide a better answer we need to implement/specify this first with raw data in glTF.

kmammou commented 10 years ago

done

pjcozzi commented 10 years ago

Closing as duplicate with #165. Thanks @kmammou

fabrobinet commented 10 years ago

No this is is not a duplicate :) this is to track the morph feature raw (i.e) the base proposal without compression. #165 is with compression.

pjcozzi commented 10 years ago

Ah, OK.

pjcozzi commented 10 years ago

Any updates here? No rush, just trying to keep my implementation moving.

fabrobinet commented 10 years ago

Tony's working on it, had some recent emails with him, I'll send them over to you.

tparisi commented 10 years ago

Morph proposal imminent... meantime here is the recap of our conversation on the interaction between skins and morphs:

For simplicity, I suggest we keep "instanceSkin" for a skin applied to a mesh, and add an "instanceMorph" property at the same level (as property of the node). There can be interactions between a morph and skin applied to the same mesh, so we need to specify what that interaction is. In COLLADA the spec suggested that an implementation apply the morph transformation(s) first and then do the skinning. I recommend we specify the same semantics for glTF.

This is good for many animation scenarios, but some packages (like Poser) actually allow the order to be changed (e.g. skin first, then morph). I would like to add this capability after version 1.0. For ultimate flexibility, we could allow glTF to store an array of controller transformations on each node, perhaps with the order being implicit based on the order of the array, perhaps instead using some kind of ordinal. Other properties may also need to be supplied; this area is very TBD. We could do this in a backward-compatible way by simply adding a "controllers" or "animations" property to the node, that contains this information.

"instanceMorph" details coming soon (tomorrow hopefully)

pjcozzi commented 10 years ago

@tparisi do we have example JSON for instanceMorph yet?

tparisi commented 10 years ago

no - later today.

tparisi commented 10 years ago

Related to #210

pjcozzi commented 9 years ago

@fabrobinet post 1.0?

emilian0 commented 7 years ago

Is this a good example of a node instantiating a morph with skinning ?

"luckyNode": {
  "children": [],
  "morphs": ["myFirstMorph"] ,
  "skeletons": ["skeleton-root_1"],
  "skin": "skin_1"
}

I agree with Tony on that we can assume the morph to be applied first followed by the skinning. I am not sure about the value of allowing these operations to be reordered.

pjcozzi commented 7 years ago

Updated in #826