i would like more information about this topic too! if i got this right, all Joint-indices for a vert are stored in a AttributRegister and the weights are stored in another AttributRegister. (thats two used Va for max. 4 Joints per Vert)
A smart guy in the adobe Forum came up with a trick to store indices and weights in one AttributRegister by combining both numbers to one, and telling the GPU how to split them again (example: Index= 4, weight= 0.56, combined Index/weight = 4.56). each Joints position (Matrix) is stored in 3 Vc (molehill can handle 128 Constantregisters, so max Joints for a mesh are 128/3 = 42. would you share youre collada parser ? On 9 Apr., 00:01, Dave <[email protected]> wrote: > I'm in the process of improving my Collada Parser to deal with Skinning and > Animation. I have some high level questions about Away3D 4.0's api's. And > yes, I've looked at the examples - it's not clear what exactly I need to do > from where I am now. > > I currently am combining several clothing pieces (separate collada files) to > make up my character mesh. Those are all being properly brought in to > individual SkinnedSubGeometry pieces, with Mesh transforms for each. (They > are all currently attached to one root node). > > There is a separate skeleton node hierarchy that I'm also reading in, and > the named joints are the ones that need to be associated with the skin > weighting. > > Some class needs to connect these things together - something, for each > SkinnedSubGeometry, needs to say that joint "foo" is joint index "n" for > this SkinnedSubGeometry.... etc. Does such a class exist yet? > > I have set up the jointIndexData and jointWeightsData from the information > in collada in each SkinnedSubGeometry piece. > > Questions: > a) I am unsure of exactly where to put DaeSkin.bind_shape_matrix and > DaeSkin.inv_bind_matrix[]. I think the next place I need to look is > somewhere in src/away3d/animators/skeleton/... What classes must I put > together to do skeletal animation? Has this code changed little enough that > I could look at Away3D 3.6 docs (which seem to be more complete) and gleam > how to put all this together? > b) The example code (NSSSkinMesh.as for instance) seems to indicate that I > must pre-transform the vertex x,y,z by the bindPose. But I cannot tell if > that assumes there is no Mesh transform also applied, or if both need to be > done. The data passed into NSSSkinMesh is all "pre set" and very hard to > understand. > c) Is there a better example to refer to? > d) The NSSSkinMesh.as example code has the comment "indices need to be > multiplied by 3 (amount of matrix registers)". Is that a global thing > (molehill const, I assume)? Or is the number of matrix registers set > someplace else in the code, and this value is just matching that? > > Thanks for any help you can provide. > > -Dave
