Search Unity

  1. Good news ✨ We have more Unite Now videos available for you to watch on-demand! Come check them out and ask our experts any questions!
    Dismiss Notice

UMA - Unity Multipurpose Avatar on the Asset Store!

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

  1. RPowers

    RPowers

    Joined:
    May 14, 2015
    Posts:
    114
    Ahhh thank you so much! That was the issue.
     
    Jaimi likes this.
  2. Bucee

    Bucee

    Joined:
    Apr 20, 2016
    Posts:
    13
    Hey thanks again for the help earlier, I was wondering if I have to use the Global Library or if I can use some other way of loading in clothing? I put a single wardrobe item in there and it's taking up 50MB of RAM, and I'd like to add some more items but that's too much RAM.
     
  3. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    5,341
    The global library only holds references to the items. Your clothing will take up as much space as it takes. If 50mb is too much, you should look at dramatically lowering texture sizes, and possibly performing reductions on the slot assets.

    With that said, the addressables update demand loads slots and overlays and uses much less memory. But every texture and slot that is in use will still be loaded into memory.

    You can also use the older context, that requires the libraries. This will load and unload things by scene. However, you will have to manage everything manually at that point.
     
  4. leapp

    leapp

    Joined:
    Mar 19, 2015
    Posts:
    11
    I already use UMASimpleLOD,but the memory in mobile phone still a lot. I just want the characters use the same RenderTexture if they are the same clothes. is there any plugin already implement that?
     
  5. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    5,341
    No. That is on the roadmap, but it is not in the immediate future. You can use the power tools to create prefabs though, and unlogicks fbx exporter can create fbx from UMA.
     
  6. blacklily8

    blacklily8

    Joined:
    Sep 1, 2019
    Posts:
    6
    I was getting this error when I was trying to use a shared color from within an overlay that was using another material with more channels. I had to remove the shared color from my DCS base recipe and let it be created dynamically instead. That solved the problem for me.
     
  7. Sascha2

    Sascha2

    Joined:
    Nov 1, 2017
    Posts:
    10
    Hi Jaimi, thanks a lot for your help regarding transparent UMAs (https://forum.unity.com/threads/uma...-the-asset-store.219175/page-203#post-5881049). Changing the material on CharacterUpdated works perfectly. However, the second issue is not resolved by disabling atlassing.

    I am using URP RenderObjects to perform a ztest on all objects that are on the ZTestTransparent layer, before transparent objects are rendered like suggested here: https://forum.unity.com/threads/question-about-transparency-and-rear-faces.774224/#post-5213051

    I am doing this so things like the (outer) eyeball and the inner mouth are not seen.

    The issue is that any alpha textures with their own mesh (such as eyebrows and -lashes) cause holes due to the ztest (screenshot in my first post). IMHO I would need these extra-meshes to not be merged with the body-mesh so I can put them on the default layer which would remove the z-test for them.... or use a different technique for transparent UMAs... Happy about any ideas you might have. Beginning to think that I should switch back to built-in until URP supports depth pre-passes.
     
    Last edited: May 26, 2020
  8. wagnificent

    wagnificent

    Joined:
    Jun 17, 2017
    Posts:
    6
    Hi everyone,

    I'm trying to put together a basic locomotion blend tree in Unity using animations from Mixamo. The animations in UMA's locomotion animator work just as intended, but when I swap in the animations I grabbed from Mixamo, there is some weird distortion in the avatar's ankles and feet.

    I used the bone builder on my UMA and assigned my animator controller with the blend tree, and the animations are set for a humanoid rig. I must be doing something incorrectly, but I'm not sure what it is. Any advice on where to start troubleshooting?
     
  9. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    5,341
    If you give them a different UMAMaterial, they should not be merged into the same atlas.
     
  10. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    5,341
    Make sure the race you are using has the "Mecanim Friendly" t-pose on the RaceData Asset:

    tpose.png
     
  11. wagnificent

    wagnificent

    Joined:
    Jun 17, 2017
    Posts:
    6
    I'm using the Human Male. It's using the "Mecanim Friendly" t-pose, and it still has this problem. Just for reference, I am using the Mixamo Locomotion Pack that has 12 animations.

    Mixamo animations cause deformations when I use a 2D dynamic freeform blend tree, and they cause the UMA to get frozen in some position when I use a 2D simple directional or a basic state.

    My UMA is a child of the player object, which has no mesh but it has a rigidbody and capsule collider. Would that cause a problem with the animations?
     
  12. Harekelas

    Harekelas

    Joined:
    Feb 3, 2015
    Posts:
    824
    Hello, I'm trying to use UMA's blendshape baking function to reduce runtime blendshapes on my characters. But I found that all negative values cannot be baked properly. They all revert back to 0 when baking thus the character looks different from before baking:
    This is what the character looks like before baking:
    upload_2020-5-28_18-31-51.png

    This is what he looks like after baking:
    upload_2020-5-28_18-32-25.png

    Anything I can do to quick fix this issue?

    Edit: I looked into the SkinnedMeshCombiner.cs and found the line that may caused this issue:
    line 441: if(weight <= 0) return true;

    I changed it into:
    if(Mathf.abs(weight) <= Mathf.Epsilon) return true;

    Then it seems to work correctly. Let me know if this act may damage some other functions in UMA.
     
    Last edited: May 28, 2020
    hopeful likes this.
  13. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    5,341
    That looks right to me, I'll put it in the next update.
     
    hopeful likes this.
  14. Wothanar

    Wothanar

    Joined:
    Sep 2, 2016
    Posts:
    111
    hi there jami, i can fix my problem with json stuff but now i have this error when loading the avatar from the string , its says

    The sent recipe did not have an assigned Race. Avatar could not be created from the recipe

    What should i do? thanks
     
  15. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    5,341
    The existing json stuff itself has json inside it. This results in a string that gets escaped. This is easy for various functions to mess up as they "tidy up" the string. The string has to be exact, and not cleaned up.

    In the end, there is a solution coming that is significantly smaller, and not prone to this json-on-json issue. It will be in the next version.

    Here's the difference (same character):

    Current recipe string
    New compressed avatar string:

    I'm hoping the pull request is reviewed soon (and without issue), so I can merge it and release a new version in a few days.
     
    hopeful likes this.
  16. michaelday008

    michaelday008

    Joined:
    Mar 29, 2019
    Posts:
    41
    Are UMA shared colors somehow global across all recipes?

    I'm having some issues with them. If I edit the challenger armor and add a new shared color (like red) and use that shared color for the leather, it works.

    If I change the original Leather to red and click "Save Collection" on the existing Leather color it doesn't apply at run-time. I've tried clicking "Save Collection" many times.

    It's almost like it's somehow searching all recipes in the project for a shared color called Leather and using one from another recipe, not the modified and saved one from my recipe. I've also ensured the "Use Shared Color" box is checked and the "Leather" shared color is used.

    The behavior is really bizarre. I can rename "Leather" to "AnyFakeNameThatIsNotLeather" and it immediately applies the color. As soon as I rename that color back to Leather, even if I click "Save Collection" it's back to the default leather used for everything else.

    This doesn't make any sense because UMA doesn't expose some type of global shared color library that I'm aware of, and even if it did, it wouldn't make senese to allow you to edit the shared colors for a single recipe if it was just going to ignore everything and use some other hidden color from somewhere else instead.
     
  17. DankP3

    DankP3

    Joined:
    Jul 17, 2017
    Posts:
    91
    You can get these sort of issues when you import from mixamo. Always export mixamo animations with the same character (using the default x or y bot is fine). Make sure you import that mixamo avatar in t-pose, set as humanoid and configure the avatar. Every other mixamo animation (which can be skinless) is then imported, set to humanoid and copies the mixamo avatar you setup. Mecanim will do the rest.
     
  18. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    5,341
    Yes, sort of. They are global to the character. They are loaded from the recipes, And when you change a shared color on the character it changes all equipped wardrobe items. This is so you can have skin (etc) in multiple recipes, and they all take on the skin hue. Same for team colors.
    If you don't want a color to change, don't make it shared.


     
    hopeful likes this.
  19. leapp

    leapp

    Joined:
    Mar 19, 2015
    Posts:
    11
    thanks, I have implement that. Another question, I want bake the head mesh after DNA setting, But the Meshes are build to one UMARender. How to only bake the head mesh?
     
  20. justasmig

    justasmig

    Joined:
    Jul 2, 2015
    Posts:
    5
    Hello! I have just wanted to ask how to properly setup UMA global library and addressable assets? Also, what to exactly do before building, to make sure UMA will work properly? Can't find many guides, except for one FAQ regarding global libraries, but it is for UMA 2.6 as far as I know.
     
  21. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    5,341
    You should be able to bake those separately, even though they share the same mesh. (Look at the BlendShapes sample project). If you do need to split out the renderers for something, then look at the UMARendererAssets and that sample scene.
     
    leapp likes this.
  22. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    5,341
    This is documented in the "Upgrading to 2.10 from a previous version - Read Me Now" pdf.
     
  23. justasmig

    justasmig

    Joined:
    Jul 2, 2015
    Posts:
    5
    Thanks, will check that out!
     
  24. leapp

    leapp

    Joined:
    Mar 19, 2015
    Posts:
    11
    I look into the example, but it only bake blendShape. I want to bake the head to mesh to reduce character skeleton,so I have to break the head from body
     
  25. wagnificent

    wagnificent

    Joined:
    Jun 17, 2017
    Posts:
    6
    Thanks for the tip! The avatar setup was the problem.
     
  26. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    5,341
    Oh, I have no clue on partially exporting. It's possible to make a "head only" UMA by using the Bone Builder, and just adding the head recipe. Maybe that will generate the FBX or prefab? But honesly, I don't know, I don't use or need that functionality.
     
  27. ChoChick

    ChoChick

    Joined:
    Jul 18, 2016
    Posts:
    39
    Questions about Skeleton DNA Converters.

    For example, if the scale value I want to change is 0.9 to 1.2, I should change the value by setting "Initial Value 1.05" to "Evaluator Default One" and "Multiplier 0.15".
    But if I have bones that I want to change with multiple slider values (eg muscle and fat) I may not want to change the Initial Value.

    Another pattern would be to set "Evaluator to ZeroZeroOne" and "Evaluator to OneZeroZero" and change the scale values with different Multiplier values.
    In this case, if the slider values are 0 to 0.5 and 0.5 to 1.0, the amount of change will differ even if the slider values are moved the same amount. Also, even if it is 0.5 which is the middle value, it will not be an intermediate value between the minimum value and the maximum value.

    Do you know the reason why the values of Mltiplier set by SkeletonDNAConverters are set by the values of Evaluator and Multiplier instead of the minimum and maximum values?
     
  28. Shanmukhajagadeesh

    Shanmukhajagadeesh

    Joined:
    Jul 19, 2018
    Posts:
    1
    1. i made my character 4 LODs. when camera is near to character and move far away LODs changing good. but character far away from camera at start,then LODs are Not working. After camera move near to Character it start working. far away characters mesh not working. Only textures are working.

    2. I set mesh hide asset for Lod0. this is working fine, but Working on remaining LODs.
    First i created MeshHideAsset for LOD1.
    In the SlotDataAsset i choose a Body slot from LOD1 and i edit that slot.
    i added that MeshHideAsset to LOD1 Recipe.
    play and tested. MeshHideAsset Working on LOD0 only. LODs are changing but Mesh doesn't Hiding on LOD1.
     
  29. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    5,341
    Honestly, I am not sure, I didn't work on this piece. There is another way to do DNA if you need something that just doesn't work with the existing stuff -- DNA Delegates. There is a sample Scene and Converter that shows some delegates changing colors.
     
    ChoChick likes this.
  30. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    5,341

    You should have a single recipe, with LOD0 models in it, and all of the LOD mesh hide assets. It should work at that point.
     
  31. fncischen

    fncischen

    Joined:
    Jul 14, 2017
    Posts:
    8
    Hi all! This is an amazing asset and I plan to use it for my game. I'm trying to understand the code base and would like some clarification.

    Quick question: I want to understand how the mesh manipulation works, from a code level. As the slider weights (i.e. head size, chest, stomach, etc.) are being sent to the UMADna objects for manipulation, and the Avatar Bodies are being reconstructed, is essentially what is happening is that there are dynamic blend shape weights stored somewhere to determine the minimum and maximum range of DNA mesh manipulation per body part?

    If this is true, where is this taking place in the code? Is this in the UMAMeshData file?

    Thanks!
     
  32. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    5,341
    The sliders control DNA. The DNA is controlled by a "Dynamic DNA Converter Controller". This controller ties together a the DNA Converters and the DNA Names.
    There are 5 different types of DNA converters.

    SkeletonDnaConverter: This lets you define DNA that changes bones. They can be scaled, translated or rotated. There are several different formulas you can use to transform, using various curves. The vast majority of the sample DNA is done with the Skeleton DNA Converters changing "Adjust bones".

    BlendshapeDnaConverter: This DNA lets you apply blendshapes. They are stored on the slot. There are only a couple of sample Blendshape DNA included, as they are a) memory intensive, and b) a significantly more art time involved, as any Blendshape needs to be duplicated on any affected clothing. Nonetheless, it is very powerful feature, and allows for you to modify the character in ways that bones cannot.

    BonePoseDNAConverter: This DNA lets you morph boneposes. Which is, a specific rig pose. This could, for example, be used to morph a human->dwarf->elf.

    ColorDNAConverter: This lets you morph shared colors. It is typically used to morph between different texture sets -- for example, fading between a "six pack abs" texture set, and a "smooth" texture set.

    OverallScaleDNAConverter: This lets you morph the overall scale of the character model with DNA.

    During the build process, all of these are applied different ways.

    I recommend to look at SecretAnoraks videos for example of how to set this up.
     
  33. fncischen

    fncischen

    Joined:
    Jul 14, 2017
    Posts:
    8
    Hey Jaimi. Thank you! I've had a chance to read through the code base again, and watching SecretAnorak's videos.

    Yes, it looks like much of the DNA converters are set up around SkeletonDnaConverters and Adjustment Bones (great to know!
    )

    It made so much sense after I began reading the code base, and seeing that in the Built In Generator, a new skeleton is being built with the new adjustment bone weights sent to the new skeleton (line 402: https://github.com/umasteeringgroup...dardAssets/UMA/Scripts/UMAGeneratorBuiltin.cs)

    appreciate it!
     
    Jaimi likes this.
  34. fncischen

    fncischen

    Joined:
    Jul 14, 2017
    Posts:
    8
    Hey
    Hey @Jaimi! So I've successfully been able to see the connection between the Dynamic DNA Converter Controller and the UMA DNA files for bone / mesh / wardrobe manipulation. However, as the Dynamic DNA Converter Controller is a Scriptable Object, I couldn't find which game object is storing the Dynamic DNA Converter Controller as a property. Would love to know! Thanks!!!!
     
  35. nsmith1024

    nsmith1024

    Joined:
    Mar 18, 2014
    Posts:
    809
    Hi anybody knows how the new UMA anime clothes and kid look is coming along?

    Thought someone was working on making UMA characters look like kids with an anime look instead of an adult?
     
  36. Twyker_gp

    Twyker_gp

    Joined:
    Dec 4, 2018
    Posts:
    26
    Are there any known issues with Webgl or Unity 2020.1?
    Everything works fine in Editor, but when I spawn a char and load a recipe for it, I only see the hair and nothing else of the char.
     

    Attached Files:

  37. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    5,341
    That is referenced on the RaceData of the specific races that use the controller
     
    fncischen likes this.
  38. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    5,341
    fncischen likes this.
  39. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    5,341
    2020.1 is not currently supported.

    WebGL has known issues with supporting items in resources. You might try the UMA menu item: "UMA/WebGL/Enable Embedded Resources". This must be done before using WebGL and UMA.
     
  40. fncischen

    fncischen

    Joined:
    Jul 14, 2017
    Posts:
    8
    Last edited: Jun 9, 2020
  41. qpuilie

    qpuilie

    Joined:
    Jan 14, 2020
    Posts:
    47
    Hi, I have a question or BUG on predefinedDNA method, can you give me some ideas?

    Phenomenon:I want to change race and immediately update DNA with code, but predefinedDNA works for a race other than HumanFemaleDCS. It won't work if I change race to HumanFemaleDCS or our defined race.

    I hope to get the following information from you:
    1.If it's a BUG, how to fix it? Or is there something wrong with our usage?
    2.What's the difference of DCS race or custom race to the other predefined races.
    3.What is DCS, Does DynamicCharacterSystem?

    Here is my test code:
    code.png
    I would appreciate it very much.
     
  42. robybaggi

    robybaggi

    Joined:
    Mar 27, 2020
    Posts:
    8
    Hey there,

    I'm not sure if this was intended but I think I found a bug and would like to report it.

    I created an HDRP/Lit material (with subsurface scattering) as a base for an UMA material and left the texture slots/channels empty. Upon entering Play Mode, the generated UMA's textures were not displayed correctly (mask map and normal map details were completely ignored). When I added empty textures (just a plain white texture) to the slots, the UMA's textures were generated correctly.
     
  43. kenamis

    kenamis

    Joined:
    Feb 5, 2015
    Posts:
    355
    That's not exactly a bug. It is to be expected. Those shaders have lots of variants based upon what features/texture inputs are selected. If they are not set, then unity strips out the unused ones. If you then try to assign those unused inputs at runtime, they will not be recognized. That is why it is recommended to put any texture inputs (like you did with plain white) in on the Unity Material that is associated with an UMA material.
     
    robybaggi likes this.
  44. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    5,341

    1. This can happen when a race doesn't have DNA assigned on the Base Race Recipe. Go into the race, find the base race recipe. Inspect the recipe. Click the "Add DNA" button.

    2. The DCS race is the old 2.6 race and is kept for compatibility reasons. The default HumanMale and HumanFemale should be used for new projects. The "Legacy" version of the races use the old code. They are kept for compatibility also.

    3. DCS is Dynamic Character System. It's a high level framework on the top that sets things up as a races & wardrobe, and manages that for you. As well, it made everything "Dynamic", in that they could be updated with Asset Bundles and now with Addressables.
     
  45. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    5,341
  46. arteria

    arteria

    Joined:
    May 31, 2007
    Posts:
    2,118
    New Release from Arteria3d today

    Sci Enforcer Heavy Armoured Troop



    The Sci Enforcer HeavyArmoured Troop ' costume for UMA.All costume items scale and deform precisely so you can vary the size of your characters proportions

    Pack Contains:

    • 5 Slots
    • 5 Overlays
    • 5 Wardrobe Recipes
    SLOTS Included & Overlays & Wardrobe Elements for:

    • Helmet
    • Torso Armour
    • Arm Armour
    • Leg Armour
    • Boots

    Pack can be purchased for $17.99 from the Arteria3d Webstore, as per link below

    https://arteria3d.myshopify.com/products/sci-enforcer-heavyarmoured-troop
     
    Last edited: Jun 12, 2020
    Jaimi likes this.
  47. ELGReeN

    ELGReeN

    Joined:
    Apr 8, 2013
    Posts:
    5
  48. arteria

    arteria

    Joined:
    May 31, 2007
    Posts:
    2,118
  49. xeye

    xeye

    Joined:
    Jun 25, 2013
    Posts:
    26
    I'm building an inventory menu to let a user design their avatar in-game from uma wardrobe items. My thought was that for each button, I'd instantiate a new MaleCharacterAvatarSDK object on the button, assign just the wardrobe item, and then that gives a visual representation of what the actual item would look like on the real avatar. 2 issues I've got with this:

    1. When I instantiate the MCASDK during runtime, he is hidden as the UMARenderer it generates is disabled. Is there a more elegant way to get this to instantiate, because it's going to take some doing for me to figure out how to get that disabled child to show.

    2. I'll attach the wardrobe accessory to this instantiated UMA, but of course I want ONLY the accessory visible. I realize there are hiders and such, but it is there some simpler way to just tell the uma "don't draw any skin at all, only the wardrobe element?"

    Any other pratfalls you can think of? I realize there are several other ways to go about this issue (instantiate the original geometry, make 2D icons myself, etc) but for now I am interested to explore this route if possible. Given all of that - could it get immediately expensive on performance if I have say a dozen of these "only wardrobe UMAs" being fully loaded on my buttons, meaning this is all a moot point anyway? Thanks for reading!
     
    Last edited: Jun 14, 2020
  50. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    5,341
    1. Not sure on this item, might ask the AvatarSDK people.
    2. For this, you'll probably want to create a "hides all base recipes" wardrobe item, and use that to hide the race. You'll need to use the BoneBuilder to prebuild the rig, though.

    A dozen of these should not be a problem.

     
    xeye likes this.
unityunity