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();
  • 相关阅读:
    Python中的垃圾回收机制
    一个很好的复习网站
    数据结构与算法 python语言描述
    数据结构与算法学习链接
    [转] 什么是WSGI
    【转】HTTP协议详解
    【转】Android HTTP协议
    Android获取本机IP地址
    Andrid 多线程下载
    Android 应用程序启动过程源代码分析
  • 原文地址:https://www.cnblogs.com/hont/p/4898650.html
Copyright © 2011-2022 走看看