Re: [Algorithms] Representing Animation Key Frame with Quaternion + Translation Vector
Brought to you by:
vexxed72
From: Jim S. <jsc...@sl...> - 2008-06-26 23:45:27
|
I would say no, the difficulty in creating all the matrices especially for a system that supports 4 weights per bone is not really feasible. You really have to limit the weighting and even the artists to discrete 'steps' (like 0.0f to 1.0f weight in 8 steps) to limit the permutations. It's a lot more work on the CPU as well and the whole point of hardware skinning,... is to unload the work onto the GPU. On the Wii this is the only method you have available and depending on how much animation you have to do CPU based skinning may be a better solution especially as vertex counts on the Wii tend to be significantly lower than other consoles. If only the Wii had multiple cores. ----- Original Message ----- From: "Cedric Pinson" <mor...@pl...> To: "Game Development Algorithms" <gda...@li...> Sent: Thursday, June 26, 2008 3:06 PM Subject: Re: [Algorithms] Representing Animation Key Frame with Quaternion + Translation Vector > Hi, > I was just curious if it's used mostly or not, and why. > > Cedric > > Jason Hughes wrote: >> Cedric, >> >> For what it's worth, it's the only way to do hardware skinning on one >> of the current gen consoles. I'll give you three guesses which. >> >> Yes, it works. But it also means that if you want to shift skinning >> over to the GPU, you have to do it in several times the number of >> batches, because you explode the number of matrices requires (because >> they're a combination of ALL the weights and ALL the bone matrix >> requirements for a whole vertex). For a last-gen game with relatively >> few verts and relatively few matrices, it's probably a good trade >> off. If your game has 200+ bones and several thousand verts and >> allows for >3 bone skinning per vertex, you may be looking at close to >> half as many matrices as you have vertices, depending on how your art >> is generated. The artist has almost no feel for how many matrices >> they're effectively creating given standard tools at their disposal, >> as well. >> >> But there's nothing wrong with it, if it works for you. >> >> JH >> >> Cedric Pinson wrote: >>> Hi, >>> Interesting topic, i am currently doing skinning and i would like to >>> have some other point of views. I use similar technique from >>> http://www.intel.com/cd/ids/developer/asmo-na/eng/172124.htm >>> 1 - in the pre process i identify set of vertex by uniq transform set >>> (eg v0 v1 and v2 are transformed by bone1 and bone2 with the weight1 and >>> weight2). >>> >>> 2 - Then i have a flaten list of transform by vertex group to update >>> each frame eg: >>> so to have the final transform (in animation space) for the set of >>> vertex ( v0, v1,v2) i have to collapse ( transform bone1 * w1 + >>> transform bone2 *w2) >>> >>> 3 - Then in cpu or gpu i have to do only one matrix * the vertex. >>> Because previous work computed the concatenation of matrix, it reduces >>> the number of matrix needed in the vertex shader. >>> >>> the method is describe here, >>> http://www.intel.com/cd/ids/developer/asmo-na/eng/172124.htm >>> What do you think about that ? >>> >>> Cedric >>> >>> Jon Watte wrote: >>> >>>> Lim Sin Chian wrote: >>>> >>>> >>>>> Just wondering if anyone has done this before and whether it is really >>>>> better in terms of performance and accuracy. >>>>> >>>>> >>>> I'm under the impression that everybody does that. Not only does it >>>> save >>>> space (assuming you don't need scale), but it also interpolates much >>>> better. Interpolating between two frames with a matrix looks pretty >>>> crufty. The only thing to watch out for is to make sure you go the >>>> "short way" around -- dot product the two quaternions, and if the >>>> outcome is negative, negate all the values of the destination. >>>> >>>> To compose quaternions, you just multiply them. Because it's a >>>> rotation-translation pair, if it's parent relative, then you apply the >>>> parent rotation to the child translation, and then apply your own >>>> rotation around that point. >>>> >>>> Sincerely, >>>> >>>> jw >>>> >>>> >>>> ------------------------------------------------------------------------- >>>> Check out the new SourceForge.net Marketplace. >>>> It's the best place to buy or sell services for >>>> just about anything Open Source. >>>> http://sourceforge.net/services/buy/index.php >>>> _______________________________________________ >>>> GDAlgorithms-list mailing list >>>> GDA...@li... >>>> https://lists.sourceforge.net/lists/listinfo/gdalgorithms-list >>>> Archives: >>>> http://sourceforge.net/mailarchive/forum.php?forum_name=gdalgorithms-list >>>> >>>> >>> >>> >> ------------------------------------------------------------------------ >> >> ------------------------------------------------------------------------- >> Check out the new SourceForge.net Marketplace. >> It's the best place to buy or sell services for >> just about anything Open Source. >> http://sourceforge.net/services/buy/index.php >> ------------------------------------------------------------------------ >> >> _______________________________________________ >> GDAlgorithms-list mailing list >> GDA...@li... >> https://lists.sourceforge.net/lists/listinfo/gdalgorithms-list >> Archives: >> http://sourceforge.net/mailarchive/forum.php?forum_name=gdalgorithms-list > > -- > +33 (0) 6 63 20 03 56 Cedric Pinson mailto:mor...@pl... > http://www.plopbyte.net > > > > ------------------------------------------------------------------------- > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > http://sourceforge.net/services/buy/index.php > _______________________________________________ > GDAlgorithms-list mailing list > GDA...@li... > https://lists.sourceforge.net/lists/listinfo/gdalgorithms-list > Archives: > http://sourceforge.net/mailarchive/forum.php?forum_name=gdalgorithms-list > > |