Skip to main content
16 events
when toggle format what by license comment
Jun 18, 2014 at 12:40 answer added user3749411 timeline score: 1
Feb 19, 2014 at 7:13 history tweeted twitter.com/#!/StackGameDev/status/436035892374155264
May 13, 2013 at 19:18 comment added Exilyth In blender > 2.6, you can use bpy_extras.io_utils.axis_conversion (see: blender.org/documentation/blender_python_api_2_66a_release/… ) to convert to openGL space.
Nov 24, 2012 at 4:50 history edited SaldaVonSchwartz CC BY-SA 3.0
deleted 2521 characters in body
Nov 23, 2012 at 5:42 comment added SaldaVonSchwartz Not really cause those are inverse bind poses. They need to go the opposite order for the whole transform to take you to and back from joint space. The skinning transform for a joint j and a vertex v should be v' = C0*C1*...*CjBj^-1*Bj-1^-1...*B0^-1*v
Nov 22, 2012 at 12:58 comment added ccxvii You say you're using the same matrix conventions as OpenGL (column major). In that case, bindPosePalette[i] = GLKMatrix4Multiply(aSkeleton.joints[i].inverseBindTransform, bindPosePalette[aSkeleton.joints[i].parentIndex]) looks to me to be the wrong order. It ought to be worldMatrix = parentWorldMatrix * localMatrix.
Nov 21, 2012 at 2:37 comment added SaldaVonSchwartz I just took a look at your post but I don't see any insight into my situation right off the bat: A - blender vs opengl coordinate systems -> I take care of by exporting from blender with WorldTransform = Matrix().Identity(4) WorldTransform *= Matrix.Rotation(radians(-90), 4, "X") WorldTransform *= Matrix.Rotation(radians(180), 4, "Z") B - Blender vs my math library quaternion order -> I take care of by exporting this way file.write('Q {:9f} {:9f} {:9f} {:9f}\n'.format(rotationQ[1], rotationQ[2], rotationQ[3], rotationQ[0]))
Nov 21, 2012 at 1:50 comment added SaldaVonSchwartz I also added 3 pictures
Nov 21, 2012 at 1:50 history edited SaldaVonSchwartz CC BY-SA 3.0
added 1643 characters in body
Nov 21, 2012 at 0:34 comment added SaldaVonSchwartz but the relevant part is there in the code I already posted: in the update method you can see the code which calculates time (which is hardcoded for simplicity in this example) and figures out the right keyframes between which to interpolate
Nov 21, 2012 at 0:33 comment added SaldaVonSchwartz I didn't post the source of the animation cause it's not relevant to the question and will add a bunch more of code, but the high-level approach is: on startup the animation subsystem checks a db which among other things tells it which anim clips are associated with which skeleton, from this, it uses a parser to open the animation files on disk and populate the required data structures. The data structure for an animation has fps, duration, and a keyframes array. keyframes in turn are structs which hold a kyframe number plus a skeleton pose. the pose in turn has the array of SQTs
Nov 20, 2012 at 14:56 comment added House Well it sounds like you're nearly there. How are you reading in the key frame animation? Can you update with images of your troubles?
Nov 20, 2012 at 6:15 history edited SaldaVonSchwartz CC BY-SA 3.0
added 21 characters in body
Nov 20, 2012 at 6:08 comment added House I went through something similar recently. I don't have time to read your post right now but I'll check it again in the morning. See my post for a few tips: gamedev.stackexchange.com/questions/35451/…
Nov 20, 2012 at 5:55 history edited SaldaVonSchwartz CC BY-SA 3.0
added 2033 characters in body
Nov 20, 2012 at 5:47 history asked SaldaVonSchwartz CC BY-SA 3.0