zoukankan      html  css  js  c++  java
  • Unity编辑器下获取动画的根运动状态并修改

    我最初想直接修改.anim文件

    但通过后来得到的信息,其实根运动状态储存在FBX.meta文件里,转出的.anim文件虽然也有根运动的信息但是算是塌陷过的,无法进行开关操作。

    这是我针对有根运动.anim文件和无根运动的.anim对比图:

    后来根据论坛查到的信息,具体参数在meta下的这条属性中:

    humanDescription:
        human: []
        skeleton: []
        armTwist: .5
        foreArmTwist: .5
        upperLegTwist: .5
        legTwist: .5
        armStretch: .0500000007
        legStretch: .0500000007
        feetSpacing: 0
        rootMotionBoneName: Root

    官方论坛给出的具体操作代码:

    using UnityEngine;
    using UnityEditor;
    using System.Collections;
     
    public class SetRootMotionNode {
     
        [MenuItem("Mecanim/SetRootMotionNode")]
        static void DoSetRootMotionNode()
        {
            Object obj = Selection.activeObject;
            if (obj == null)
                return;
     
            string assetPath = AssetDatabase.GetAssetPath(obj);
            ModelImporter modelImporter = AssetImporter.GetAtPath(assetPath) as ModelImporter;
            if (modelImporter == null)
                return;
     
            SerializedObject modelImporterObj = new SerializedObject(modelImporter);
            SerializedProperty rootNodeProperty = modelImporterObj.FindProperty("m_HumanDescription.m_RootMotionBoneName");
     
            rootNodeProperty.stringValue = "Beta:Hips";
     
            modelImporterObj.ApplyModifiedProperties();
            AssetDatabase.ImportAsset(assetPath);
        }
    }
    View Code

    结果我修改再提取.Anim文件还是旧的。。。,如果要得到最新的.fbx中的文件,需要调用方法重新导入一次.fbx文件

    modelImporter.SaveAndReimport();
  • 相关阅读:
    【26】多任务学习
    【25】迁移学习
    【24】定位数据不匹配
    【23】不匹配数据划分的偏差和方差;判断问题所在的几个重要参数
    【22】在不同的划分上进行训练和测试
    【21】进行误差分析
    17-----vue-cli脚手架安装和webpack-simple模板项目生成
    15-----修饰符
    14-----表单输入绑定
    12-----指令系统介绍
  • 原文地址:https://www.cnblogs.com/hont/p/4898650.html
Copyright © 2011-2022 走看看