Search Unity

UMA - Unity Multipurpose Avatar on the Asset Store!

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

  1. Orbatrix

    Orbatrix

    Joined:
    Mar 16, 2021
    Posts:
    26
    Actually if there's a way to access the overlay's RGB color, it's just a piece of cake. I have to find a way to do this, somehow. :)
     
  2. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,685
    Well, it seems like either you have a simple color on the face, which you can then sample and apply to the body overlay. And then any change in tint you make applies equally to both.

    Or, you have complex coloring in the face, but coloring the body and having it match would be difficult, especially at the neck seam ...? Because if you pick only one color from the face and use that to color the body, it probably won't really match the face. You could probably blend by hand though using GIMP / Photoshop.

    That's what I'm thinking, though of course it probably depends on your particular piece of art.
     
  3. Orbatrix

    Orbatrix

    Joined:
    Mar 16, 2021
    Posts:
    26
    The overlay is not very elaborate but, yes, it has not only one color, but different skin tones, depending on user's skin of course. You're right, this task can be really tough, but for now I want to keep things simple and just try to have that skin and face have consistent colors as much as possible.
     
  4. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,685
    I don't think there's an easy programmatic solution. But if there is, someone like @Jaimi will let us know. I think getting your head and body art matching before adding them to UMA is the right route.
     
    Orbatrix likes this.
  5. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    You will need to sample the texture (using GetPixel) where the head meets the body, average the colors as best as you can, and then either divide the colors, or subtract them, to get a multiplier or an addition depending on which is lighter. You will have a seam no matter what you do. If the Texture maps align, then you can get rid of the seam by fading the face over the top of the old colorized head using a gradient alpha. This is going to be a lot of work.

    You need to use the option in the generator to "Copy rendertexture", so you can get to the data.
     
    Orbatrix and hopeful like this.
  6. Orbatrix

    Orbatrix

    Joined:
    Mar 16, 2021
    Posts:
    26
    Thanks a lot! I'll try to do that.
     
  7. docer328

    docer328

    Joined:
    May 10, 2019
    Posts:
    3
    Hii i was thinking about create a tool to create character like this character creator:


    the idea is make a stan alone tool/app, so not to be implemented into a game, open the software, create your character and export the 3D model, so not exist the problem for animations etc etc...

    BTW i was thinking with UMA is possible making something like in the video? even the art-style? with character creator3, metahuman, daz3D, i think we have different choice for realistic character creator, so i want to create something more stylized, i really like the style of the game in the video (champions online) a little cartoonish, maybe like sims4, do you think is doable make a project like this in UMA? and i can make this as a stand-alone software? (not in a game)

    thank you
     
  8. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Yes, this could be done with UMA. You would need a solution to export the model as FBX or your proprietary format. But the UMA is just a skinned mesh at that point.
     
  9. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    UMA 2.12 Released on the asset store here:

    https://assetstore.unity.com/packages/3d/characters/uma-2-unity-multipurpose-avatar-35611

    Whats new:
    • Ability to select items in the project from the global library items menu.
    • Removed the t-pose layer that was missing the animation mask.
    • updated documentation on events, new slot builder features
    • better logic when cleaning up the rig in the editor (only on race change, and only if "rebuild skeleton" is checked)
    • moved some items out of examples that should have been in the core folders.
    • added option (on by default) to slim down scene saved files that have uma editor-time generated characters in them.
    • fixed materials that were stripped when you rebuild addressable groups.
    • you can now add "override dna" to wardrobe recipes. these will be applied instead of the existing dna.
    • new option on shared colors to force update the shared color from the recipes (on the property block)
    • now, when you edit a wardrobe item, and a character has that in their preload wardrobe in the active scene, the character will be rebuilt when the wardrobe item is changed.
    • the clear button in a wardrobe recipe will now ask "are you sure". select cancel if you are not.
    • you can now target specific races on slots in wardrobe recipes (in the tags dropdown).
    • umarandomizer will now allow you to set null slots, and weight them (so you have a chance of not adding anything)
    • cloth self-collision properties added to umaclothproperties
    • if you edit a recipe, slot, overlay or race, any edit time umas that use those will be regenerated, and any instantiated ones in the cache will be released so the index will pick up the new versions immediately.
    • 10x increase in speed copying rendertextures to texture2d when using modern graphics api (dx11/12, ps4, opengl 4.3, opengl es 3.1, metal, etc.)
    • plugin system to add your own ui pieces into the recipe editor (iumarecipeplugin)
    • option to recalculate tangents in slot builder
    • added save/load/clear buttons to the tags list on the slots in the recipe editor.
    • experimental support for saving and restoring regular mounted items between builds. to use, add the "umaignore" tag to the object
    • new menuitem in global library to apply selected races to selected wardrobe items.
    • when creating a prefab using the prefab maker, uma will now correctly detect detail normal maps, and will also mark all normal maps as normal maps in the import settings.
    • option to add "standalone dna" component to prefab, giving you the option to have dna on the non-uma prefabs. when using this option, uma is required to be in the scene to be able to process the dna.
    • experimental - multiple bone chains in umajigglebone
    • fixed issue in addressables caused by out of order calling of events and actions in new addressable library
    • updated several scenes to be more current
     
    umutozkan, Lurking-Ninja and hopeful like this.
  10. docer328

    docer328

    Joined:
    May 10, 2019
    Posts:
    3
    hi, we have new UMA tutorials? i was watching the old uma tutorials but a lot of things are different, even for place the charter, the menu is very different, is hard follow something without know what menu i need to open :(
     
  11. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    I believe Secret Anorak is working on some newer videos
     
    Lurking-Ninja likes this.
  12. imjusthere

    imjusthere

    Joined:
    Oct 12, 2012
    Posts:
    72
    I had to restore my project to an earlier version and now I get the following error and none of my UMAs show up. Even the example uma scenes don't show them. It looks like everything is working fine (animations etc. I can see the gizmos moving) they just don't have a visible mesh. The one error below is all I get and it isn't helpful.

    d3d11: buffer size can not be zero
    UnityEngine.GUIUtility:processEvent (int,intptr)

    Any recommendations about how to fix this?
     
  13. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Did you rebuild the library after installing the new version?
     
  14. imjusthere

    imjusthere

    Joined:
    Oct 12, 2012
    Posts:
    72
    The UMA library showed everything still in there. I did a Rebuild from Project just to be sure and it didn't help.
     
  15. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    If you upgrade to a version of UMA that had the new bone code, you can't backdate to an earlier version of UMA (pre 2.11), as the way the bones are stored are different. You would need to restore your backup from before you upgraded.

    You may, however, be able to copy the old SlotDataAssets from the earlier package (you can get it on github), and reinstall any purchased assets as long as they were built with the earlier version.
     
    Last edited: Apr 20, 2021
  16. Orbatrix

    Orbatrix

    Joined:
    Mar 16, 2021
    Posts:
    26
    Hello, guys. It's me again. So: is there a way to change "clothes" color programmatically? I'm building an avatar customization system, and I wonder how to do that. I've tried to change the colors with SetColor() (with Chest and Legs as first argument), as Secret Anorak did with Skin and Hair in his tutorial, but it didn't work.
     
  17. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    When you setup the overlay, you need to add a shared color, and then assign the overlay to use the shared color. If you create a "clothes" shared color, and add it to the overlay, when you build the character the color on the overlay will be whatever you set the "clothes" color to.
     
    Orbatrix likes this.
  18. waseku

    waseku

    Joined:
    Jun 28, 2020
    Posts:
    7
    Hi guys, when i have UMA character in ragdoll state and run uma.BuildCharacter() it will jump into last animation position. any chance to remove slot while stay in ragdolled state?
     
  19. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    I actually never thought of that. I will need to look into it, but for now, no.
     
    waseku likes this.
  20. waseku

    waseku

    Joined:
    Jun 28, 2020
    Posts:
    7
    Thanks for answer. I guess I can fake it other way around. Remove slot and then activate ragdoll.
     
    hopeful likes this.
  21. dmenefee

    dmenefee

    Joined:
    Oct 14, 2019
    Posts:
    142
    Hi folks. Has anyone here used Puppet Face with UMA? The developer said he was looking into it, but it's been well over a month and I haven't gotten any further response on the question. It *looks* like a good way to generate lipsync'd behaviors, but I don't know if it would work with UMA blendshapes.

    https://assetstore.unity.com/packages/tools/animation/puppet-face-181312
     
  22. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    I've not used it, but it appears to be blendshape based. So you would need to use it on the source model before making the slots, but afterward, the blendshapes would be available. If you just need expressions though, an expression player is included in UMA.
     
    dmenefee and hopeful like this.
  23. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    That looks a lot like a Normal Map texture is not marked as a Normal Map. As well, you might want to validate all of the settings in UMA_GLIB, to verify that they didn't get lost somehow due to prefab upgrade issues. If the "fit atlas" is not checked, you can get some goofy results as well.
    Also, if you haven't done it, rebuild the global library (from the file menu on the global library menu).

    GeneratorSettings.png
     
  24. Clariesu

    Clariesu

    Joined:
    Apr 2, 2021
    Posts:
    24
    Thank you for your reply. I successfully fixed this problem using the texture exported by fbx, but I don't know the cause of this problem.At the same time, I want to know where I can preview the Uma material so that I can choose the Uma material to build my Slot and overlay.
     
  25. DLeb

    DLeb

    Joined:
    Feb 13, 2019
    Posts:
    10
    May I ask for help. I tried to make a game build with UMA - it worked perfect. After I installed Addressables package and got it to work with UMA I installed Burst compiler also. I made the next game build and UMA avatar was invisible - I cannot figure out what makes UMA avatar invisible in build (is it Burst Compiler or not).
     
  26. DLeb

    DLeb

    Joined:
    Feb 13, 2019
    Posts:
    10
    Forgive me for disturbing, I solved my problem - If anyone has the problem with addressables and invisible avatar in active game build you may try the following:
    in latest UMA version 2.12 there is a file "Addressables - Read Me Now.pdf" - I followed all the instructions step by step and it solved my problem.
    You need to apply all changes in that file: "Packed Assets (Addressable Asset Group)" - you may also make backup of this file.
     
    Last edited: May 2, 2021
    Jaimi, umutozkan and hopeful like this.
  27. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    The UMAMaterial is driven by the material. So if you need specific materials, just make a UMAMaterial for it. We have created some common UMAMaterials for the standard shader - the name contains the various texture properties that are setup for it. In the documentation there is a section on UMAMaterials and what they are for.
     
  28. Lazy_Eight

    Lazy_Eight

    Joined:
    Aug 26, 2019
    Posts:
    16
    Hey all, had a question regarding the capsule collider for UMA. I'm trying to create a third person movement.

    The main issue i'm having: since it's a UMA (I've made character creation/customisation), I have used the Extension slots to include the Capsule Collider recipe, to help with the physics, collisions etc. However naturally this uses a default material i.e. friction. The result of this is that when colliding with a wall whilst platforming or airborne it is possible to have the character stop against wall when jumping, (suspended in mid-air against the wall). This doesn't occur if I change the the capsule collider to Zero Friction during runtime, but naturally that would not be a good solution as I need the character have friction when walking around on the ground.

    Seen a solution: Having a second capsule collider just slightly wider than the regular one, change this second one to Zero Friction but leave the regular one with friction, so that the 'feet' of the charater still has friction but doesn't at the sides. I'm not sure how to do this however as the capsule collider only exists at runtime or if creating a second capsule collider receipe would cause issues down the line. I suppose fiddling with the code is the possibility (I'm not much of a coder as I use Playmaker mostly) but I just wanted to know if there was an easier way.

    I also thought of turning the capsule collider to Zero Friction whilst airborne or use Raycasts to toggle it if you get close to a wall.

    Lastly I thought of using the bone builder to attach something to a bone that will work as a makeshift collider when near a wall.

    As I said I'm not much a coder and quite new to this stuff, just wanted to know if there was an easy way to expose and edit the capsule collider or change things up without making massive changes to the code.

    Thanks for any assistance, people.
     
  29. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    You should be able to just remove the Capsule Collider recipe, and then fill in whatever colliders you want. If "Edit time generation" is enabled, it's easier to place everything. I'm not sure of your particular use case, but I've seen controllers on the store that do something similar, so it must be possible.
     
  30. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,685
    This is one of those situations where you'd develop your own solution or apply a store bought solution. UMA provides only the most basic character controller for the purpose of the demos. The capsule collider, for instance, is needed to keep the UMA from falling through the demo floor. Anything beyond that is outside the scope of the UMA project.

    If you want to play around with different free controllers, here's a quick link to the asset store page for "free character controllers."

    https://assetstore.unity.com/publishers/16017?free=true&q=character controller&orderBy=1
     
    Jaimi likes this.
  31. Freak4Fun

    Freak4Fun

    Joined:
    Mar 11, 2016
    Posts:
    2
    Hi ! I recently started using UMA and I really love the idea, but I can't get it to work so far. I'm using unity version 2020.3.0f1 URP and I'm working on a custom character with a generic rig (althrough my problem seems to appear with the base humans too).
    Basically, I'm following this tutorial :
    about setting up non humanoid characters, and I can see the model in the scene when I make some changes to the dynamic character avatar, then, if I save of go into playmode, the character disapears and I get the following error :

    NullReferenceException: Object reference not set to an instance of an object
    UMA.TextureProcessPRO.ProcessTexture (UMA.UMAData _umaData, UMA.UMAGeneratorBase _umaGenerator) (at Assets/UMA/Core/StandardAssets/UMA/Scripts/TextureProcessPro.cs:58)
    UMA.UMAGeneratorPro.ProcessTexture (UMA.UMAGeneratorBase _umaGenerator, UMA.UMAData _umaData, System.Boolean updateMaterialList, System.Int32 InitialScaleFactor) (at Assets/UMA/Core/StandardAssets/UMA/Scripts/UMAGeneratorPro.cs:372)
    UMA.UMAGeneratorBuiltin.GenerateSingleUMA (UMA.UMAData data, System.Boolean fireEvents) (at Assets/UMA/Core/StandardAssets/UMA/Scripts/UMAGeneratorBuiltin.cs:305)
    UMA.CharacterSystem.Editors.DynamicCharacterAvatarEditor.<OnInspectorGUI>g__GenerateSingleUMA|20_1 (System.Boolean rebuild) (at Assets/UMA/Core/Editor/Extensions/DynamicCharacterSystem/DynamicCharacterAvatarEditor.cs:779)
    UMA.CharacterSystem.Editors.DynamicCharacterAvatarEditor.OnInspectorGUI () (at Assets/UMA/Core/Editor/Extensions/DynamicCharacterSystem/DynamicCharacterAvatarEditor.cs:154)
    UnityEditor.UIElements.InspectorElement+<>c__DisplayClass59_0.<CreateIMGUIInspectorFromEditor>b__0 () (at <1d96ce257f0e45ff836d157d33fd933d>:0)
    UnityEditor.PopupCallbackInfo:SetEnumValueDelegate(Object, String[], Int32)
     
  32. Lazy_Eight

    Lazy_Eight

    Joined:
    Aug 26, 2019
    Posts:
    16
    Thanks for the assistance people, - I should of clarified that the movement and such hasn't been done from the character controller/collider etc, it's been done through Playmaker so I won't really need anything too complicated for the collider.

    In this way I think I've solved it. I foolishly hadn't looked through the code of that UMA collider recipe. I was worried about the capsule being able to resize depending on the UMA's build/height. Looking through the recipe, I didnt realise that it adds a capsule collider and resizes it if you don't already have a capsule collider, but it simply resizes it if you do. Solution, just add my own capsule collider. Feel like a dummy but as I said i'm new to this.

    Thanks again everyone.
     
    Jaimi likes this.
  33. jKessinger

    jKessinger

    Joined:
    Jan 21, 2016
    Posts:
    8
    Hi, I just updated to 2.12 and I'm having an issue with prefabs breaking after going in to play mode. I can save off a prefab just fine but after going through play mode and back to edit mode the object is no longer treated as a prefab. Kind of a minor issue but it would be nice to know how to fix it.
     
  34. Aimed

    Aimed

    Joined:
    Jan 7, 2014
    Posts:
    9
    Is there a way to create a clone of UMA in runtime? Object.Instantiate() with UMA GameObject gives errors in UMASkeleton.EnsureBoneHierarchy and later on Unity throws an error related to Avatar as well:
    AvatarBuilder '2567154706943903976(Clone)': Transform 'Position' parent 'Global' must be included in the HumanDescription Skeleton
     
  35. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208

    That error is due to the "texture merge" scriptable object not being set on the generator. Did you use the UMA_GLIB prefab?
     
  36. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    If you have "Edit time generation" turned on, UMA has to unpack the prefab in order to generate them. If you need to keep them as prefabs, then it's best to turn that off.
     
    numbers1234 likes this.
  37. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    You can save the avatardefinition, and then construct a new one with that. See that "How to construct..." sample scenes for an example.
     
  38. Freak4Fun

    Freak4Fun

    Joined:
    Mar 11, 2016
    Posts:
    2
    Thank you so much, it worked ! I didn't set those up in the UMA context. I suppose that is the problem with outdated tutorials.
     
    Jaimi likes this.
  39. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Yeah - it's best to start with pulling the lib and the prefab from the getting started folder, and then going forward with the tutorials.
     
  40. jKessinger

    jKessinger

    Joined:
    Jan 21, 2016
    Posts:
    8
    So that was working for me for a little bit but then when saving the scene it does something odd. When I save it the UMA generates a renderer as if editor time generation was enabled, but still showing the silhouette as if editor time generation was disabled. This unfortunately also breaks the prefab and causes errors if I try to run (seems to be materials not getting re-assigned).

    In this state you can just re-enable then disable editor time generation to fix it and be able to run correctly again, but the prefab will still be broken. This will also delete the skeleton and any additional transforms manually added, weapon attach points in my case. Puppetmaster also breaks when the skeleton gets re-created and the scripts they included to integrate with UMA don't work with UMA 2.12.
     
  41. LootlabGames

    LootlabGames

    Joined:
    Nov 21, 2014
    Posts:
    343
    I am having a very strange problem.
    Everything was working fine one minute.
    Then the next time I played (without making any changes) the UMA is no longer loading.
    I tried to rebuild the global library and to rebuild the addressables but still no go.
    It just sits there waiting for a response from umaData.OnCharacterCreated.

    No errors, no warnings.

    Here is the code I use to create the UMA.

    Code (CSharp):
    1. GameObject prefab = Resources.Load("Prefabs/UMA") as GameObject;
    2.  
    3. GameObject go = (GameObject)Instantiate(prefab);
    4.  
    5. DynamicCharacterAvatar avatar = go.GetComponent<DynamicCharacterAvatar>();
    6.  
    7. avatar.Initialize();
    8. UMAData umaData = avatar.umaData;
    9.  
    10. umaData.OnCharacterUpdated += OnUMADataCharacterUpdated;
    11. umaData.OnCharacterCreated += OnUMADataCharacterCreated;
    And here is my dynamic character avatar:

    upload_2021-5-5_17-2-18.png
    upload_2021-5-5_17-18-24.png
    upload_2021-5-5_17-18-54.png
     
  42. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    You found a bug! :)

    In UMAAssetIndexer.cs, the "EditorSceneManager_sceneSaved" function should check if editorTimeGeneration is enabled before regenerating the character:

    Code (CSharp):
    1.         private static void EditorSceneManager_sceneSaved(UnityEngine.SceneManagement.Scene scene)
    2.         {
    3.             if (!LeanMeanSceneFiles())
    4.                 return;
    5.  
    6.             GameObject[] sceneObjs = scene.GetRootGameObjects();
    7.             foreach (GameObject go in sceneObjs)
    8.             {
    9.                 DynamicCharacterAvatar[] dcas = go.GetComponentsInChildren<DynamicCharacterAvatar>(false);
    10.                 if (dcas.Length > 0)
    11.                 {
    12.                     foreach (DynamicCharacterAvatar dca in dcas)
    13.                     {
    14.                         if (dca.editorTimeGeneration)
    15.                             dca.GenerateSingleUMA();
    16.                     }
    17.                 }
    18.             }
    19.         }
     
    Last edited: Jun 19, 2021
    hopeful and jKessinger like this.
  43. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    The only thing odd I see is that you have "keep animator controller" checked, but no animator controller assigned in the animator. It should go ahead and create it anyway since it's null. But otherwise, I don't really know what is going on. I'm assuming you are on 2.12. I'm wondering if CharacterCreated will *not* be called because of the previous bug... But it's redundant if you are using CharacterUpdated, because the only difference between the two is the "Created" version is only called on the first build, and Updated is called on every build.

     
  44. jKessinger

    jKessinger

    Joined:
    Jan 21, 2016
    Posts:
    8
    Awesome! Thanks for the fix
     
  45. LootlabGames

    LootlabGames

    Joined:
    Nov 21, 2014
    Posts:
    343
    Is there verbose mode or something I can turn on to see where it is getting stuck?
     
  46. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,685
    It's hard to keep the tutorials updated. Energy is better spent on making the actual updates. So the best way to learn about the latest version of UMA is in the Examples folder. Always.
     
    Freak4Fun likes this.
  47. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Oh yes.

    Add SUPER_LOGGING to your projects conditional defines.
     
  48. LootlabGames

    LootlabGames

    Joined:
    Nov 21, 2014
    Posts:
    343
    These are the last 3 lines where it gets stuck. Any ideas?
    upload_2021-5-5_21-32-8.png
     
  49. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    This means that the addressables are not calling the completed function, so the build process isn't continuing. Have you made any changes to the addressable profile? My first suggestion is to delete the Addressables data and recreate it, rebuild the groups, etc.
     
  50. LootlabGames

    LootlabGames

    Joined:
    Nov 21, 2014
    Posts:
    343
    Unfortunately that didn't help, still hanging at the same place.