/// <summary> /// ボーン選択の配列を得ます。 /// </summary> /// <param name="sub_mesh">サブメッシュ</param> /// <param name="selected_node">選択ボーン</param> /// <returns>ボーン選択の配列</returns> static int[] ClipBoneSelections(TSOSubMesh sub_mesh, TSONode selected_node) { int[] clipped_boneSelections = new int[sub_mesh.maxPalettes]; for (int numPalettes = 0; numPalettes < sub_mesh.maxPalettes; numPalettes++) { TSONode tso_node = sub_mesh.GetBone(numPalettes); clipped_boneSelections[numPalettes] = (selected_node == tso_node) ? 1 : 0; } return(clipped_boneSelections); }
/// <summary> /// スキン変形行列の配列を得ます。 /// </summary> /// <param name="sub_mesh">サブメッシュ</param> /// <returns>スキン変形行列の配列</returns> public Matrix[] ClipBoneMatrices(TSOSubMesh sub_mesh) { Matrix[] clipped_boneMatrices = new Matrix[sub_mesh.maxPalettes]; for (int numPalettes = 0; numPalettes < sub_mesh.maxPalettes; numPalettes++) { TSONode tso_node = sub_mesh.GetBone(numPalettes); TMONode tmo_node; if (nodemap.TryGetValue(tso_node, out tmo_node)) { clipped_boneMatrices[numPalettes] = tso_node.offset_matrix * tmo_node.combined_matrix; } } return(clipped_boneMatrices); }
/// <summary> /// スキン変形行列の配列を得ます。 /// </summary> /// <param name="sub_mesh">サブメッシュ</param> /// <returns>スキン変形行列の配列</returns> public Matrix[] ClipBoneMatrices(TSOSubMesh sub_mesh) { Matrix[] clipped_boneMatrices = new Matrix[sub_mesh.maxPalettes]; for (int numPalettes = 0; numPalettes < sub_mesh.maxPalettes; numPalettes++) { TSONode tso_node = sub_mesh.GetBone(numPalettes); TMONode tmo_node; if (nodemap.TryGetValue(tso_node, out tmo_node)) clipped_boneMatrices[numPalettes] = tso_node.offset_matrix * tmo_node.combined_matrix; } return clipped_boneMatrices; }