Search Unity

[RELEASED] Sage: Anim Graph Editor -- Control your Animations Visually!

Discussion in 'Assets and Asset Store' started by AlteredReality, Jan 19, 2012.

  1. ZJP

    ZJP

    Joined:
    Jan 22, 2010
    Posts:
    2,649
    Don't know for a trial, but a free version? Yes you can.
    Just change 'trial' to 'free' and rename 'Sage' to 'Sage Basic' :D
     
    Last edited: Apr 7, 2013
  2. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    I've been think about that, and I think I will rename it to Sage Free instead of Sage Trial. Thanks for the suggestion!
     
  3. Nick_Field

    Nick_Field

    Joined:
    Jan 24, 2011
    Posts:
    24
    Hi, Thanks for really good product!
    But I have one problem. In my project I have one character with some different weapons. And in reason of reducing memory usage I want to dynamicly assemble my character from basic prefab (only mesh with some scripts) and add to it some weapons from the full list. And the problem is that I can't attach SageLibrary.asset that loaded from resources folder to the *_GameController.cs script. How can I dynamicly load SageLibrary and attach it to character in runtime? Is it possible?
     
  4. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    I'm glad you are enjoying it!

    Unfortunately (as far as i know), Unity doesn't give you the option to initialize public members on a component when creating a new one. So when you call gameObject.AddComponent<MyGameController>(), it will throw some errors when calling Awake(). However, at this point you should still be able to set "libraryAsset", "animationTarget", and "movementTarget" target on the controller. After you set what you need, you then need to call RecreateLibrary() on the controller, which will cause the controller to be reinitialized.

    Let me know if that helps. I will also investigate a better way to handle this that won't throw errors before you have a chance to initialize it.
     
  5. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    Sage Free has just been released into the asset store for anyone wanting to try out Sage! http://u3d.as/4sB
     
  6. crafTDev

    crafTDev

    Joined:
    Nov 5, 2008
    Posts:
    1,820
    I've been looking into this...would sage allow me to create a combo system that links my animations?
     
  7. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    You could definitely use Sage to handle the animations, transitions, and some of the logic for a combo system. However, having written a few combo systems on a couple games already, I'd recommend an external system working in tandem with Sage to handle the logic of when/if a combo can be triggered.
     
  8. Nick_Field

    Nick_Field

    Joined:
    Jan 24, 2011
    Posts:
    24
    Thanks for the answer! It would be nice if it were possible to initialize SageController before it starts work :)
     
  9. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
  10. SteveB

    SteveB

    Joined:
    Jan 17, 2009
    Posts:
    1,451
    I've had my eye on this for some time, and after extensively experiencing the good and the bad of Mecanim, I was wondering if anyone had insight as to how Sage compares?

    Specifically (and for starters), does Sage support something comparable to Root Motion and/or have Target Matching as Mecanim does?

    Otherwise the feature set looks great here so I'm very intrigued!

    Thanks!
     
  11. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    First off, Sage does not have a Root Motion feature, nor a Target Matching feature.

    As a point of reference, I actually worked on and released Sage before Mecanim was even announced. So Sage was created without reference to Mecanim, and I have not extensively used Mecanim. So I would personally have a hard time comparing the two at this point.

    Sage was created as a tool to support all of the animation features in Unity 3.x, but to allow you to do so in a visual manner. I tried to enable the user to do everything that they can do with the Unity 3.x animation system in our tool. (As well as add plenty of other niceties)

    I never decided to add Root Motion because I determined that it would likely be possible for games to use another root motion solution alongside Sage. As mentioned, I instead decided to focus wrapping up the Unity Animation system into a nice visual tool.

    Beyond the visual state machines and blend graphs, Sage also has the ability to export automatic scripts that make interacting with a Sage Library (the asset that sage creates to define your animation graphs) alot easier. For example, it makes it super easy to change animation variables and start/stop states.

    Another big difference between Sage and Mecanim, is you can actually use Sage in Unity 3.5.x and 4.x. We also have a source code license available for Sage on our website at www.alteredr.com/sage. With the source code, you can add new node types, or change the tool in any other way you wish.

    Hopefully this will give you some overview and insight into the product. Let me know if you have any other specific questions.
     
  12. SteveB

    SteveB

    Joined:
    Jan 17, 2009
    Posts:
    1,451
    Awesome thanks for taking the time to answer (and quickly!).

    Regardless of Root Motion or Target Matching this was already a purchase for me after I typed my initial post, haha.

    So yea, Purchased!

    Thanks man
     
  13. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    Awesome, thanks for the purchase! Let me know if you have any questions while using it. You can feel free to post here, or at forums.alteredr.com. Enjoy!
     
  14. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    Thanks to all of those who participated in the 24 hour sale and bought Sage (and the other great products that were on sale)!

    To continue the savings a while longer, I've decided to keep Sage Basic \w Dlls and Sage Pro \w Source Code on sale through our website! So, if you are interested in grabbing Sage: Anim Graph Editor for cheap, but missed the sale yesterday, grab it while it's still on sale!!!!!

    http://www.alteredr.com/sage/
     
  15. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    Today is the last day that Sage is going to be on sale on our website!
     
  16. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    And the sale is now over! Thanks to those who participated!
     
  17. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    Hey, I just wanted to give you a heads up that I've added a way to add sage controllers to a game object at runtime, and to initialize it's startup data at the same time. I should hopefully be posting an update to Sage in the next few days.
     
  18. Steviebops

    Steviebops

    Joined:
    Apr 9, 2013
    Posts:
    132


    Do you still have that graph? I'm having a problem with my WASD setup too, and I'm already using a direction node.
     
  19. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    Have you checked your input mapping to see if those keys are mapped properly?
     
  20. Steviebops

    Steviebops

    Joined:
    Apr 9, 2013
    Posts:
    132
    Yup, the input is fine. I think I have it sorted now, I believe the issue was with a blend node I didn't need.
     
  21. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    Oh, ok, thanks for the update! Let me know if you have any other questions or issues!
     
  22. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    A new version of Sage has been released!

    Version 1.6.6 -- 5/26/2013

    - Significantly reduced Sage memory usage.
    - Reduced start up time of Sage Libraries.
    - Added an option to hide links in the Sage editor.
    - Added an option to hide warnings in Sage editor.
     
  23. Nick_Field

    Nick_Field

    Joined:
    Jan 24, 2011
    Posts:
    24
    Nice to hear it :) I've been struggle with this problem again. I'll see your solution and try to solve my problem.
     
  24. Nick_Field

    Nick_Field

    Joined:
    Jan 24, 2011
    Posts:
    24
    Another question.Is that possible to synchronize two sage libraries on two meshes. Imagine the situation: I have character animated via sage library. And I have a lot of clothes for this character. If I attach to each item the same sage library that my character used I'll have a problem. Because I use Anim node with Random option. Because character and clothes animation will be not synchronized betwen each other. Maybe you can help me to solve this problem?
     
  25. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    I think this would technically be possible, however you'd have to have the Sage source code. You'd have to update the code that calculates the synced speed of animations to also reference another graph in another library. It's not something I would add to Sage at this time, but I'd be happy to help you along the right path if you had the code version.

    Do you happen to have Sage Pro \w Source Code? If so, and you'd like me to point you in the right direction, you can email me at AlteredRealityEnt@yahoo.com for additional info on how to get started.
     
  26. Nick_Field

    Nick_Field

    Joined:
    Jan 24, 2011
    Posts:
    24
    Thank you for your help! I'll investigate some other approaches and make you know if I'll need you help with source code.
     
  27. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    Awesome, good luck! :)
     
  28. Nick_Field

    Nick_Field

    Joined:
    Jan 24, 2011
    Posts:
    24
    Hi! I want to know is this feature realised in 1.6.6?
     
  29. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    Yeah, it was released in version 1.6.5. I added the static function following static function: SageController.AddSageController<T>(...)
     
  30. Nick_Field

    Nick_Field

    Joined:
    Jan 24, 2011
    Posts:
    24
    Nice, thank you!
     
  31. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    An update for Sage has been released...

    Version 1.6.7 -- 6/19/2013

    - Fixed an issue with deleting variables.
    - Fixed an issue with deleting nodes when closing, and then later opening the editor in the same session.
     
  32. stawberry

    stawberry

    Joined:
    Nov 12, 2012
    Posts:
    13
    How do I remove a link?
     
    Last edited: Jul 10, 2013
  33. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    Right click on the port.
     
  34. cristiana

    cristiana

    Joined:
    Jul 18, 2013
    Posts:
    4
    Hi,
    I usually use Mecanim state machine for my projects, now I'd like to try with Sage and I have some questions about it.

    I create my prefab with animation clips added, drag&drop prefab into the SageLibrary (Template Animation) and the Anim List Node has all my animations.
    Ok.
    But when I add another animation and update my prefab, even if I delete it from the Template Animation and re-add it, the new animation doesn't appear into the Anim List Node.
    I must delete my prefab from Unity project, create another one, recharge all animations and then put it into the Sage Library.
    Is it a normal behaviour or maybe a bug?

    In mecanim I create a transition between states and with my transition I can do a sort of "blend/ fade" to pass from an animation to another. Not adding two animations, but a real passage from one to another, so I decided the pose to switch, time and so on.
    How can I do it in Sage? I have seen the Blend Graph, but it's a blend as "Run+run left", not a transition from clips and I need it.

    With Mecanim I use the same animation clip for different game objects (different meshes/ names/ bones), just put clip into the state node.
    Can I do the same with Sage? Or does it need and asset game object with same meshes/ names/ bones for charging animation?

    Thanks!
     
  35. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    Hey, sorry for the delay in response!

    As for the animations not showing up in the anim list...I'm not sure what is going on. Just to verify something didn't break, I went into my test project and added a new animation to the list of animations on the Animation component for my SoldierPrefab. It showed up right away on in my SageLibrary in the AnimList node. About the only thing I can think of is that the prefab in the SageLibrary is pointing to a different instance of it perhaps? Sorry, but it's hard to tell what's happening there without knowing more. :-/

    For the blending between animations, what you need to look for in Sage is the In and Out field on the states in the State Machine graphs. What you are mentioning in the Blend Graph is simply blending between multiple animations playing at the same time. For the state nodes in the State Machine graphs, the In/Out times indicate the amount of time to blend between the two states when switching states.

    For referencing animations, Sage is just using the animation names. So as long as the prefabs have animations with the same names, you can use the same SageLibrary for multiple prefabs/character.

    Let me know if that info helps, or if you have any other questions at all. Thanks!
     
  36. cristiana

    cristiana

    Joined:
    Jul 18, 2013
    Posts:
    4
    Hi Andy,
    thanks a lot for your response.

    About new animations in the anim list, I don't know what's going on. Now it works better! Maybe something to change in the project.

    Very useful the info about In and Out on states, I was looking for it.

    I have a new question about preview.
    When I press start in Sage Editor, preview always begins from the first state I created, not from the state I selected. Can I choose another state to start from?
    And how can I "grab" cursor to switch and see again just the moment I'm interested into? Now the preview starts and goes on: I can stop, pause, play, change speed but not "rewind" it.
    How can I do it?

    Thanks again!
     
  37. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    The preview should start at the state that is specified in the State Machine properties. Look for the "Initial State" option, and you can select from a drop down what state to start it. Unfortunately Rewind is not a feature for the Sage preview. This is due to the active nature of the Sage anim graph, and it would be very difficult to properly implement a rewind feature as states and blend graphs are constantly changing. Sorry!
     
  38. cristiana

    cristiana

    Joined:
    Jul 18, 2013
    Posts:
    4
    Ok!
    Thank you very much for your response and your help.
     
  39. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    No problem, let me know if you have any other questions. :)
     
  40. Steviebops

    Steviebops

    Joined:
    Apr 9, 2013
    Posts:
    132
    Is it possible to implement gravity with the soldier example? It uses that float Direction, and Im not sure how to switch from 2-axis to three axis movement.

    Ah, I forgot that I could add negative Y movement on the animation clips :)

    Silly me.
     
    Last edited: Sep 16, 2013
  41. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    If you want a simply way to apply gravity, you could put the following in your game controller (example is using the soldier game controller in the example)...

    Code (csharp):
    1.  
    2. public class SoldierSL_GameController : SoldierSL_BaseController
    3. {
    4.     public override bool ApplyMovement(Vector3 movementAmount, Vector3 rotationAmount, GameObject movementTarget)
    5.     {
    6.         CharacterController controller = movementTarget.GetComponent<CharacterController>();
    7.         if (controller != null)
    8.         {
    9.             controller.SimpleMove(movementAmount * (1.0f / Time.deltaTime));
    10.             return true;
    11.         }
    12.         return false;
    13.     }
    14. }
    15.  
    Internally it will try to use the CharacterController.Move() function, which applies absolute movement. Let me know if this helps.
     
  42. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
  43. im

    im

    Joined:
    Jan 17, 2013
    Posts:
    1,408
  44. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
  45. im

    im

    Joined:
    Jan 17, 2013
    Posts:
    1,408
    ok so it helps you do like animation controller?

    if so does it work with both mecanim and legacy or just with one?

    does it generate the controller or is it an alternative

    can it generate c# code for controller like legacy controller

    or can it be used to generate a mecanim animation controller

    please let me know...
     
  46. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    Sage is pretty much a complete visual wrapper over the Animation components. It was written before Mechanim was released. And was originally released for Unity 3.5.x, so it doesn't interact with Mechanim at all.

    It allows you to defines graphs for animation state machines and blend graphs. These graphs control your animations. It can also generate c# controller scripts that provide a bunch of helper functions to make it easier to interact with the Sage graphs and Sage system.

    Hopefully that should cover your questions, let me know if you have any more!
     
  47. im

    im

    Joined:
    Jan 17, 2013
    Posts:
    1,408
    ok thanks!

    but just to make sure its strictly for legacy animations

    and it looks like it does the coding for you and give you sort of mechanim style animation controller editor way for legacy animations

    the kind of support unity does not come with

    am i correct?
     
  48. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    Yes, it was written for the legacy Animation system. At the time, Unity didn't have an animation graph system like they do now for Mechanim. The bulk of what Sage does it actually under the hood in the graph systems that control the legacy animation components. The controllers it generates are essentially an interface customized based on your graph to make it easier to interact with the core Sage systems.
     
  49. im

    im

    Joined:
    Jan 17, 2013
    Posts:
    1,408
    cool thanks i'll be picking up a copy.

    ok been watching walkthrough and such

    very nice

    now that im basically sold i have some questions for how i would like to use it

    ok here is my problem

    i have lots of legacy models/animations that i would like to use

    i do not want to create hundreds of these controllers you see

    the issue is that each model basically has its own name for everything

    you would think a head would be called a head or idle would be called idle, but no everyone has to have a different way of naming it

    so i would like to create 1 controller attach it to the model and somehow do mapping from their name to some standard name i pick like head for head and idle for idle and have the animation controller use my standard names

    is this even possible. i can code so if it could generate code i could easily add another component with like standard name and on other side i would drop the one they used. i know nuts. then i would have to take your generated code and change it to use the reverse the mapping to get from standard to theirs and so when your code called for animation by name it would really be changing from standard name to their name and calling with their name.

    i guess another way is use something like fragmotion/uvwrap to rename the animations, but then it becomes a nightmare when i get releases from the studios i use. i know why not get them to standardize. who knows they do as they please...

    also those products i have has issues which result in more problems when using them than its worth...

    that is why i asked if you generated code. i need to tweak that code to do the mapping trick.
     
    Last edited: Oct 23, 2013
  50. AlteredReality

    AlteredReality

    Joined:
    Aug 15, 2011
    Posts:
    397
    Sorry for the delayed response. From what you are saying, it seems like Sage would have an issue with your setup. The graphs you create store which animations to use based on name. So if they use different names, you'd have to make different graphs. It works fine across multiple characters with one Sage Library (series of state machines and blend graphs). But their animation names need to be the same. The generate code for Sage is based off of your state machines and blend graphs, not your animation names.

    The only way I could think of doing what you need would be to create a generic library, and actually copy and rename the animations directly in the asset file for the Sage library. Kind of a pain, but all I can think of.

    Sorry I can't be of more help for what you need. :-/