// ボーン名をIDに置き換える public void SetBoneIDFromName(PmxFile pmd) { pmd.GetBoneByName(effector_node_name).IK = this; target_node_id = pmd.GetBoneIDByName(target_node_name); links.Clear(); foreach (string node_name in chain_node_names) { PMD_IKNode link = new PMD_IKNode(); link.node_id = pmd.GetBoneIDByName(node_name); if (node_name == "左ひざ" || node_name == "右ひざ") { link.constrain_angle = true; link.angle_min.X = Geometry.DegreeToRadian(-180f); link.angle_max.X = Geometry.DegreeToRadian(-0.5f); } links.Add(link); } }
/// <summary> /// センターボーンの位置調整 /// </summary> void UpdateRootBonePosition() { pmd.GetBoneByName("センター").position = new Vector3( 0.0f, pmd.GetBoneByName("下半身").position.Y * 0.65f, 0.0f); pmd.GetBoneByName("センター先").position = new Vector3( 0.0f, 0.0f, 0.0f); }