Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
2
Question by JD3DGiant · Mar 14, 2012 at 01:08 AM · importanimationclipduplicateassetpostprocessormodelimporter

Automatically duplicate animation from imported file

Been trying to figure this out for a few days now and have hit a roadblock in my script. I am trying to import in multiple Maya baked animations files, each file has a single animation on it, and trying to put them on one character all automatically. I am using the AssetPostprocessor class and OnPreprocessModel() function and get about 90% of the way there but the last part I want it to automatically do is duplicate the animation clip from the import and put it in the animation folder.

 public void OnPreprocessModel()
     {
 
         ModelImporter modelImporter = (ModelImporter) assetImporter;                    
         
         modelImporter.globalScale = 1;   
         modelImporter.animationWrapMode = UnityEngine.WrapMode.Loop;  
         modelImporter.animationPositionError = 0.05f;
         modelImporter.animationRotationError = 0.05f;
         modelImporter.animationScaleError = 0.05f;



 \\ This part I cannot figure out
         ModelImporterClipAnimation[] anim = new ModelImporterClipAnimation[0];
         
 
         modelImporter.clipAnimations = anim;
         
         AnimationClip bob = (AnimationClip) modelImporter.clipAnimations;
         
         Debug.Log(anim);
     }


I have tried to find the name of the imported animation, but have constantly gotten errors.

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

2 Replies

· Add your reply
  • Sort: 
avatar image
3

Answer by ricardo_arango · Mar 21, 2012 at 01:20 AM

You can try this script:

 using UnityEngine;
 using UnityEditor;
 using System.IO;
 
 public class DuplicateAnimations : AssetPostprocessor {
     void OnPostprocessModel (GameObject g) {
         Animation anim = g.GetComponent <Animation> ();
         AnimationClip[] clips = AnimationUtility.GetAnimationClips (anim);
         foreach( AnimationClip clip in clips ){
             DuplicateAnimationClip(clip);
         }
     }
     void DuplicateAnimationClip (AnimationClip sourceClip){
         if (sourceClip != null)
         {
             string path = AssetDatabase.GetAssetPath(sourceClip);
             path = Path.Combine(Path.GetDirectoryName(path), sourceClip.name) + ".anim";
             string newPath = AssetDatabase.GenerateUniqueAssetPath (path);
             AnimationClip newClip = new AnimationClip();
             EditorUtility.CopySerialized(sourceClip, newClip);
             AssetDatabase.CreateAsset(newClip, newPath);
         }
     }
 }
Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image
0

Answer by eangulee · Aug 12, 2014 at 11:56 AM

string path = AssetDatabase.GetAssetPath(sourceClip); but when Debug.Log(path), I found path is empty,you should think of other ways

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

6 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

How do you add AnimClips at import time correctly? 1 Answer

Rename a clip using AssetPostProcessor 1 Answer

is it possible to have a global/static variable in the AssetPostprocessor script 1 Answer

Create/Edit an AnimatorController using a script 0 Answers

missing mesh after creating prefab inside AssetPostprocessor . OnPostprocessModel () 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges