Hi
default implementation uses vertex attribs from slot 11 upwards for bone
weights, and most implementations have GL_MAX_VERTEX_ATTRIBS = 16, so with more
than 4 attributes you are probably hitting hardware limits on vertex attributes
count, i think gl error comes from this too.
Cheers.
29.11.2012, 01:01, Peterakos hay...@gmail.com:
Hello.
I use the default RigTransformHardware for skinning on a dae Model
with skeleton.
My model consists of 4 RigGeometries (image 1). The number of bones
per vertex is 7, 2, 20 and 15 respectively.
After enabling the OSG_NOTIFY as INFO i see that it creates vec4
boneWeightX attributes based on the 4 previous numbers
(num_of_bones/2).
The vertex shader i use for skinning is the following:
#version 120
attribute vec4 boneWeight0;
attribute vec4 boneWeight1;
attribute vec4 boneWeight2;
attribute vec4 boneWeight3;
uniform int nbBonesPerVertex;
uniform mat4 matrixPalette[MAX_MATRIX];
vec4 position;
void computeAcummulatedNormalAndPosition(vec4 boneWeight){
int matrixIndex = int(boneWeight[0]);
float matrixWeight = boneWeight[1] ;
mat4 matrix = matrixPalette[matrixIndex];
position += matrixWeight * (matrix * gl_Vertex );
}
void main( void ){
position = vec4(0.0,0.0,0.0,0.0);
if (nbBonesPerVertex 0)
computeAcummulatedNormalAndPosition(boneWeight0);
if (nbBonesPerVertex 2)
computeAcummulatedNormalAndPosition(boneWeight1);
if (nbBonesPerVertex 4)
computeAcummulatedNormalAndPosition(boneWeight2);
if (nbBonesPerVertex 6)
computeAcummulatedNormalAndPosition(boneWeight3);
gl_Position = gl_ModelViewProjectionMatrix * position;
}
The problem is that when i try to use all the boneWeight attributes it
creates (which are 10), the model breaks (image 2).
On the other hand the code above (with only 4 attributes) works like
the RigTransformSoftware.
On a different high detail model (which creates 25 bone weight
attributes max), i get the following results:
-With only the first 4 attributes: the model is broken and animated
-With all the attributes: the model is correct but there is no
animtion.
Can anyone help me through this ?
Is this behavior normal?
I also get a lot of Warning: detected OpenGL error 'invalid value'
after RenderBin::draw()
Thank you for your time and sorry for the long post.
,
___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org