public void FinalizeBVHSkeleton() { for (int k = 0; k < Bones.Count(); k++) { // set max Depth if (Bones[k].Depth > maxDepth) { maxDepth = Bones[k].Depth; } //set Bone Index for Motion Values Array int motionCount = 0; for (int n = 0; n < k; n++) { motionCount += Bones[n].ChannelCount; } Bones[k].MotionSpace = motionCount; //set Count of Channels for Skeleton channels += Bones[k].ChannelCount; //set Children List <BVHBone> childBoneList = Bones.FindAll(i => i.Parent == Bones[k]); if (childBoneList.Count == 0) { Bones[k].End = true; } else { Bones[k].Children = childBoneList; } } }
/// <summary> /// Метод завершает построение экземпляра скелета /// </summary> public void FinalizeBVHSkeleton() { for (int k = 0; k < Bones.Count(); k++) { if (Bones[k].Depth > this.maxDepth) { this.maxDepth = Bones[k].Depth; } int motionCount = 0; for (int n = 0; n < k; n++) { motionCount += Bones[n].ChannelCount; } Bones[k].MotionSpace = motionCount; this.channels += Bones[k].ChannelCount; //Получить все дочерние кости у текущей кости List <BVHBone> childBoneList = Bones.FindAll(i => i.Parent == Bones[k]); if (childBoneList.Count == 0) { Bones[k].End = true; //Если дочерних нет, то текущая кость признается конечной } else { Bones[k].Children = childBoneList; //Если есть, то создается список дочерних костей } } }