private void UpdateCharacterSkeleton() { if (!m_sentSkeletonMessage) { m_sentSkeletonMessage = true; var characterBones = m_skinnedEntity.AnimationController.CharacterBones; var skeletonDescription = new MySkeletonBoneDescription[characterBones.Length]; for (int i = 0; i < characterBones.Length; i++) { skeletonDescription[i].Parent = -1; if (characterBones[i].Parent != null) { for (int j = 0; j < characterBones.Length; j++) { if (characterBones[j].Name == characterBones[i].Parent.Name) { skeletonDescription[i].Parent = j; break; } } } if (characterBones[i].Parent != null) { Debug.Assert(skeletonDescription[i].Parent > -1, "Can't find bone with parent name!"); } skeletonDescription[i].SkinTransform = characterBones[i].SkinTransform; } VRageRender.MyRenderProxy.SetCharacterSkeleton(RenderObjectIDs[0], skeletonDescription, Model.Animations.Skeleton.ToArray()); } }
internal void SetSkeleton(MySkeletonBoneDescription[] hierarchy, int[] skeletonIndices) { m_skeletonHierarchy = hierarchy; m_skeletonIndices = skeletonIndices; m_skinTransforms = new Matrix[m_skeletonHierarchy.Length]; m_absoluteTransforms = new Matrix[m_skeletonHierarchy.Length]; m_owner.MarkRenderDirty(); }
public void SetSkeleton(MySkeletonBoneDescription[] hierarchy, int[] skeletonIndices) { m_skeletonHierarchy = hierarchy; m_skeletonIndices = skeletonIndices; m_boneInterpolators = new MyInterpolationQueue<Matrix>[m_skeletonHierarchy.Length]; m_interpolatedTransforms = new Matrix[m_skeletonHierarchy.Length]; m_skinTransforms = new Matrix[m_skeletonHierarchy.Length]; m_absoluteTransforms = new Matrix[m_skeletonHierarchy.Length]; for (int i = 0; i < m_skeletonHierarchy.Length; i++) { m_boneInterpolators[i] = new MyInterpolationQueue<Matrix>(5, Matrix.SlerpScale); } }
internal static void SetSkeleton(EntityId entity, MySkeletonBoneDescription[] hierarchy, int[] skeletonIndices) { Skinnings[entity] = new MySkinning { SkeletonHierarchy = hierarchy, SkeletonIndices = skeletonIndices, SkinTransforms = new Matrix[hierarchy.Length], AbsoluteTransforms = new Matrix[hierarchy.Length] }; EntityDirty.Add(entity); }