예제 #1
0
        private float GetMutationStrength(JointMotion motion, Individual parentA, Individual parentB)
        {
            float extinction = 0.5f * (parentA.Extinction + parentB.Extinction);
            float span       = motion.GetUpperLimit() - motion.GetLowerLimit();

            return(span * extinction);
        }
예제 #2
0
            private void DrawMotionInspector(JointMotion motion, string name)
            {
                using (var scope = new EditorGUILayout.VerticalScope("Button")) {
                    EditorGUILayout.HelpBox(name, MessageType.None);
                    motion.State = (JointState)EditorGUILayout.EnumPopup("State", motion.State);
                    if (motion.State != JointState.Fixed)
                    {
                        motion.MotionType = (MotionType)EditorGUILayout.EnumPopup("Motion Type", motion.MotionType);
                        if (motion.MotionType != MotionType.Teleport)
                        {
                            motion.SetMaximumVelocity(EditorGUILayout.FloatField("Max Velocity", motion.GetMaximumVelocity()));
                            motion.SetMaximumAcceleration(EditorGUILayout.FloatField("Max Acceleration", motion.GetMaximumAcceleration()));
                        }
                        if (motion.Joint.Type != JointType.Continuous)
                        {
                            motion.SetLowerLimit(EditorGUILayout.FloatField("Lower Limit", motion.GetLowerLimit()));
                            motion.SetUpperLimit(EditorGUILayout.FloatField("Upper Limit", motion.GetUpperLimit()));
                        }
                        motion.SetTargetValue(EditorGUILayout.FloatField("Target Value", motion.GetTargetValue()));
                    }

                    //motion.Output = EditorGUILayout.Toggle("Output", motion.Output);
                    //motion.Record = EditorGUILayout.Toggle("Record", motion.Record);
                }
            }
예제 #3
0
파일: Model.cs 프로젝트: Gummiente/UISTa7
 public JointMotion[] GetMotions()
 {
     JointMotion[] motions = new JointMotion[Motions.Length];
     for (int i = 0; i < motions.Length; i++)
     {
         motions[i] = Motions[i].Motion;
     }
     return(motions);
 }
예제 #4
0
 private float Clip(float gene, JointMotion motion)
 {
     if (motion.Joint.Type == JointType.Continuous)
     {
         /*
          * while(gene > Mathf.PI) {
          *      gene -= Mathf.PI;
          * }
          * while(gene < -Mathf.PI) {
          *      gene += Mathf.PI;
          * }
          */
     }
     else
     {
         gene = Mathf.Clamp(gene, motion.GetLowerLimit(), motion.GetUpperLimit());
     }
     return(gene);
     //return motion.ConstrainToLimits(gene);
 }
예제 #5
0
파일: Model.cs 프로젝트: Gummiente/UISTa7
 public MotionPtr(JointMotion motion, Node node, int index)
 {
     Motion = motion;
     Node   = node;
     Index  = index;
 }