IEnumerator BoneChange(float time) { float _time = 0; while (_time < time) { _time += Time.deltaTime; FaceData.RecalculateBone(_time / time); yield return(new WaitForEndOfFrame()); } }
/// <summary> /// 读取一个Avatar数据 /// </summary> /// <param name="data">Avatar数据</param> public void SetAvatarData(AvatarData data) { Texture2D tex = new Texture2D(0, 0); if (data.FaceImageData != null) { tex.LoadImage(data.FaceImageData); } else { tex = null; } FaceData = new FaceData(transform, Face, data.FaceBonesData, false, tex); SetFaceImage(FaceData.DataImage); Hair = data.Hair.GetSkinnedMesh(Bones, Hair); UpperBody = data.UpperBody.GetSkinnedMesh(Bones, UpperBody); UpperCloth = data.UpperCloth.GetSkinnedMesh(Bones, UpperCloth); LowerBody = data.LowerBody.GetSkinnedMesh(Bones, LowerBody); LowerCloth = data.LowerCloth.GetSkinnedMesh(Bones, LowerCloth); Shoes = data.Shoes.GetSkinnedMesh(Bones, Shoes); StartCoroutine(BoneChange(changeTime)); AvatarDebug.Log("SetAvatarData done!"); }
private void JsonManager(bool isDone, string json, Texture2D tex) { if (LoadResultEvent != null) { LoadResultEvent(isDone); } if (!isDone) { return; } IJsonFaceData jsonData = new JsonFaceData(AvatarTools.ReadFaceJson(json)); Gender = jsonData.Gender; Age = jsonData.Age; FaceData = new FaceData(transform, Face); Dictionary <string, BoneInfo> dataBone = new JsonFaceDataBone(jsonData); IFaceImageData imageData = new JsonFaceDataImage(jsonData, tex); FaceData = new FaceData(transform, Face, dataBone, true, null); AvatarTools.FaceTexMapper(imageData, FaceData); SetFaceImage(FaceData.DataImage); AvatarDebug.Log("LoadFaceTex done!"); StartCoroutine(BoneChange(changeTime)); }