Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. Dismiss Notice

UMA - Unity Multipurpose Avatar on the Asset Store!

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

  1. Kirbyrawr

    Kirbyrawr

    Joined:
    Jul 23, 2012
    Posts:
    945
    Thanks FargleBargle!
     
  2. CommunityUS

    CommunityUS

    Joined:
    Sep 2, 2011
    Posts:
    240
    Any word on the low poly base meshes? With the power tools asset out...I can't wait to really dive in.
     
  3. AndyLL

    AndyLL

    Joined:
    Aug 25, 2013
    Posts:
    75
    I see that the individual assets have those categories but they are not showing up on the Asset Store category list for me.

    Is it just me?
     
  4. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    449
    Hi, being purchasing Power Tools and others I'd like to ask if the dictionary that will contain the mesh can be generated at run time if I receive the string to generate from elsewhere. What is the length of the string, are we talking a couple kilobytes at most?

    I'm thinking of using Power Tool's interest management in conjunction with my own networking interest management but I'm worried if Power Tools will ever cause issues if the character needs to be destroyed while it's not in range. Will destroying the white box on the ground force Power Tools to handle the situation so that this character doesn't persist in its storage.

    I'm working on an mmorpg and it seems like if a bunch of these UMA characters were to gather in one location it would effectively eat up even the highest memory GPUs. Any ways, tips or guides to reduce the GPU usage. There is no way it's going to be possible to have a large amount of people in one area. Players with low end video cards will be unable to participate in any event that require it.

    Edit: Do you think it's possible to, at runtime, turn them into a prefab with a unique identifier? Will the prefab persist through each run, this would be bad, and if this is possible would it increase performance?
     
    Last edited: Jan 10, 2014
  5. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    Hi there! Sorry taking long to answer, Got internet problems today :p
    This looks like a problem on skinning, have you guys changed base mesh skinning data?
    About the save/load tutorial, I might be able to record it today or tomorrow.
    Cheers
     
  6. Hedonsoft

    Hedonsoft

    Joined:
    Jul 11, 2012
    Posts:
    168
    I'm watching the video on content creation with \blender but I use Maya, when I select the faces for the shirt and duplicate and uniform scale, the scaling is off. What's the proper way to scale duplicated faces in Maya?
     
  7. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    Hi there!
    I´ve made quite some progress on that, this is an old image of the process:


    But I won´t have enough time to finish it any time soon, so I can´t give an ETA :(
     
  8. UnLogick

    UnLogick

    Joined:
    Jun 11, 2011
    Posts:
    1,745
    The UMA serialization is flexible, right now everything is serialized to strings. But you can create your own UMARecipeBase derived class and store each of the 46 dna values into bytes and use a binary format, add zip on top if you're paranoid about bandwidth. And the beautiful thing is everything will work, UMA itself, my power tools, and every proper written UMA component!

    That is the point, the only thing that is kept in storage is the recipe asset. However keep in mind that right now the OverlayLibrary and SlotLibrary currently does not support external sources like AssetBundles and files. So right now all the raw source assets are at the mercy of unity. This is something we plan to look into in the future. And I know Marcus have already added UMA AssetBundle support to his mmo.

    Some sort of LOD meshes might be a good idea, but you can come a long way simply by reducing the atlas scale. There is no pack that handles this at present. But it would be possible to have a manager that kept track of atlas sizes and forced rebuilds to lower resolution if too many players gathered in one place.

    The cost of copying the textures from gpu to memory and then serializing the textures would probably exceed rebuilding the character. However if you expect to keep running into the same players then I guess there would be a benefit.
     
  9. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    Same here... Not sure why this happens.
     
  10. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    Sorry Hedonsoft, I don´t use Maya for a long time, have no idea. In Fact I still wan´t able to fully test maya import/export process to UMA. Please contact me again if you have any trouble. I´m looking for user experince on maya so I can include on manual.
    Cheers
     
  11. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
  12. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    449
    Thank you so much for answering all of my questions. I guess I'll go ahead and purchase Power Tools then and see what's possible and hopefully integrate it this week.
     
  13. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,380
  14. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    Huge help for max users =D Amazing work Lane!!!
     
  15. FargleBargle

    FargleBargle

    Joined:
    Oct 15, 2011
    Posts:
    770
    @LaneFox: Thanks a lot for the tutorial. I was just about to start messing around with some of that, and was expecting a huge headache figuring some of the procedures out on my own. Your video makes the whole process a lot clearer.
     
  16. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    449
    I can't seem to access UMADynamicAvatar through code. I am however able to access other UMA classes.

    Am I not suppose to have access to this class and create additional instances of this class through code? It seems I'm unable to access the majority of the classes. I'm just trying to get/set TextRecipes. I don't see why I am unable to access them.

    Fix: Switched to Monodevelop and was able to access the classes. I'll check later if I can relaunch in VS and see if the problem disappeared.

    Fix2: Can't use Mono because it hates default parameters for some reason. Switched back to VS and it was accessible finally. What a waste of 20 minutes.
     
    Last edited: Jan 11, 2014
  17. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    449
    How can I set a recipeString.

    This is my current code however a recipeString when saved isn't an actual string. It's like a broken up string. Any suggestions?

    Code (csharp):
    1.  
    2.     public UMADynamicAvatar someChar;
    3.  
    4.     // Use this for initialization
    5.     void Start ()
    6.     {
    7.         Debug.Log(((UMATextRecipe)someChar.umaRecipe).recipeString);
    8.         ((UMATextRecipe)someChar.umaRecipe).recipeString = ????
    9.     }
    10.  
    Edit:
    Seems if I wanted to copy paste the field from the inspector that contains a recipeString then I need to add the proper formating so that it stays a single string (Ex. "\"" and etc). Idk why it tooks me so long to realize that. Well, now that I know you can plug in any old recipeString, which is great since I can now store characters like this serverside easily, is there anything else that ought to be changed if I'm going to abritarily plug in a recipeString into a UMADynamicAvatar?
     
    Last edited: Jan 11, 2014
  18. cookimage

    cookimage

    Joined:
    Sep 10, 2012
    Posts:
    729
    For those interested UMA Character Creation is now fully integrated into our Atavism MMO Kit for Unity. We have just release it to developers currently in Closed Alpha. For more information visit our website at www.atavismonline.com

    Looking forward to see many MMO games using UMA!
     
  19. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    Hi there! Great to hear that! Very happy for you guys =)
     
  20. Hedonsoft

    Hedonsoft

    Joined:
    Jul 11, 2012
    Posts:
    168
    Is there a way to use a MeshCollider instead of a CapsuleCollider?
     
  21. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    Hi there!
    I would recommend using combined primitive colliders if you need precise collision over body parts.
    They can be attached to avatar bones to properly adapt to animation and shape variation.
    Cheers
     
  22. RandAlThor

    RandAlThor

    Joined:
    Dec 2, 2007
    Posts:
    1,291
    Hi Fernando Ribeiro,

    i just made my first real test with UMA and watched most of the videos you made and i have some questions for different aspects of UMA.

    1. Do UMA create different LODs and what do i have to do on the content creation side?
    If not, will it come to a later update of UMA?

    2. Do UMA feature different shaders then your two special ones? Would like to have one solution that i not only can use on desktops but also on (modern) mobiles/tablets. I have bought many shaders that are fast for mobiles but can i use them with UMA? Do you have any solution in your mind?

    3. Will there be a version that feature 4 legged creatures? In one video i heared something like dragons :)
    Would like to create 4 or more legged creatures. By the way, because you work together with someone from unity and worked with mecanim for UMA, can i use mecanim with 4 legged creatures not only in legacy system (hope this will be added into mecanim in the future if not)?

    4. I am not a Blender but Lightwave user and would like to know what kind of bones or ik/fk system are you using in Blender so i can adapt the system to Lightwave 3D. Is there anything special to look at in other 3D programs(naming of the bones that have to be)? Maybe i have to learn Blender for UMA ;)

    5. If i want to ad not only cloth like things to my UMA contend but weapons or other things that the characters can use, what do i have to think of if i want to use it with UMA?

    6. Can i sell contend on the asset store that i created for UMA and if so will there be a solution to limet the sliders in some way. In example if i want to create a dwarf asset pack for UMA it would be good that the size of the dwarfs are not to big even if they should have some variance or if i make an asset pack for UMA with giants it would be good if they can not be to short. I hope you understand what i mean, just some way to limmit the sliders for contend creators and the crowd creator.

    At last i am interested what you would like to include in future versions of UMA that are not asked in my questions?

    Thank you for making UMA and thank you and Unity for making it free :)
     
  23. UnLogick

    UnLogick

    Joined:
    Jun 11, 2011
    Posts:
    1,745
    There is no current LOD system in UMA. Some LOD content has been in the works but we haven't decided on how to handle this in UMA.

    UMA support most shaders, just set the material on the SlotData and that shader will be used.

    Adding Mecanim Generic or even Legacy support is trivial and will probably be added at some point.

    Look at the Content Creation Pack
    http://fernandoribeirogames.wix.com/umabeta#!content-creation/c1k7h

    Cloth is a bit tricky with UMA. Either you'll have to do bone based cloth simulation or you would have to do some serious hacking of UMA.

    About weapons it's just attaching the meshes to the bones as usual.

    Of course you can sell your own content on the asset store. The first content for UMA is already starting to appear.

    I promised the maker not to reveal the futility of planning ahead, as all the enlightened knows the world ends tomorrow.
     
  24. Krazeecain

    Krazeecain

    Joined:
    Apr 2, 2013
    Posts:
    7
    Is there a nice step-by-step tutorial for using this somewhere? I'm pulling my hair out just trying to get a dummy character into a test scene. Half of the manual seems to just explain what the package does, and the other half explains how to create and add content to this system, without ever really explaining what objects to create and put where to actually get a character in a scene!

    I'm finding myself jumping back and forth from my test scene to the demo scene, just trying to figure out how to make this work. I'm sure I'll figure this out eventually, but it's annoying and tedious.

    ...Not that I'm ungrateful! This package is amazing, and it's potential is very exciting. I just wish I could figure it out. lol
     
    Grave174 likes this.
  25. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    449
    It seems that at start, or nearly after start, the member umaData of the UMADynamicAvatar is null.

    This eventually stops being the case but it makes it a bit different to know when and how to neatly execute

    Code (csharp):
    1.  
    2.  
    3. characterDNA = character.umaData.umaRecipe.umaDna[typeof(UMADnaHumanoid)] as UMADnaHumanoid;
    4.  
    5.  
    I could write some terrible code to handle it but I'd rather do what you guys recommend.

    Edit: Actually, I can't recall how I ACTUALLY got it to work before. It appears the key is in the dictionary but it has a null value. I'm really at a loss of what to do.

    Edit:Edit: I think I figured it out. I wasn't getting the proper UMAData from the scene. It was deciding to go grab some UMAData from another object.

    Edit:Edit:Edit The entire problem was adjusting the height wasn't working. I switched it, in my last final attempt at something, to HeadSize and sure enough the same logic worked. So much time lost =/
     
    Last edited: Jan 13, 2014
  26. FargleBargle

    FargleBargle

    Joined:
    Oct 15, 2011
    Posts:
    770
    Been there and done that! UMA comes with 2 demo scenes. The first showcases using UMACrowd to create single or multiple randomly generated characters. The second shows how to use specific saved UMA characters. But neither really tells you how to add UMA to your own scene from scratch. My best suggestion here is to look at what UMA components each of the demo scenes includes, and start from there.

    To really unleash its capabilities, I'd strongly recommend getting the Power Tools pack from the Asset Store, as well as one of the helper packs that are now available to aid in customizing your creation. They may not be free, but your time is worth something too, and these will save you a lot of it. They're well worth the small amount the developers are asking for them.

    The workflow I'm currently using is to either use the updated Scene 1 demo, provided with Power Tools, or the Demo scene, provided in KirbyRawr's Helper Pack, to generate my initial characters. I run these scenes as is, away from the rest of my project, just to create characters. When using the Helper Pack, the only change I make is to replace the script used by UMAGenerator with "UMAGeneratorThreaded", supplied by Power Pack. This is done to remove all the extra bones that UMA creates, leaving a nice clean avatar. This isn't required when using the Power Pack Scene 1, as it's already included.

    You'll need to hit "Play" to generate and modify your characters, although Power Pack also gives an option to see the character in Edit mode. Activate the UMACustomization module, provided in the demo scene, if it isn't already on, to change the size and shape of your avatar. Then right-click on the character you want to modify in the game window to select it, and the sliders will show the current settings. You can then use them to change anything you want. If you'd like to control hair and clothing colors as well, you'll need one of the helper packs, unless you want to hack/modify the UMACrowd script directly.

    When your avatar looks right, you can save it as a prefab, using the menu UMA>Power Tools>Save Character Prefabs. Once you have a prefab, you can drop it into your main project, or modify it further, using the standard methods you are probably already familiar with.

    There are certainly other ways to do all of this, and more advanced things you can do as well. If you want to customize your avatar in game, or create dynamic random NPCs at run-time for instance, you'll need to dig a bit deeper into UMA's underlying mechanics. As a quick and simple way to create usable game ready characters though, this technique seems to work just fine.
     
    Last edited: Jan 13, 2014
  27. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,380
    Good post, just a little addon:

    A good idea is to save your recipe down along with your prefab you made with the Power Tools, this will allow you to recreate that avatar with the recipe and resume regular UMA customization, then rebake.
     
  28. Hedonsoft

    Hedonsoft

    Joined:
    Jul 11, 2012
    Posts:
    168
    I've found these last few comments especially helpful. UMA, Power Tools and UMA Helper, I was having trouble figuring out what to use. I see now there is no one answer in that Power Tools and Helper each have their uses but for base customization bare bones UMA is what is needed.
     
  29. FargleBargle

    FargleBargle

    Joined:
    Oct 15, 2011
    Posts:
    770
    Good point. It looks like the latest version of Power Tools has taken this suggestion to heart, and is saving the recipe along with the avatar for you. The other thing I like to do is create a separate folder for each new avatar when saving, to keep all of the component files organized and in one place.

    I also found some instructions elsewhere on exporting saved prefabs for use in other projects. What do you need to include so that the prefab will work anywhere, whether UMA is installed or not? I'm not sure ALL of this is absolutely required, but it seems reasonable, and it worked in my tests, so I'll share it with you here:

    1. Everything in the saved prefab folder (prefeb, rig, textures, etc.)
    2. The Human Male or Human Female asset file from the Races folder (contains base model fbx)
    3. UMA's Normal-BumpSpec.shader and TransparentTwoSided.shader
    4. UMA's TwistBones.cs script

    and to use the default animation controller:

    5. The Locomotion controller AND Locomotion.cs script
    6. Idles.fbx and Runs.fbx

    Of course you can skip the last 2 if you have other animations, or a different controller you wish to use, but the first 4 look like a good idea. I'd also add the source files for any additional clothing or add-ons the prefab uses.

    Hope this helps.
     
    Last edited: Jan 13, 2014
  30. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,380
    Yes, Joen has been very responsive to user feedback.

    This is all in early stages, so don't hesitate to make suggestions as all of the guys associated with UMA are very interested in improving accessibility and usability. :)
     
  31. sandboxgod

    sandboxgod

    Joined:
    Sep 27, 2013
    Posts:
    366
    I finally got a chance to play around with this yesterday. This is what I did
    1. Load up UMACrowd example
    2. Turn that UMA Game object that stores everything into a prefab that contains the UMACrowd
    3. Pull that prefab into your map

    If all you want is one UMADynamic character just click 'Generate One' I believe on the UMACrowd

    Should provide a quick and dirty starting point. You might want to take their UMACrowd.cs and copy/paste into your project. Build on top of that. I'd rename the cs file namespace of course
     
    Last edited: Jan 13, 2014
  32. FargleBargle

    FargleBargle

    Joined:
    Oct 15, 2011
    Posts:
    770
    Good idea. And the big advantage to copying/renaming UMACrowd.cs is that you can then edit the crap out of it to get the specific character features you want. If you don't want any Orcs or Goblins, remove them. If you only want Orcs and Goblins, remove everything else. If you only want male or female characters, just say so in the script. And if you screw it up, you'll still have the original version as a backup.
     
  33. Krazeecain

    Krazeecain

    Joined:
    Apr 2, 2013
    Posts:
    7
    You guys are awesome, thank you FargleBargle for your valuable input. This whole thing felt a bit kludgy to me last night, but now I realize that this is all brand new stuff. I think I'll grab those tools you mentioned on the asset store, but part of me also thinks I should wait a while for the bugs to get ironed out... ah well, I've got plenty of backups of my project! Might as well play with this in the meantime. :D
     
  34. FargleBargle

    FargleBargle

    Joined:
    Oct 15, 2011
    Posts:
    770
    Thanks for the kind words. I think part of it is also that the basic UMA package was never intended to have all the bells and whistles end users might want. It was just supposed to provide a common framework developers could use to create interoperable content, whether that content consisted of new avatar races, clothing, and accessories, or helper tools, to assist end users in accessing its features. UMA is great on its own, if you have the programming skills to make use of it, but if you don't, or would just rather spend your time doing something else, there are the helper packs. I'm sure taking a wait and see approach might have its benefits, as even more add-ons and content will arrive, but we already have the tools to do a LOT with UMA, so don't be afraid to dive in now.
     
  35. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    449
    Really need some help here. I cannot determine the cause or source of this issue. This occurs on scene transitions.


    Destroying assets is not permitted to avoid data loss.
    If you really want to remove an asset use DestroyImmediate (theObject, true);
    UnityEngine.Object:Destroy(Object)
    UMA.UMAData:cleanAvatar()
    UMA.UMAData:OnDestroy()
     
    Last edited: Jan 14, 2014
  36. FargleBargle

    FargleBargle

    Joined:
    Oct 15, 2011
    Posts:
    770
    Last edited: Jan 14, 2014
  37. UnLogick

    UnLogick

    Joined:
    Jun 11, 2011
    Posts:
    1,745
    Unfortunately UMA doesn't keep tight track of which assets it created (and such which assets are scene assets that can be safely destroyed later).
    This error means that one of the assets that we call destroy on is actually a real asset database asset that we shouldn't call destroy on.

    I saw a lot of these errors when I made the Power Tools show uma characters in edit mode. Do you by any chance edit the source code while in play mode?
     
  38. Hedonsoft

    Hedonsoft

    Joined:
    Jul 11, 2012
    Posts:
    168
    I asked in the Pro Tools thread but maybe it belongs here. Is there a way to generate a prefab in game, after the custonization is done?
     
  39. Mikie

    Mikie

    Joined:
    Dec 27, 2011
    Posts:
    367
    Get this error when publishing web player
    Assets/UMA/Example/Scripts/UMACrowdRandomSet.cs(3,7): error CS0246: The type or namespace name `UnityEditor' could not be found. Are you missing a using directive or an assembly reference?

    I thought is was Power Tools. But it happens with just UMA by itself.
    4.3.3
     
  40. goat

    goat

    Joined:
    Aug 24, 2009
    Posts:
    5,182
    You'll need to rename the Product Company under Build Settings but it still won't compile and run on Windows Store or Windows Phone 8...I had intended myself to do more work soon and I could give more help but it looks like I'll be moving soon.
     
  41. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    449
    Occasionally I compile changes when in play-mode but usually halt play-mode shortly after as it'll likely generate errors if I don't anyway. Plus I'll probably disconnect from the server I'm connected to as well.

    I can't think of anything that I did that would cause this to happen. It occurs only when loading a scene =/ I'm pretty sure I'm not creating a new asset at runtime, at least not one I don't remove myself, so I don't know what is wrong.
     
  42. UnLogick

    UnLogick

    Joined:
    Jun 11, 2011
    Posts:
    1,745
    Hey Goat,

    If you download the latest update you'll notice that the product company data is gone. It still doesn't work for Windows Phone 8 I suspect it's a Mecanim error because it fails in the Create Avatar API call. We could still make it work with Legacy and perhaps Generic.
     
  43. UnLogick

    UnLogick

    Joined:
    Jun 11, 2011
    Posts:
    1,745
    As I said in the Power Tools thread it's part of the core UMA package, but I still wrote this particular code so I'll take care of fixing it.

    I'll get it fixed today.

    Cheers,
    Joen
     
  44. UnLogick

    UnLogick

    Joined:
    Jun 11, 2011
    Posts:
    1,745
    Every UnityEngine.Object is an asset, either a scene asset or a project asset. And UMA creates a lot of these in play mode. So the problem is that we want to destroy the scene assets to avoid leaking resources. But we don't want to destroy any project assets because then Unity becomes angry. :)
     
  45. UnLogick

    UnLogick

    Joined:
    Jun 11, 2011
    Posts:
    1,745
    UMA package update 1.0.8 with the following fixes:

    • Removed a reference to UnityEditor causing problems when building targets.
    • Fixed a bug in Skinned Mesh Aligner.
    • Added framework support for cancelling jobs.*
    • Added framework support for multi-material meshes.*
    * There is currently no tools to support these two features, but the necessary framework changes to support this have been added.

    Cheers,
    Joen Joensen - UnLogick
     
  46. goat

    goat

    Joined:
    Aug 24, 2009
    Posts:
    5,182
    I'll download later...I'm going swimming to see if I can inspire myself to do some work this week...
     
  47. CaptainChristian

    CaptainChristian

    Joined:
    Apr 3, 2013
    Posts:
    100
    I am using the power tools and removed locomotion as animator for performance reasons. Since it is null, I am getting errors from the UMACombineMeshCoroutine. I tried to find and solve this issue on my own, butI am stuck. How can I remove it and clean all subsequent calls? Note: I removed Animator script from the animation controller in UMADynamicAvater, UMAData and the gameobject itself.
     
  48. UnLogick

    UnLogick

    Joined:
    Jun 11, 2011
    Posts:
    1,745
    Currently UMA only works with Mecanim Humanoid, this means that having an Animator is mandatory. Bypassing this limitation requires downloading the full source from the GitHub repository and building the DLL files yourself.

    If you desire to do so please join the skype channel and let's add an enum that allows toggling between Mecanim Humanoid, Mecanim Generic and Legacy Animation.

    Edit: If all you want to do is replace Locomotion with your own state machine that is possible in the latest version from asset store.
     
  49. CaptainChristian

    CaptainChristian

    Joined:
    Apr 3, 2013
    Posts:
    100
    I want to do whatever is needed to get ~10k uma characters in the scene without ever going below 60 fps. Maybe you can give me some advice in how to achieve this.
     
  50. UnLogick

    UnLogick

    Joined:
    Jun 11, 2011
    Posts:
    1,745
    Incoming Commercial!

    UMA Power Tools contains a threaded version of the UMAGenerator. It even has a Log Spikes option that you can use to monitor that the Generator doesn't impair framerate too much. It also allows you to bake away additional bones so your system doesn't waste time on needless skinning/animation.

    It also allows you to store characters as a prefab, which is useful if you want to spawn multiple instances of the same character.

    Even better UMA Power Tools are on a discount right now, get it for only $10! Regular price $30.

    https://www.assetstore.unity3d.com/#/content/14249

    Spawning 10k UMA characters is not a trivial task.
    First off it requires you to compromise greatly on texture quality! Secondly you may want to go in and adjust which bones are baked away, the default setting is keep all Mecanim Bones (even the optional ones) as well as the extra forearm twist bone. You may want to remove some optional bones like fingers, or just some of the finger joints. Even with the bone baking features of the Power Tools you will need a beast of a machine to show all 10k characters on screen at the same time with that target framerate!