private void BuildBonePositions(MeshAnimationData pData) { m_bonePositions = new Dictionary <string, Vector3[]>(); m_boneRotations = new Dictionary <string, Quaternion[]>(); if (pData.BoneCount <= 0) { return; } for (int i = 0; i < FrameCount; i++) { Vector3[] positions = pData.GetFrameBonePositions(i); Quaternion[] rotations = pData.GetFrameBoneRotations(i); for (int j = 0; j < pData.BoneCount; j++) { string key = pData.BoneNames[j]; if (!m_bonePositions.ContainsKey(key)) { m_bonePositions[key] = new Vector3[FrameCount]; } m_bonePositions[key][i] = positions[j]; if (!m_boneRotations.ContainsKey(key)) { m_boneRotations[key] = new Quaternion[FrameCount]; } m_boneRotations[key][i] = rotations[j]; } } }
//ncrunch: no coverage start protected override void LoadData(Stream fileData) { // Outstanding feature, see case 11039 //LoadData(new BinaryReader(fileData).Create() as MeshAnimationData); var loadedAnimationData = new MeshAnimationData(); loadedAnimationData.LoadData(new BinaryReader(fileData)); LoadData(loadedAnimationData); }
public MeshAnimationData GetAnimationData() { if (m_animationData == null) { m_animationData = new MeshAnimationData(m_scene); } return(m_animationData); }
/// <summary> /// Initializes a new instance of the <see cref="MeshAnimation"/> class. /// </summary> /// <param name="pUv">Mesh UV</param> /// <param name="pTriangles">Mesh Triangles</param> /// <param name="pData">Mesh animation data</param> public MeshAnimation(Vector2[] pUv, int[] pTriangles, MeshAnimationData pData) { FrameCount = pData.FrameCount; Name = pData.Name; m_isGenerateNormal = pData.GenerateNormal; BoneNames = pData.BoneNames; m_uv = pUv; m_triangles = pTriangles; m_data = pData; m_hasInitFrame = false; }
public override List <AnimationSequence> AllocateMemory(string arg) { List <AnimationSequence> resultAnimationCollection = null; using (AssimpModelLoader loader = new AssimpModelLoader(arg, CParser.Assimp.Strategy.SkeletonPerVertexBoneInfluenceType.ThreeBones)) { if (loader.GetHasAnimationData()) { MeshAnimationData animationData = loader.GetAnimationData(); if (animationData != null) { resultAnimationCollection = AssimpConverter.Converter.ConvertAssimpAnimationToEngineAnimation(animationData.Animations); } } } return(resultAnimationCollection); }
public void Destory() { if (m_frames != null) { for (int i = 0; i < m_frames.Length; i++) { Object.DestroyImmediate(m_frames[i], true); } m_frames = null; } m_bonePositions = null; m_boneRotations = null; m_uv = null; m_data = null; m_triangles = null; }
/// <summary> /// Construct the mesh frames from mesh animation data. /// </summary> public void BuildFrames() { m_frames = new Mesh[FrameCount]; for (int i = 0; i < FrameCount; i++) { Mesh mesh = new Mesh(); mesh.name = "SkinMesh"; mesh.vertices = m_data.GetFrameVertices(i); mesh.uv = m_uv; mesh.triangles = m_triangles; if (m_isGenerateNormal) { mesh.RecalculateNormals(); } m_frames[i] = mesh; } m_uv = null; m_triangles = null; m_data = null; m_hasInitFrame = true; }
//ncrunch: no coverage end public void LoadData(MeshAnimationData animationData) { FramesPerSecond = animationData.FramesPerSecond; Frames = animationData.FramesData; }