修改动画FBX代码工具

来源:互联网 发布:java main 编辑:程序博客网 时间:2024/04/29 05:06

参考:http://www.xiaobao1993.com/1046.html

之前用的代码的是,发现没有效果:

            #region 无效的修改            //ModelImporter model = AssetImporter.GetAtPath(path) as ModelImporter;            //if (model != null)            //{            //    ModelImporterClipAnimation[] clips = model.clipAnimations;            //    if (clips != null)            //    {            //        for (int j = 0; j < clips.Length; j++)            //        {            //            clips[j].mirror = true;            //            clips[j].lockRootRotation = true;            //            clips[j].keepOriginalOrientation = true;            //            clips[j].keepOriginalPositionY = true;            //            clips[j].lockRootHeightY = true;            //            clips[j].lockRootPositionXZ = true;            //            clips[j].keepOriginalPositionXZ = true;            //            clips[j].loopTime = true;            //        }            //    }            //    model.SaveAndReimport();            //    AssetDatabase.ImportAsset(path);            //    AssetDatabase.Refresh();            //}            #endregion 
后来参考网上的通过修改Meta文件修改格式:
    [MenuItem("Assets/设置动画格式不带位移")]    public static void SetFBXAnimationMode()    {        Object[] objs = Selection.objects;        for (int i = 0; i < objs.Length; i++)        {            string path = GetObjMetaName(objs[i]);            DoChangeFbxSetting(path);        }    }    static string GetObjMetaName(Object obj)    {        string relatepath = AssetDatabase.GetAssetPath(obj);        string dirpath = Application.dataPath.Replace("Assets", "") + relatepath + ".meta"; ;        return dirpath;    }    /// <summary>    /// 修改FBX的meta来修改它的格式    /// </summary>    /// <param name="path"></param>    static void DoChangeFbxSetting(string path)    {        path = path.Replace("\\", "/");        StreamReader fs = new StreamReader(path);        List<string> ret = new List<string>();        string line;        while ((line = fs.ReadLine()) != null)        {            line = line.Replace("\n", "");            if (line.IndexOf("importMaterials:") != -1)            {                line = "    importMaterials: 1";            }            if (line.IndexOf("keepOriginalOrientation") != -1)            {                line = "      keepOriginalOrientation: 1";            }            if (line.IndexOf("keepOriginalPositionY") != -1)            {                line = "      keepOriginalPositionY: 1";            }            if (line.IndexOf("keepOriginalPositionXZ") != -1)            {                line = "      keepOriginalPositionXZ: 1";            }            if (line.IndexOf("loopBlendOrientation") != -1)            {                line = "      loopBlendOrientation: 1";            }            if (line.IndexOf("loopBlendPositionY") != -1)            {                line = "      loopBlendPositionY: 1";            }            if (line.IndexOf("loopBlendPositionXZ") != -1)            {                line = "      loopBlendPositionXZ: 1";            }            if (line.IndexOf("rootMotionBoneName:") != -1)            {                line = "    rootMotionBoneName: Bip001";            }            string lowerpath = path.ToLower();            if (lowerpath.Contains("@ready.fbx") || lowerpath.Contains("@run.fbx"))            {                if (line.IndexOf("loopTime:") != -1)                {                    line = "      loopTime: 1";                }            }            ret.Add(line);        }        fs.Close();        File.Delete(path);        StreamWriter writer = new StreamWriter(path + ".tmp");        foreach (var each in ret)        {            writer.WriteLine(each);        }        writer.Close();        File.Copy(path + ".tmp", path);        File.Delete(path + ".tmp");    }
    

1 0