Search Unity

UMA - Unity Multipurpose Avatar on the Asset Store!

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

  1. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Yeah, I'll add the male/female elf races to the next update. I'll make a male version later in the afternoon and post it
     
    magique likes this.
  2. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Here's the elf male - have fun.
     

    Attached Files:

    magique likes this.
  3. Shadex

    Shadex

    Joined:
    Dec 18, 2013
    Posts:
    89
    I'm running UMA 2.7 on unity 2019.2.2f1 . I remember reading at the time UMA was having problems with 2019.3 or something. I'm wondering what version of UMA and Unity is the most stable / best version to run atm and how should i go about upgrading UMA, since i'm pretty out of date. (I think you got rid of race).

    Also what am i going to need to do so that it doesn't break my main character? Like any major chances to the Dynamic Avatar Script? I'm mainly using stuff from Arteria3d. I seriously appreciate any help/answers/advice. I read the updates and looked this forum and couldn't find the answers.
     
  4. mattseaton22

    mattseaton22

    Joined:
    Sep 12, 2019
    Posts:
    43
    I have one small suggestion regarding the UMA physics avatar. I think instead of making you set player and ragdoll layer numbers explicitly on the script, it makes more sense to grab the character's layer and use whatever that is for playerLayer. In UMAPhysicsSlotDefinition.OnSkeletonAvailable, I set

    Code (CSharp):
    1. physicsAvatar.playerLayer = umaData.gameObject.layer;
    Also instead of setting a number for a separate ragdollLayer, why not just use

    Code (CSharp):
    1. physicsAvatar.ragdollLayer = LayerMask.NameToLayer("Ragdoll");
    Then we can just create a layer called Ragdoll and it doesn't matter what number it is. You might even be able to create it from script if it doesn't exist.

    This way, we can have characters with ragdolls on multiple layers, instead of forcing them all the be on the playerLayer. For example I might have a weapon the player has but I only want it to collide with enemies on the Enemy layer, not other friendly characters on the Player layer.
     
  5. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    The most current stable version of UMA is 2.9, it's available on the Asset Store. The current "highest supported" version is 2019.2, but I've ran it on 2019.3 beta, and it was fine. I'll test it with the shipping 2019.3, whenever that is released.

    I don't think it will break your main character, though you'll want to be sure you don't write over the Asset Index ("AssetIndexer.asset") or you'll need to rebuild your global library. Of course, if you made changes to the races, or the slots/overlays/DNA, they will get overwritten when upgrading - unless you've created new ones and put them in your own folder (always the best idea).
     
  6. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Sounds good - I'll look at doing that in the current version in development.
     
  7. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Added to 2.10:
    CollisionMatrixFixer will read the current layermask settings for Ragdoll and NoCollisions, and use those if found.
    Added "AutoSetLayers" property to UMAPhysicsAvatar. When set, the player layer will be the current gameobject layer, and the Ragdoll layer will be read from the layermask settings.
     
  8. Shadex

    Shadex

    Joined:
    Dec 18, 2013
    Posts:
    89
    Thanks for the answer. Yea, i haven't setup race or anything like that. I left all of that till later. I thought i read in the patch notes that you got rid of races? Are the slots still bound to specific models? Like HumanMaleHighPoly model has different clothing options then HumanMale_OBM or HumanMaleDCS? If rebuilding the library will allow all models to wear all clothes then i'll happily rebuild the library. And thanks again for answering.
     
  9. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    We've definitely not gotten rid of races. Slots are bound to races, but races can be marked "cross compatible" with each other, so they can use each others slots. Slots aren't magic though, they have to fit the race to be able to be used by that race. The Human male and Human Male High Poly can use each others slots just fine, even though the geometry is different, because of the way they are rigged. I have no idea about HumanMale_OBM, if it is rigged the same, and occupies basically the same volume, then it should work.
     
  10. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    @Jaimi I need help understanding something. I'm testing a scene with just a female avatar that has no slots filled at all. It's just the base model. If I look at the FBX model for this it has something like 6.2k tris. However, when I run the scene, the scene reports over 32k tris being used. Why does the mesh get inflated by so much? If I add a pony tail then it inflates up to over 80k tris.
     
  11. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Most likely this is the shadows, not the model. Turn off shadows, and see if it drops down.
     
  12. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    Yeah, it looks like a great deal of the inflation is due to shadows.
     
  13. ggastonuy

    ggastonuy

    Joined:
    Nov 27, 2018
    Posts:
    5
    I am having this problem following uma 201 - creating content series, all clothes appear to be with wrong orientation, reading youtube comments, two other people may be having the same problem.

    This image shows the shades and shirts from the video series.

    I've got unity version 2019.2.15f1 and blender 2.79b

     
  14. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Yes, this will happen if you use the wrong fbx export parameters. Look at the "UMAContentCreation.pdf" in the UMA folder for the correct parameters for 2.79 (and 2.8+). If you are trying to import from the Blend itself, I believe Unity change the automated exporter for Blender. It's best to export to FBX yourself.


     
  15. ggastonuy

    ggastonuy

    Joined:
    Nov 27, 2018
    Posts:
    5
    Thanks that worked.



    By the way, I had to follow the pdf's blender 2.8 instructions regarding armature's axis (keeping the objects rotated 180 degrees).

     
    Jaimi likes this.
  16. mattseaton22

    mattseaton22

    Joined:
    Sep 12, 2019
    Posts:
    43
    Thanks, Jaimi. You're really on top of things. Thanks for all your hard work. This is just a hobby for me, but I'd like to publish a game one day and tools like this make it so much easier.

    Also how will this work? The ragdoll is built from the callback in the slot in the utility recipe and the layers are set immediately. How will I be able to set this new property before that happens without modifying the slot definition script?
     
    Last edited: Jan 29, 2020
  17. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Alas, you would have to modify the script for now. I'll think about a better way to handle this.
     
  18. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    FYI - UMA 2.10 will support 32 bit mesh buffers. This consumes more memory (for the various static build buffers), and will have a small performance hit. Due to various reasons (static buffers), I have limited the vertex count to 256K vertexes. this is enabled by adding the define UMA_32BITBUFFERS to your player settings. In a later version, I will parameterize the max vertex size on the generator.

    Note: having very dense meshes usually gains very little. It is recommended you only enable this if you reallly, really need it.
     
    hopeful likes this.
  19. JGameMaker92

    JGameMaker92

    Joined:
    Oct 15, 2014
    Posts:
    96
    I just ended up ditching UMA and using Adobe Fuse characters instead. Trying to get UMA characters into uMotion was frustrating without a FBX with all my runtime modifications
     
  20. Creiz

    Creiz

    Joined:
    Jun 6, 2017
    Posts:
    130
    What are you trying to add to the skeleton at runtime? I use uMotion quite effectively for simple edits and I use Blender for actual animations with zero issues.
     
  21. JGameMaker92

    JGameMaker92

    Joined:
    Oct 15, 2014
    Posts:
    96
    If I make adjustments to a UMA character during runtime such as making him really tall or giving him a really big head there's no FBX to work with that shows those adjustments so the animations I make won't line up. It's just been a bad experience in general
     
  22. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    UMA is for making extremely efficient models and creating them on the fly from parts. It sounds like you really just wanted a design tool to design models, so maybe Fuse is the best fit for you.
     
  23. Creiz

    Creiz

    Joined:
    Jun 6, 2017
    Posts:
    130
    Ah, gotcha. Yes, that's a limitation from Unity itself, not UMA. I too had a model that changed musculature and with it, the bones of the arms and shoulders changed position to accomodate.

    Unfortunately, there's no such thing as changing armature position via blendshapes.

    For simple things, like Huge Head or Long Arms you can use a SkeletalDNA asset. It works fairly well.

    But for precise positioning and scaling of bones, it's another issue altogether: You need to re-weight the mesh and Unity simply can't do that. It's not UMA's fault.
     
  24. metafunnel

    metafunnel

    Joined:
    Jun 18, 2015
    Posts:
    5
    I am a beginner so I would like to kindly ask to help me out and tell where you have insert the code.
    Thank you.
     
  25. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Oh yes, I should add this to the base code. This seems to happen a lot.

    Anyway, just create a new csharp file, name it "WebGLEditorScript" and paste that over the top of everything in the file.

    Note: I realized that you may not know what that does. That creates a new menu item that you can run to set that property.
     
    Last edited: Jan 30, 2020
  26. qazik123

    qazik123

    Joined:
    Jan 30, 2020
    Posts:
    6
    Hello,
    I just finished alternative head for UMA base character, which works fine, but what I want now to improve is texture color of my model on unity scene. On the enclosed picture you can see a big difference between the model color and the texture image color. Is there any method/tutorial/anything how can I bring the head color to the image color as much as possible?
    Thanks for help
    uma.png
     
  27. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Are you using one of the existing UMAmaterials? If not, check the channel types in the UMAMaterial, and make sure your albedo texture is set to "diffuse texture" type.

    Also, the "color" in the recipe will affect the texture color. Make sure it is white with full alpha. (1,1,1,1).

    Another thing is to make sure your normal maps are marked as normal maps correctly.

     
  28. JGameMaker92

    JGameMaker92

    Joined:
    Oct 15, 2014
    Posts:
    96
    Also UMA is taking up 1.71GB of my collab cloud storage so yeah it's gotta go
     
  29. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    UMA is not even that large. This is a community project, and we all try to help each other. But I'll not be seeing your posts anymore.
     
    xerokwan likes this.
  30. UnLogick

    UnLogick

    Joined:
    Jun 11, 2011
    Posts:
    1,745
    There is only one generic way to make animations line up correctly when you resize parts of the model and that is animating the targets and using an ik solver.

    If what you're after is perfect animations worthy of Triple-A cutscenes or movies, then I recommend using uma to generate the model, exporting the model from Unity into your animation tool of choice and applying your normal workflow there making custom animations for the character as you normally would.
     
  31. metafunnel

    metafunnel

    Joined:
    Jun 18, 2015
    Posts:
    5
    Thank you very much, got it to work.
     
  32. metafunnel

    metafunnel

    Joined:
    Jun 18, 2015
    Posts:
    5
    Is there any written procedure / algorithm to follow in order to make UMA work in a webgl build?
    Works in editor but I was not so lucky to make it work yet on a web page. Any help would be much appreciated.
    Thank you.
     
  33. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    There are a lot of hoops to get things working in WebGL.
    Besides adding the embedded resources (above), you will have (usually) a bunch of web configuration to do. It should be documented in the webgl section of the documentation.
    I use a windows server for testing. I use the following web.config to enable UMA to work:

    Code (CSharp):
    1. <?xml version="1.0"?>
    2. <configuration>
    3.   <system.webServer>
    4.     <staticContent>
    5.     <remove fileExtension=".json" />
    6.     <mimeMap fileExtension=".json" mimeType="application/json; charset=UTF-8" />
    7.     <remove fileExtension=".unityweb" />
    8.     <mimeMap fileExtension=".unityweb" mimeType="application/octet-stream" />
    9.       <remove fileExtension=".mem" />
    10.       <mimeMap fileExtension=".mem" mimeType="application/octet-stream" />
    11.       <remove fileExtension=".data" />
    12.       <mimeMap fileExtension=".data" mimeType="application/octet-stream" />
    13.       <remove fileExtension=".bundle" />
    14.       <mimeMap fileExtension=".bundle" mimeType="application/octet-stream" />
    15.       <remove fileExtension=".memgz" />
    16.       <mimeMap fileExtension=".memgz" mimeType="application/octet-stream" />
    17.       <remove fileExtension=".datagz" />
    18.       <mimeMap fileExtension=".datagz" mimeType="application/octet-stream" />
    19.       <remove fileExtension=".unity3dgz" />
    20.       <mimeMap fileExtension=".unity3dgz" mimeType="application/octet-stream" />
    21.       <remove fileExtension=".jsgz" />
    22.       <mimeMap fileExtension=".jsgz" mimeType="application/x-javascript; charset=UTF-8" />
    23.     </staticContent>
    24.   </system.webServer>
    25. </configuration>
     
  34. davidellams

    davidellams

    Joined:
    Mar 26, 2018
    Posts:
    2
    Hi, I am new to UMA, it appears fine in the editor, I followed the docs and have my avatar standing on top of a block but when I build it for Windows, the avatar is missing, only the block is there.

    What am I doing wrong?

    Any help would be really appreciated thanks. :)
     
  35. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Open the global library window, and choose the option to "Add build refs". Then build again.
     
  36. Chandlerya

    Chandlerya

    Joined:
    Sep 4, 2018
    Posts:
    9
    Hello,
    I have a question on DCS. I created a dwarf race and it works fine, but the sliders don't seem to have any limits, I had created the dynamic DNA ranges for this race, but the sliders don't seem to be limited to using those ranges. Is there something that needs to be called when the sliders are generated so they are limited to the ranges i set in the dynamic DNA ranges?
     
  37. Creiz

    Creiz

    Joined:
    Jun 6, 2017
    Posts:
    130
    What kind of sliders are you using? Zero One? Zero Zero One? Raw?

    I set mine to Raw. They generally work no problem.
     
  38. Chandlerya

    Chandlerya

    Joined:
    Sep 4, 2018
    Posts:
    9
    I'm using Sehlor's UMA for UMMORPG, and it looks like he only loads the presets into the sliders and leaves the slider range at the default. Anyone kow what I would need to add to read in the slider ranges as well as the presets? current code:
    // Hook DNA Update
    uma.CharacterDnaUpdated.SetListener((data) =>
    {
    umaDna = uma.GetDNA();

    // update the list if it have no elements
    // or different elements than before.
    if (!slidersPopulated || totalSliderCount != umaDna.Count)
    {
    sliders.Clear();

    foreach (Transform toDelete in sliderItemContent.transform)
    Destroy(toDelete.gameObject);

    int count = 0;
    foreach (var val in umaDna)
    {
    var go = Instantiate(sliderItemPrefab);
    SliderItem item = go.GetComponent<SliderItem>();
    var fieldNameWithSpaces = Regex.Replace(val.Key, "(\\B[A-Z])", " $1");
    item.dnaName = val.Key;
    item.name = "slider_" + fieldNameWithSpaces;
    item.titleText.text = fieldNameWithSpaces;
    item.dnaSlider.value = val.Value.Value;

    item.dnaSlider.onValueChanged.SetListener((evnt) =>
    {
    umaDna[item.dnaName].Set(item.dnaSlider.value);
    uma.BuildCharacter();
    uma.ForceUpdate(true, false, false);
    });

    item.transform.SetParent(sliderItemContent.transform);
    count++;

    sliders.Add(item.dnaSlider);
    }

    totalSliderCount = count;
    slidersPopulated = true;
    // dnaDropdown.AddOptions(options);
    }
    else
    { // set sliders float value.

    }
    });

    initialized = true;
    }
     
  39. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    You should be able to get to the ranges from the RaceData -

    DNARangeAsset[] dnaRanges = uma.activeRace.raceData.dnaRanges;

    You could look the DNARangeAsset up by scanning through the array.
    It would probably be more efficient to load them into a HashTable or Dictionary first, and then look them up.
    But since it appears to be something that happens during setup, it's likely not a problem.


     
  40. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Work on 2.10 continues, we are getting closer.
    Added the ability to filter on recipes that have not been added to the addressable groups, and added a button to make them addressable (or update, if they are already addressable).

    Full feature list of 2.10 after the pic.

    NewGlobalLib3.png

    What's new in 2.10 (upcoming - Release candidate soon)
    Minimum supported version is 2018.4

    Support for Addressables
    Automated generation of addressables groups
    Automated cleanup of slots/overlays/textures
    Significantly reduced memory overhead
    Build requests are queued up with all relevant data
    Added recipes to Addressables. If you do this, you must load them before access (they are all labelled by recipe and with 'UMA_Recipe')
    Will now Keep shared group on regeneration.
    Can now filter on non-added recipes.
    Can now individually choose to add a recipe to addressables, or to update a recipe.
    Addressables are now optional (Add UMA_ADDRESSABLES to the player define). Only addressable bundles are supported though.

    New global library window
    New functions to mark items by various parameters
    New Addressables Menu to generate items
    New Ability to remove unused slots/overlays using the addressable groups
    New Ability to remove items from library by dropping a folder onto the lib

    Added a label field to recipes to allow the user to override addressable label names
    Moved Mesh Hide mask creation to mesh building, to address sync issues
    Updated DNA checks to pull from global library instead of searching resources. Fixes an issue on android
    When the animator is rebuilt, the layer weights are saved and restored now
    LoadFromRecipeString now has a flag to clear the existing wardrobe when loading
    Added SetRawColor function (and code) so you can pass in an OverlayColorData and the sytem won't monkey with it
    UMAMaterial Changes
    Added checkbox to use the overlay multiplier color as the background for alpha blended overlays.
    Added a multiplier to allow adjusting that color. This improves the look of hair (gets rid of banding on the edges)
    Added a "Non Shader Texture" flag to the texture channels. This allows a texture to be combined, but it will not be set on the material.
    Added Animation Clip Target Renamer to help with renaming targets for UMAs when the animation is broken
    Reworked compatible races recipe loading, so they are figured out in the index at startup
    Context changes
    Created a new UMAGlobalContext context that pulls everything from the global library.
    (This removes the need for the various libraries - racelibrary, slotlibrary, etc.)
    All access to UMA data now goes through the contexts.
    Created new prefab UMA_GLIB using the global context. It is recommended to switch to this version in 2.10.
    LOD Improvements
    Added "Maximum LOD Level" to SlotDataAsset, and Suppressed flag to SlotData for use by LOD systems
    Added "Use Slot Dropping" to UMASimpleLOD, this will suppress slots based on the fields above.
    By default, the eyebrows, eyelashes, and Inner Mouth are set to drop after LOD 0. Eyes are set to drop after LOD 1.
    Ability to hide slots by Slot tag.
    Added support for 32 bit index buffers (large meshes). To enable, add UMA_32BITBUFFERS to the player defines. This is experimental at this time.
    Verify button in Slot Builder Window will detect UV Coordinates that are out of range.
    Added Elf male and Elf female races with base race recipes.
    CollisionMatrixFixer will read the current layermask settings for Ragdoll and NoCollisions, and use those if found.
    Added "AutoSetLayers" property to UMAPhysicsAvatar. When set, the player layer will be the current gameobject layer, and the Ragdoll layer will be read from the layermask settings.
    Added Shader Parameter Mapping to UMAMaterial - UMAMaterials can now map shared colors to color properties in the generated material. Useful for shaders that have extra color parms (like skin & hair shaders).
    Added "AtlasResolutionScale" to DynamicCharacterAvatar. Using this, you can lower the atlas resolution for specific avatars, for example ones used for icons, etc. Warning: UMASimpleLOD can override this, so don't use in conjunction with that component.
    Added "Resources Only" flag to UMA recipes. Checking this will skip adding this recipe, and it's slots, overlays and textures to Addressabe groups.
    New Menuitem on UMA Menu: "WebGL/Enable Embedded Resources". This will turn on embedded resources in WebGL, allowing UMA to work right in WebGL.
    Overlay coordinates can now be specified in UV range (0..1) in addition to absolute range. This should make it much easier to handle Unity converting textures to square on mobile, or the need to resize textures for performance.
    New Detail Normal map texture channel type, allows combining of normal maps in UMAMaterials.
    New Non-Shader texture channel type, allows a texture to be accumulated on the atlas, but not sent to a material.
    Various bug fixes & changes
    Fixed various overlays that were missing textures or had the wrong count
    Fixed some scenes that had broken over time
    Sometimes a shader would not be compiled correctly.
    Reworked recipe editor and disallowed duplicate mesh hide assets.
    Fixed bug where you couldn't add a Wardrobe Collection using SetSlot before Start() was called on the DCA.
     
  41. SickaGames1

    SickaGames1

    Joined:
    Jan 15, 2018
    Posts:
    1,270
    I followed @SecretAnorak tutorial for UMA to Invector Integration, but it only moves and doesn't animate. Anything specific that I should do instead to get this to work? Edit: I am using the Shooter 2.5 template.
     
  42. arteria

    arteria

    Joined:
    May 31, 2007
    Posts:
    2,189
    As a special thank you to this wonderful UMA community, and Dev support, we thought we would offer uma users a free single costume pack offer -

    Choose any single costume uma pack from our store for free

    Browse below link
    https://arteria3d.myshopify.com/collections/uma

    and email arteria3d@live.co.uk with your selection

    Also email the code '2020' to purchase all UMA Costumes on our site for just $100. Access to over 40 packs

    Steve
     
  43. JDSweet

    JDSweet

    Joined:
    Sep 4, 2018
    Posts:
    12
    How would I go about saving an UMA-generated character to disk as a 3D model that can be imported into Blender for custom hand-optimization?
     
  44. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Its not designed for that. However, i believe unlogicks fbx exporter would work. Note that its not a UMA after that, so you cant swap clothes or adjust bones unless you write all that code yourself.

    Note: The source for the included models is up on github. Willb also include blends in his packages as well.
     
  45. Deleted User

    Deleted User

    Guest

    Hey, I remember that UMA brings the character in a T-Pose when it's is updating the DNA or the Race, correct me if this is wrong...

    However, I would like to use this T-Pose to generate my ragdoll after UMA is changing the Race and DNA, so my question is where I find the function for this T-Pose, I could just add a T-Pose animation to the animator but I thought making it the same how UMA does would be maybe a better case.

    Thanks for your time, all the best
     
  46. xerokwan

    xerokwan

    Joined:
    Jun 23, 2017
    Posts:
    4
    Hi, I read that in the documentation that we can directly download any specific asset or assets of certain type through the DynamicAssetLoader, not just UMA assets. So I have a few questions before moving my game to UMA2, wish you will help me out on this:

    1. By using "DynamicAssetLoader.Instance.LoadAssetBundle(assetBundleToLoad, loadingMessage, loadedMessage)" to download assetbundle files on the server, my question is where are the files stored? Or they all need to be downloaded again next time starting the app?

    2. For example I have a prefab (which only contain a cube and a material in this case, the type I believe is "UnityEngine.GameObject"), set and built into an assetbundle by UMA AssetBundle Manager, now I can load the assetbundle file from DAL, but how can I instantiate it? Or if DAL cannot do that, how can I get the pointer of the loaded assetbundle?

    3. Lastly, like Question 2 above, but this time my prefab contains a Dynamic Character Avatar, a bone structure built by bone builder and other stuff? how can I instantiate it after downloaded the assetbundle.

    Thank you very much.
     
  47. UnLogick

    UnLogick

    Joined:
    Jun 11, 2011
    Posts:
    1,745
    I just doubled checked for good measure, it's been a while since I exported a uma character, but it still works.

    So the key features of my exporter is that makes it uniquely capable of exporting uma characters, unlike the other fbx exporters
    * It supports Skinned Meshes, several fbx exporters fails here
    * texture exports it extracts diffuse, metallic and normal map textures from the original material, this is useful for uma since the atlas layout is dependent on the entire recipe.
    * Has the option to export T-Pose.

    When playing around with it in Unity 2019.3 I found some minor issues with how the tool sets up unity import of the fbx if you place it inside the project, but that doesn't affect the export one bit. These issues can easily be corrected by hand but I will be releasing a new version targeting the newer versions of unity.
     
    Last edited: Feb 16, 2020
  48. UnLogick

    UnLogick

    Joined:
    Jun 11, 2011
    Posts:
    1,745
    Unity in their infinite wisdom decided to make the method internal. Anders Hejlberg in his infinite wisdom decided to let reflection invoke internal methods.
    Code (CSharp):
    1. public static class AnimatorExtension
    2. {
    3.     public static void SetTPose(this Animator animator)
    4.     {
    5.         var WriteDefaultPoseMethod = typeof(Animator).GetMethod("WriteDefaultPose", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic, null, Type.EmptyTypes, null);
    6.         if (WriteDefaultPoseMethod == null)
    7.         {
    8.             throw new Exception("Unity changed the internal method to set TPose, you need to update the reflection code.");
    9.         }
    10.         WriteDefaultPoseMethod.Invoke(animator, null);
    11.     }
    12. }
     
    TeagansDad and Deleted User like this.
  49. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    I don't have answers for you, since I didn't work on that part of the code. But the DynamicAssetLoader (and raw asset bundles) are being deprecated in favor of using Addressables in Release 2.10. You can of course, use asset bundles if you download them yourself, and load the slots/overlays/etc into the Global LIbrary (Asset Index) (using UMAAssetIndexer.Instance.ProcessAddressableUpdates(false, object)) ;

    If you go the addressables route, you can download addressables from your server using the following code:

    op = Addressables.DownloadDependenciesAsync(Labels, Addressables.MergeMode.Union, false);
    op.Completed += Op_Completed;

    Passing the labels that you want to download. These are cached locally using your specific addressables settings.

    You can manually load items into the library using UMAAssetIndexer.Instance.LoadLabelList({list of labels}). This will return an AsyncOperationHandle<Object>, which has a completed event just like DownloadDependenciesAsync. That object acts like a handle you can use to also unload items.
     
    xerokwan and hopeful like this.
  50. xerokwan

    xerokwan

    Joined:
    Jun 23, 2017
    Posts:
    4
    Hi Jaimi, million thanks to your reply and you've already helped a lot for pointing me the right direction, I will do some research for that and give it a try. Thanks again.