void eol_armature_link_mesh( eolArmature *arm, eolMesh *mesh ) { int i; eolMat4 rot90matrix; if ((arm == NULL) || (mesh == NULL)) { eol_logger_warn( "eol_armature: passed null parameter to link_mesh\n" ); return; } for (i = 0; i < arm->boneCount; i++) { arm->_bones[i].meshGroup = eol_mesh_get_group_by_name(arm->_bones[i].name,mesh); } rot90matrix[0][0]=1.0f; rot90matrix[1][0]=0.0f; rot90matrix[2][0]=0.0f; rot90matrix[3][0]=0.0f; rot90matrix[0][1]=0.0f; rot90matrix[1][1]=0.0f; rot90matrix[2][1]=1.0f; rot90matrix[3][1]=0.0f; rot90matrix[0][2]=0.0f; rot90matrix[1][2]=-1.0f; rot90matrix[2][2]=0.0f; rot90matrix[3][2]=0.0f; rot90matrix[0][3]=0.0f; rot90matrix[1][3]=0.0f; rot90matrix[2][3]=0.0f; rot90matrix[3][3]=0.0f; for (i = 0; i < mesh->_numVertices; i++) { eol_mat4_mult_vert( &mesh->_rest[i], arm->matrix, mesh->_rest[i] ); eol_mat4_mult_vert( &mesh->_rest[i], rot90matrix, mesh->_rest[i] ); } arm->_isLinked = eolTrue; }
void eol_matrix_rotate_vec3d(eolVec3D *out,eolVec3D rot,eolVec3D in) { eolMat4 rotmatrix; if (!out)return; rotmatrix[0][0]=rot.x * EOL_DEGTORAD; rotmatrix[1][0]=1.0f; rotmatrix[2][0]=0.0f; rotmatrix[3][0]=0.0f; rotmatrix[0][1]=rot.y * EOL_DEGTORAD; rotmatrix[1][1]=0.0f; rotmatrix[2][1]=1.0f; rotmatrix[3][1]=0.0f; rotmatrix[0][2]=rot.z * EOL_DEGTORAD; rotmatrix[1][2]=0.0f; rotmatrix[2][2]=0.0f; rotmatrix[3][2]=1.0f; rotmatrix[0][3]=0.0f; rotmatrix[1][3]=0.0f; rotmatrix[2][3]=0.0f; rotmatrix[3][3]=0.0f; eol_mat4_mult_vert( out, rotmatrix, in ); }
void eol_mat4_mult_vec3d( eolVec3D * out, eolMat4 mat, eolVec3D vec3d ) { eol_mat4_mult_vert( out, mat, vec3d ); }