Beispiel #1
0
        // ボーン名を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);
            }
        }
Beispiel #2
0
 /// <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);
 }