PDA

View Full Version : Boneinterpolations


oc2k1
12-26-06, 11:28 AM
Yesterday I've do some experiments with an interactice geometrie program (See attachment). A bonesystem wich use a linear interpolation isn't a problem,
a month ago, I've wrote a vertexshader that do that with compressed matrices. For lowpolymodels is the linear interpolation doesn't makes trouble, but for medium and highpolymodels (>100K faces) it doesn't looks good. Knees or elbows looks more than a buckled pipe than something organic.

So I've create in Kig a geometrical model of my linear bone interpolation (blue) and add a lerp interpolation (green). The Lerp interpolation is verry cheap in the Verteshader it cost only a normalisation and a multiplication with the distance from joint to vertex (it's static, so it could be the W componet from gl_Vertex)
The convex side looks much better but the concav side has still a too large hack.

After that I've add a third interpolation: I've add the differens between linear and lerp to the the lerp interpolation (red) . It looks like a usable simple way to fill the hacks.

For the standart linear bonesystem I need two atribute vec4 per bone. One for weighting and one for indexing (practicel 3 bones per Vertex should be enough) for the lerp interpolation another storage would be better:
Each vertex is assigned to one joint. Most joints connect two and rare three bones. Because the jointnummber is needet for each vertex and every times the same bones are joined at the same joint, it would be enough to store the bonedepencys as uniform variable indexed by the jointnumber. So only one value is needet to index all bonerotationmatrices (or quarternions) The tree other values could be used for weighting up to four bones per joint (The sum is every time 1.0 so only 3 values for 4 bones are needet)
An other Idea is to store one value in that vector, that modify the interpolation form linear over lerp to hyperlerp. Then there remain only two values, but enough to store weigthing for three bones.

Writing a vertexshader shouldn't be a problem, but I don't know an editor that is able to edit meshes that are transformed by a custom vertexshader or is able to skinn for lerp or slerp. (I think about to add that features to my shadereditor, but it's too early for adding mesh editing tools)

oc2k1
12-29-06, 05:14 PM
Blenders boneanimationsystem is realy unusable. Maya use the same linear interpolation ( It may be possible too use the flexors, but that isn't that I want) Blender and Maya have both the problem that they are developed for nonrealtime rendering :(
I'm thinking about coding a special program for skinning. But that take some days :(

I found in "Game Programing Gems 4" an artikel that use the slerp interpolation too (without any comment how to create the needet meshdata :P )

Tuork
01-04-07, 12:59 PM
You guys are speaking in japanese.

I will hopefuly one day be able to come back and understand what it is you are talking about. :(


Sorry for the off-topic-ness...