Search Unity

UMA - Unity Multipurpose Avatar on the Asset Store!

Discussion in 'Assets and Asset Store' started by FernandoRibeiro, Dec 24, 2013.

  1. ecurtz

    ecurtz

    Joined:
    May 13, 2009
    Posts:
    640
    As far as I can tell, those guys are only providing you with the marker data. This definitely isn't a great format for working with UMA, but if you needed to do it you'd want to associate the markers with the various facial bones and use the data to drive those (probably with some recalculated scaling to match your source face to the UMA). I'd strongly recommend using some higher level data like that provided by FaceShift or FacePlus.
     
  2. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    Hey there everyone!
    I´ve been travelling at work for the last weeks, I´ll get back replying forum questions here together with UnLogic, ecurtz and the other guys.
    Sorry for being away for so long.
     
  3. endie

    endie

    Joined:
    Jan 16, 2013
    Posts:
    30
    Ah thanks very much! I was looking at the beta site I guess and trying to get the download from there.
     
  4. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    I´ve removed mostly everything from the beta website and I included a message at front page redirecting to the Wiki, as an effort to concentrate all UMA information there and here at the forum.
    Cheers
     
  5. endie

    endie

    Joined:
    Jan 16, 2013
    Posts:
    30
    Yeah I think my confusion was with the description on the Asset Store item. It says content creators should go to the Beta Site to download the necessary materials. I realize now it's pretty clear everywhere else though that the wiki is the most relevant source
     
  6. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    Good point! I´ll keep an eye on this when we push the next update. =)
     
  7. UnLogick

    UnLogick

    Joined:
    Jun 11, 2011
    Posts:
    1,745
    For those who are interested, we are currently working on updating uma to support the new features of Unity 4.6.

    This means that you can now add events to your UMADynamicAvatar and even UMACrowd to notify you on CharacterCreated, CharacterUpdated and CharacterDestroyed. This functionality existed before but only in code, now you can add the events inside Unity's inspectors!

    In the branch we have also removed the uma.dll as described in multiple earlier posts in this thread. Thanks to all of those who put an effort into making this easy and painless for me.

    We've also added support for Slots without atlassed overlays. So now your uma characters can use high res compressed textures and have lower memory footprint, you can still tint the materials to the extent your shader allow, however now the tinting is shared with the rest of the slots using the same material. This also opens up for Slots that use Substances and other dynamic materials. I intend to make a new replacement eyelash Slots that will showcase this technique.

    The new branch requires Unity 4.6b19! Which opens up for the use of uGUI, I hope to see someone pick up the ball and kick this one home.

    This is the first time uma changes requirements, all previous updates worked with 4.3.1 which was the newest version at the time we released uma 1.0. For this reason I've nicknamed the branch uma20 in github, but it is fully backward compatible!

    Happy Hacking.
     
    hopeful likes this.
  8. UnLogick

    UnLogick

    Joined:
    Jun 11, 2011
    Posts:
    1,745
    Announcing UMA 1.2.2, a hotfix.

    It came to my attention that there was a serious bug in UMA 1.2.1. The methods to cleanly hide a UMA characters was broken to the point that there was no safe way to hack around it.

    Also the UMAData and Recipe editors was broken so you couldn't edit DNA values in the editor.

    Release notes:
    Fixed UMAData and Recipe editors
    Fixed UMADynamicAvatar.Hide()
    Added an Asset Collection with all the base assets.

    Go grab it from the asset store now!
    Cheers
     
  9. Deleted User

    Deleted User

    Guest

    Hi.

    I have a customer who is using Unity "pro", but a UMA asset was created with Unity free.

    They had a problem with the normal maps being rendered. We've solved the problem by either unchecking "use pro" or changing the diffuse to RGB 24 bit.

    How does this work with "pro"? Will we encounter the same problems if slots and overlays are made with "pro" and the customer is using "free"?

    Is there any other way to solve this problem?
     
    cyby89 and hopeful like this.
  10. Deleted User

    Deleted User

    Guest

    He basically receives something like that. RGB 24 bit isn't really compressed. Would you recommend any of the other compression types?

    ScreenHunter_62 Sep. 26 16.37.jpg
     
  11. CrowdCruncher

    CrowdCruncher

    Joined:
    Jul 11, 2014
    Posts:
    65
    Hi there ,
    I wanna understand the OverlayList-Source-Management.
    For example, if I use my own FemaleHair-Mesh. the oppaque parts of the hairs are overwritten by the skinColor. So I get stange hairs. What does the number in of the OverlayListSource mean in the RandomSets?

    Additionally, how is it able to use the same random-generated color with maybe more or less saturation for 2 different Overlays. Do I have to sode that?
    In other words, where do i have to insert code, to add some new ColorTypes in the RandomSetEditor?
     
  12. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    Hi there!
    As far I remember there´s no difference on MaterialBuilder for generating the overlays both using PRO and indie Licenses.
    Are you following my video tutorials on the steps of converting the raw textures to the final overlays?
    Cheers
     
  13. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    OverlayListSource is required when you have slots sharing the same overlay, you can see it being used on feet and hands by accessing Torso overlay index.
    If you need more control over the slots and overlays creating process, I would recommend looking into UMACrowd code, in case no RandomSet is provided, it falls back generating avatars based on it´s code.
     
  14. CrowdCruncher

    CrowdCruncher

    Joined:
    Jul 11, 2014
    Posts:
    65
    Ah ok, thats interisting. Where is the index set? And which meaning have got the Index 0 ?
    I want to include new Coloroptions in the RandomSet-Editor. I think that isn´t implemented in the UMACrowd-Code is it?
    Made some modifications like hairColor and so on. But i cant see that in the editor.

    Additionally, what would performanter. To make an Overlay for each part of an outfit or to split the texture into a few, to make seperate Overlays?

    Thx for the quick answer.

    Another question.
    I made a lot of slots now. But I used free 3D-models. Surely I would be instered in offering them in the Assetstore. But I think that would be problematic. Would it be able to offer them for free without "license-problems"?
     
    Last edited: Sep 29, 2014
  15. UnLogick

    UnLogick

    Joined:
    Jun 11, 2011
    Posts:
    1,745
    Not really, the asset store license means that people are able to use the content commercially without giving credit. The free stuff you find on the internet usually requires you to give credit back to the original creator, so the licenses are rarely compatible.
     
  16. CrowdCruncher

    CrowdCruncher

    Joined:
    Jul 11, 2014
    Posts:
    65
    Ah ok thats nice.

    Back to the OverlayListSource.

    Where is the Index set? In the Overlaylibrary? That´s not possible in my eyes, because my OverlayList is now much bigger than before and for example, the feet still uses OverListSourceIndex 7.
     
    Last edited: Sep 30, 2014
  17. CrowdCruncher

    CrowdCruncher

    Joined:
    Jul 11, 2014
    Posts:
    65
    Is it able to get the obj.-Data of the Contents? Esscecially for the FemaleTshirt01...
     
  18. UnLogick

    UnLogick

    Joined:
    Jun 11, 2011
    Posts:
    1,745
    Each entry in the CrowdRandomSet corresponds to one SlotData entry in the UMAData. It can be null or it can be a SlotData. The Index matches this position. The old editor let you see the index directly in the inspector, but these days you'll have to count.

    Dunno if the female shirt is in here, but all published content should be referenced from here.
    http://uma.unity3d.com/wiki/index.php/Content_Creation
     
  19. CrowdCruncher

    CrowdCruncher

    Joined:
    Jul 11, 2014
    Posts:
    65
    Why does my Hair-Overlay iverride the Eye-Overlay? Eye_Overlay-Problem.jpg


    As overlay-Index I set 0 and I used the HairColor-Multiply....

    And if I use the O
    verlayListSource 1 (which is the Eye) I get somtiong like that:

    Eye_Overlay-Problem2.jpg
     
  20. UnLogick

    UnLogick

    Joined:
    Jun 11, 2011
    Posts:
    1,745
    Overlay index means that you're using merged materials, if that's not intended just set it to -1 to disable this!
     
  21. CrowdCruncher

    CrowdCruncher

    Joined:
    Jul 11, 2014
    Posts:
    65
    Ah ok I thought 0 would be the disabling Index.
    Is there a tutorial to understand how these Overlayindices has to be used?
     
  22. UnLogick

    UnLogick

    Joined:
    Jun 11, 2011
    Posts:
    1,745
    I guess it makes more sense if you've actually tried setting up a UMA character in code. The current editor should be revisited but it seems nobody really wants to do it. ;)

    But as I said earlier the first list of possible SlotData is index 0, the next list of possible SlotData is index 1, etc. OverlayIndexes are the stuff that lets you add overlays to existing materials. So you can add a shirt overlay to the existing body material.

    Feel free to write a human readable wiki page on how to properly use the crowd randomsets.
     
  23. vlames

    vlames

    Joined:
    Apr 12, 2013
    Posts:
    10
    I made a Shader in shaderforge but it doesnt seem to be working, is this a known problem? (I've named the properties the right way)
     
  24. CrowdCruncher

    CrowdCruncher

    Joined:
    Jul 11, 2014
    Posts:
    65
    Is it able to use an Overlay as an requirement for slots?

    And how can I use the Alphachannel of my Texture to solve this problem:

    Haare - AlphaChannel.jpg

    Do the normalmap maybe got to have the same alphachannelData as diffuse?
     
    Last edited: Oct 3, 2014
  25. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    Can you post an image of the result you get? All texture get correctly set to the material?
    If you´re having problems with the normal map, the problem is probably because we don´t use the unpackNormals() in our shaders.
     
  26. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    Requirement at randomSets are only for Slots.
    As Joen and I both mentioned, if you need more control over the slots and overlays creating process, I would recommend looking into UMACrowd code, in case no RandomSet is provided, it falls back generating avatars based on it´s code.
     
  27. vlames

    vlames

    Joined:
    Apr 12, 2013
    Posts:
    10
    Don't worry, I fixed it: it was using the normal maps as lambert map so everything got dark but its okay now
     
  28. CrowdCruncher

    CrowdCruncher

    Joined:
    Jul 11, 2014
    Posts:
    65
    Thanks.

    And whats with the aplhachannelproblem?
    Do I have to set some options in blender for the .fbx-export or in Unity?
     
  29. UnLogick

    UnLogick

    Joined:
    Jun 11, 2011
    Posts:
    1,745
    There is several reasons you can have alpha problems. First you may not have transparency in your alpha channel, many 3d tools specify a separate transparency texture. Secondly the unity texture can be incorrectly setup, you need the setting transparency from alpha or you could specify an rgb texture format (as opposed to rgba texture). Finally it could be that you use a non transparent shader to render the material.

    UMA will always use the alpha channel of the first texture as transparency and it will use this transparency value for the secondary textures (normal map, specular map, etc.)
     
  30. CrowdCruncher

    CrowdCruncher

    Joined:
    Jul 11, 2014
    Posts:
    65
    Okay, could only be the last one. But I used the UMABasicMaterial. Doesnt that support tranperancy?
    Should I set up a new material ?
     
  31. UnLogick

    UnLogick

    Joined:
    Jun 11, 2011
    Posts:
    1,745
    Then it's the last one. :)

    Set up a new material that uses a shader with transparency. Be sure to set the material sample of the hair slot to the new material and make sure the Slot's texturenamelist is set to the right input values for the shader.
     
  32. CrowdCruncher

    CrowdCruncher

    Joined:
    Jul 11, 2014
    Posts:
    65
    Thx for all the good answers. If my slots are fully developed, I´ll offer them in the assetStore for free.
    Here a screenshot of how it´ll look like:

    Phase 1 - abgeschlossen.jpg

    There are still some bugs in the meshes and maybe the weights got to be optimize, but it´ll look like this.
    If someone is a pro in weight-painting, I would work together with him.


    My next step is to attach an artificial intelligence with an C#-script.
    I deleted the LocomotionScript and forgot where it was bind to the avatar.
    So where do I have to bind my new AgentAI-Script, so that every avatar got this script?
     
    Last edited: Oct 5, 2014
    vlames and hopeful like this.
  33. Bigpete591

    Bigpete591

    Joined:
    May 7, 2013
    Posts:
    60
    Here is a more reliable fix for Unity losing Render Textures when alt-tabbing:

    Add this function to the UMAData.cs script
    Code (CSharp):
    1.         // Check if the hardware has lost our render texture. Mark the textures as dirty if
    2.         // the first checked render texture is lost.
    3.         private void Update()
    4.         {
    5.             if(atlasList.atlas.Count == 0)
    6.                 return;
    7.  
    8.             var atlas = atlasList.atlas[0];
    9.             if(atlas == null || atlas.resultingAtlasList == null)
    10.                 return;
    11.  
    12.             if(atlas.resultingAtlasList.Length == 0)
    13.                 return;
    14.  
    15.             var texture = atlas.resultingAtlasList[0] as RenderTexture;
    16.             if(texture == null)
    17.                 return;
    18.  
    19.             if (!isTextureDirty && !texture.IsCreated())
    20.             {
    21.                 Dirty(false, true, false);
    22.             }
    23.         }
    It will check every frame if the first render texture associated with a UMAData is valid, and if not mark the textures as dirty.
     
    Last edited: Oct 7, 2014
  34. UnLogick

    UnLogick

    Joined:
    Jun 11, 2011
    Posts:
    1,745
    Great stuff, please add this to the wiki.

    We will not add this to uma itself because you're introducing a lot of checks per frame per character but it's good to have fixes like this handy if you need them.
     
  35. MarcoMeter

    MarcoMeter

    Joined:
    Jun 14, 2013
    Posts:
    69
    Hello guys,

    I made an animation for the lips of the uma male model. But I can't retarget this animation to the generated uma models.

    I uploaded the maya and the exported fbx file to this location:
    http://www.devbeyond.de/files/example_lip.zip

    I imported the rig as humanoid and in terms of the avatar's definition I chose the Male_SeperatedAvatar.


    Could someone provide me a hint for this problem?

    edit 2: I can amke an animation on all other bones which are able to be retargeted except for the facial bones.
     
    Last edited: Oct 8, 2014
  36. CrowdCruncher

    CrowdCruncher

    Joined:
    Jul 11, 2014
    Posts:
    65
    I´m now going to animate my crowd. My first problem was that the gravity was inverted so my avatars started to fly. So I baked the Y-transform into pose. Now I have the problem of skating. How can I fix that problem? IK didn´t help too. Normally the Foot-IK got to solve that problem, but it does not.
    Additionlly, how am I able to overwrite some bone-animations, like eye-blinking, without having access to the Rig-structure in the animation-graph?
     
  37. ecurtz

    ecurtz

    Joined:
    May 13, 2009
    Posts:
    640
    Mecanim won't retarget anything on bones which aren't part of the avatar, e.g. it will retarget the jaw animation, but it won't do the lips.
     
  38. MarcoMeter

    MarcoMeter

    Joined:
    Jun 14, 2013
    Posts:
    69
    No matter if I used the Male_unfified.fbx file?

    I thought using the same rig and same base model would work. I basically imported the Male_unified.fbx inside of Maya and applied the animation and then exported the fbx to Unity.
     
    Last edited: Oct 8, 2014
  39. ecurtz

    ecurtz

    Joined:
    May 13, 2009
    Posts:
    640
    It should be able to play it back as a Generic animation on the original rig. Do the curves look correct in the Animation Window?
     
  40. MarcoMeter

    MarcoMeter

    Joined:
    Jun 14, 2013
    Posts:
    69
    It doesn't work with Generic as well. It is strange that there are no curves, just a plain green line concenring the import settings. But the animation is played on the exported fbx file.
     
  41. UnLogick

    UnLogick

    Joined:
    Jun 11, 2011
    Posts:
    1,745
    If you remember to set use additional bones on the fbx importers then the lips should be animated.
     
  42. CrowdCruncher

    CrowdCruncher

    Joined:
    Jul 11, 2014
    Posts:
    65
    Hi there,

    I need a List of all created Avatars.
    Does there exist a List or Array of them in the CrowdScript or do I have to generate my own?
     
    Last edited: Oct 9, 2014
  43. UnLogick

    UnLogick

    Joined:
    Jun 11, 2011
    Posts:
    1,745
    No such list exists, UMA strives to be as lightweight as possible. It is quite easy to modify the scripts to maintain such a list or add event handlers to maintain such a list.
     
  44. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,685
    How is this project coming along? Any progress?
     
  45. adventurefan

    adventurefan

    Joined:
    Jan 17, 2014
    Posts:
    230
    Hey guys, is UMA capable of loading some face morph targets in? Basically I want faces to emote, like a sort of an old console RPG or Costume Quest style. However in unity it seems like the only way to get morph targets (or blendshapes as they get called) on something is to have them already in fbx files...

    Hope there's a way to figure it out.

    Thanks.
     
  46. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    UMA default facial animation solution is based on bone animations, We don't support blend shapes.
     
  47. adventurefan

    adventurefan

    Joined:
    Jan 17, 2014
    Posts:
    230
    Well, messing around with that type of solution today I got about half way there. I can run a bone facial animation on the mecanim model if it's just all the new dummy model I made... but for some reason there's a scaling bug using it on other UMA models where they get giant or too tiny as soon as the anim plays. I'll have to figure out what the hell that is, hopefully just sizing in 3d app.
     
  48. Breyer

    Breyer

    Joined:
    Nov 10, 2012
    Posts:
    412
    btw ecurtz work on blend shape solution though but idk how current state is....
     
  49. adventurefan

    adventurefan

    Joined:
    Jan 17, 2014
    Posts:
    230
    If something better comes along later I'll snatch it up for sure!

    but I got the face bone technique animation running fine just now. Fixed my sizing issues. Here you can see a frightened fellow among the other UMAs and his face animation is blended with a body animation (using separate animation layer for the head)



    so it works pretty decent :D
     
  50. MarcoMeter

    MarcoMeter

    Joined:
    Jun 14, 2013
    Posts:
    69
    Hi again,

    every bone is selected on the mask inside the import settings for the animations (keep extra bones is not available the current verion of unity anymore ref).

    Basically I attach to the UMA prefabs the avatar of the imported fbx with the lip animation on it.


    edit: One thing is weird. If a UMA guy is generated the Avatar of the Animator component is empty inside the inspector. I did apply to all fbx files the avatar mask of one which has been created with the fbx file with the lip animation on it. It doesn't matter if I set the reference during runtime.
     
    Last edited: Oct 15, 2014