Ejemplo n.º 1
0
 public void InitializePose(Pose.CGfxSkeletonPose pose)
 {
     OutPose            = pose.Clone();
     mMeshSpaceBasePose = pose.Clone();
     AdditiveNode?.InitializePose(pose);
     BaseNode?.InitializePose(pose);
 }
Ejemplo n.º 2
0
        public float TrajectoryCost(AnimNode.AnimationClip anim, MatchingGoal goal, ref Pose.CGfxSkeletonPose pose)
        {
            var   duration = anim.Duration;
            var   count    = Math.Min(anim.Duration / 25, goal.Trajectory.Count);
            var   skeleton = CEngine.Instance.SkeletonAssetManager.GetSkeleton(CEngine.Instance.RenderContext, RName.GetRName(anim.GetElementProperty(ElementPropertyType.EPT_Skeleton)));
            float cost     = 0;

            for (int i = 0; i < count; ++i)
            {
                Skeleton.CGfxMotionState data = new Skeleton.CGfxMotionState();
                //anim.GetMotionData(i * 25, pose.Root.BoneDesc.NameHash, ref data);
                var p = data.Position;
                p.Y = 0;
                var hostLoc = goal.HostPlacement.Location;
                hostLoc.Y = goal.Trajectory[i].Y;
                cost     += (goal.HostPlacement.Rotation * p + hostLoc - goal.Trajectory[i]).Length();
                //if(i + 1 >= goal.Trajectory.Length)
                //{
                //    cost += data.Velocity.Length();
                //}
                //else
                //    cost += (goal.HostPlacement.Rotation * data.Velocity - (goal.Trajectory[i + 1] - goal.Trajectory[i]) / 25 * 1000.0f).Length();
            }

            return(cost);
        }
 public void InitializePose(Pose.CGfxSkeletonPose pose)
 {
     OutPose  = pose.Clone();
     mAddPose = pose.Clone();
     mRefPose = pose.Clone();
     AdditiveNode?.InitializePose(pose);
     RefNode?.InitializePose(pose);
 }
Ejemplo n.º 4
0
        public static MotionPose CreateMotionPose(AnimNode.AnimationClip clip, long frameTime)
        {
            Pose.CGfxSkeletonPose animationPose = clip.GetAnimationSkeletonPose(frameTime);
            MotionPose            motionPose    = new MotionPose(clip.Name.GetHashCode(), frameTime, animationPose);

            motionPose.CalculateTrajectory(clip);
            return(motionPose);
        }
Ejemplo n.º 5
0
        public bool Add(float weight, Pose.CGfxSkeletonPose pose)
        {
            var key = new KeyPose();

            key.Weight = weight;
            key.Pose   = pose;
            mPosesList.Add(key);
            mPosesList.Sort();
            return(true);
        }
Ejemplo n.º 6
0
 public void InitializePose(Pose.CGfxSkeletonPose pose)
 {
     OutPose            = pose.Clone();
     mCrossfade.OutPose = OutPose;
     using (var it = mPosesDic.GetEnumerator())
     {
         while (it.MoveNext())
         {
             it.Current.Value.PoseNode.InitializePose(pose);
         }
     }
 }
Ejemplo n.º 7
0
 public PoseItemForBlend(Pose.CGfxSkeletonPose pose, Func <float> blendTimeFunc)
 {
     Pose = pose;
     EvaluateBlendTimeFunc = blendTimeFunc;
 }
Ejemplo n.º 8
0
 public PoseItemForBlend(Pose.CGfxSkeletonPose pose, float blendTime)
 {
     Pose       = pose;
     mBlendTime = blendTime;
 }
Ejemplo n.º 9
0
 public void InitializePose(Pose.CGfxSkeletonPose pose)
 {
     OutPose = pose.Clone();
     SourceNode?.InitializePose(pose);
     DestinationNode?.InitializePose(pose);
 }
Ejemplo n.º 10
0
 public AnimationBindingPose Bind(Pose.CGfxSkeletonPose pose)
 {
     return(Clip?.Bind(pose));
 }
Ejemplo n.º 11
0
 float mCurrentTime = 0.0f; public void InitializePose(Pose.CGfxSkeletonPose pose)
 {
     OutPose = pose.Clone();
     FromNode.InitializePose(pose);
     ToNode.InitializePose(pose);
 }