load-collada-dae
Version:
Load the WebGL graphics buffer data from a collada .dae model and return a draw command that accepts options
31 lines (24 loc) • 918 B
JavaScript
var mat3FromMat4 = require('gl-mat3/from-mat4')
var quatMultiply = require('gl-quat/multiply')
var quatFromMat3 = require('gl-quat/fromMat3')
var quatScale = require('gl-quat/scale')
module.exports = keyframesToDualQuats
// collada-dae-parser exports joint matrices
// here we convery them into dual quaternions
function keyframesToDualQuats (jointMatrices) {
var rotQuaternions = []
var transQuaternions = []
jointMatrices.forEach(function (joint, index) {
// Create our dual quaternion
var rotationMatrix = mat3FromMat4([], joint)
var rotationQuat = quatFromMat3([], rotationMatrix)
var transVec = [joint[12], joint[13], joint[14], 0]
var transQuat = quatScale([], quatMultiply([], transVec, rotationQuat), 0.5)
rotQuaternions.push(rotationQuat)
transQuaternions.push(transQuat)
})
return {
rotQuaternions: rotQuaternions,
transQuaternions: transQuaternions
}
}