2015-10-05 71 views
0

我使用THREE.js導出器作爲Blender將綁定模型導出到我的應用程序中。但是生成的JSON數據中沒有骨骼矩陣。作爲示例:使用THREE.JS爲OpenGL應用程序生成骨骼綁定矩陣

{ 
    "name": "W_Hips", 
    "rotq": [-0.845519,0.00128,5.9e-05,0.533943], 
    "scl": [1,0.990953,0.959433], 
    "pos": [0.00022,5.09513,-0.466128], 
    "parent": -1 
} 

如何使用此數據爲骨骼生成綁定矩陣?

回答

0

好了,一切都太容易

glm::mat4 l_translate = glm::translate(glm::mat4(1.f),m_vPosition); // "pos" from JSON data 
glm::mat4 l_rot = glm::mat4_cast(m_qRotation); // "rotq" from JSON data 
glm::mat4 l_scale = glm::scale(glm::mat4(1.f),m_vScale); // "scl" from JSON data 
glm::mat4 l_local = l_translate*l_rot*l_scale; 

if(m_parent == NULL) m_matrix = l_local; 
else m_matrix = m_parent->m_matrix*l_local; 
m_bindMatrix = glm::inverse(m_matrix); 

for(size_t i=0; i < m_childBoneVector.size(); i++) m_childBoneVector[i]->generateBindPose(); // same calculation for children