Example #1
0
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;
}
Example #2
0
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
  );
}
Example #3
0
void eol_mat4_mult_vec3d(
  eolVec3D * out,
  eolMat4    mat,
  eolVec3D   vec3d
)
{
  eol_mat4_mult_vert(
    out,
    mat,
    vec3d
  );
}