private static int BakeClip(GameObject go, SkinnedMeshRenderer skin, Animation anim, AnimTextureManifest manifest, List <int> yList) { var index = 0; foreach (AnimationState state in anim) { //tex var y = yList[index]; var tex = AnimTextureUtils.BakeMeshToTexture(skin, go, state.clip); manifest.atlas.SetPixels(0, y, tex.width, tex.height, tex.GetPixels()); Object.DestroyImmediate(tex); manifest.animInfos.Add(new AnimTextureClipInfo(state.name, y, yList[index + 1]) { isLoop = state.clip.isLooping, length = state.clip.length }); index++; } return(index); }
private static int BakeClip(GameObject go, SkinnedMeshRenderer skin, List <AnimClipData> clips, AnimTextureManifest manifest, List <int> yList, Dictionary <int, AnimClipData> states) { var index = 0; foreach (AnimClipData data in clips) { //tex var y = yList[index]; var width = skin.sharedMesh.vertexCount; var frameCount = (int)(data.clip.length * data.clip.frameRate); Texture2D posTex = null; Texture2D normalTex = null; Texture2D tangentTex = null; AnimTextureUtils.BakeMeshToTexture(skin, go, data.clip, out posTex, out normalTex, out tangentTex); manifest.posTex.SetPixels(0, y, posTex.width, posTex.height, posTex.GetPixels()); manifest.normalTex.SetPixels(0, y, normalTex.width, normalTex.height, normalTex.GetPixels()); manifest.tangentTex.SetPixels(0, y, tangentTex.width, tangentTex.height, tangentTex.GetPixels()); Object.DestroyImmediate(posTex); Object.DestroyImmediate(normalTex); Object.DestroyImmediate(tangentTex); manifest.animInfos.Add(new AnimTextureClipInfo(data.clip.name, y, yList[index + 1]) { isLoop = data.clip.isLooping, length = data.clip.length, frameRate = data.clip.frameRate, speed = data.speed }); index++; } foreach (var state in states) { int i = 0; for (; i < clips.Count; i++) { if (state.Value.clip.name == clips[i].clip.name) { break; } } manifest.stateInfos.Add(new StateInfo(state.Key, i)); } return(index); }