Search Unity

UMA - Unity Multipurpose Avatar on the Asset Store!

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

  1. Bantichai

    Bantichai

    Joined:
    Nov 6, 2016
    Posts:
    138
    Okay no worries, thanks @UnLogick looking forward to when it drops.
     
  2. umutozkan

    umutozkan

    Joined:
    Oct 30, 2015
    Posts:
    406
    Props like weapons etc. are not part of UMA wardrobe system. In theory, you need to parent the weapon to the hand bone by a script when you "equip" your weapon.

    You need to be careful about changing the scale of the hand bone afterwards though (like changing the hand size DNA slider). That would also scale the weapon which you probably don't want.

    I always thought the base model should have equip slots that compensates for DNA changes and always scaled 1,1,1. Maybe I'll do that with my custom o3n races at some point :)
     
  3. Prod212

    Prod212

    Joined:
    Dec 13, 2017
    Posts:
    17
    Hi, I have a problem with the character because as you can see on the image, one has a different shading than the other. The one on the right is the raw generated model with the fbx file and the one on the left is the character generated from UMA. We are trying to achieve the raw generated model's look but for some reason UMA makes the shader appear like it shows on the left.
     

    Attached Files:

  4. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    If you look at the generated UMA in the inspector, is it using the pixelated shader like you expect?
     
  5. Deleted User

    Deleted User

    Guest

    Hey im working with ProdiGy2121 on the same project.
    We using the Standard Unity Shader and also when UMA gets generated then we have a Instance of this Unity Shader on the UMA Mesh.
    So it looks like we generate the UMA correctly.

    We also have try it with a different shader and the result is still the same.
    It looks like UMA automatically apply some edge correction.
     
    Last edited by a moderator: Jul 24, 2018
  6. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    It will do that it if you apply a "seams mesh" at the time of slot creation - it pulls the normals from the Seams mesh and applies them to the slots (so that the normals that get messed up when you split the mesh are corrected).

    So - I would check the FBX you are using for the seams mesh when you build the slot, make sure that it isn't generating new normals when you import it. If the Seams Mesh looks right in the scene, then try regenerating the slots. Not really sure what else could cause that. Actually, if you're looking for the pixelated look, you probably don't need a seams mesh, now that I think about it.
     
    Deleted User and hopeful like this.
  7. dudedude123

    dudedude123

    Joined:
    Aug 24, 2013
    Posts:
    128
    The DCA keeps floating when I run the game



    2018-07-25_15h01_56.png
     
  8. daydreamsoftwaredev

    daydreamsoftwaredev

    Joined:
    Jul 26, 2018
    Posts:
    1
    Hello guys,
    I'm working on a PS4 title and I have already integrated UMA on it working amazing on PC platform.

    Does anyone knows if its compatible with PS4? I'm having some crashes on testing when deploy to the PS4 and I guess it could be the configuration of UMA on this platform.

    Has anyone already run any UMA project succesfully on a PS4? if so, should we make any additional steps when building to PS4 package?

    Thanks you all for your time!
     
  9. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    I have seen this before when I had dueling colliders - is there only one collider on the generated object? If not, look for something that might be adding one. (UMA will add one itself if you have the "capsulecolliderrecipe" in the Additional Utility Recipes - so if you have one of your own on a different game object, they could be interfering with each other).
     
    hopeful likes this.
  10. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Might be texture memory related - try going in and setting the "initial scale factor" to something like 8. That will make the UMA's look terrible by generating really small textures, but you'll know if it's mem related at that point.
     
  11. dudedude123

    dudedude123

    Joined:
    Aug 24, 2013
    Posts:
    128
    I only have the capsule collider on the DCA and the mesh collider on the ropes corners and ring canvas
     
    Last edited: Jul 27, 2018
  12. silentneedle

    silentneedle

    Joined:
    Mar 14, 2013
    Posts:
    280
    I've encountered a problem with StateMachineBehaviours. Every time when I update a slot every StateMachineBehaviours gets reset (including all variables), which also causes OnStateEnter/Update called multiple times without transitioning out.

    Is anyone else able to reproduce this problem?
     
  13. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,685
    Typically the source of the "multiple colliders" error is when UMA creates a capsule and the character controller also creates a capsule. Just mentioning that in case that particular source was overlooked.
     
  14. dudedude123

    dudedude123

    Joined:
    Aug 24, 2013
    Posts:
    128
    I don't have character controller on the DCA


    Is there any way I can load it without the capsule collider?
     
    Last edited: Jul 28, 2018
  15. thedude22

    thedude22

    Joined:
    Jun 26, 2016
    Posts:
    9
    Has anyone successfully set up the UMAMaterials to use the HD render pipeline? I got the guy to show up but the color was way too dark and flickering for some reason.

    I'm not a fan of the mask and detail maps in the new materials. It adds a lot more texture work. Seems to me it should let you input standard textures and generate it's own weird texture in the background.
     
  16. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,685
    UMA is independent of the HD pipeline - or at least I can't think of any problem areas - so you should be able to set it up for use with a HD shader, just the same as you would use any custom shader (like a toon shader) with UMA.

    Information about HDRP is not exactly centralized right now (or if it is, I haven't found it), but I assume they still use _MainTex and the rest.

    Unless your goal is to fiddle with HDRP, you might want to go with LWRP which I hear is further along, or just stick with the standard shader for now, since HDRP isn't expected to be ready till early 2019.
     
    Last edited: Jul 28, 2018
    P_Jong likes this.
  17. kenamis

    kenamis

    Joined:
    Feb 5, 2015
    Posts:
    387
    The issue last time I checked was with the runtime atlassing in UMA. The render pipeline callbacks aren't there yet to do the atlassing the same way UMA does it currently. I haven't checked if it's possible in LW. It might be since it is further along.
     
    xiangshushu, P_Jong and hopeful like this.
  18. Firlefanz73

    Firlefanz73

    Joined:
    Apr 2, 2015
    Posts:
    1,316
    Hello,

    I want to have some "headless uma". I tried to add no head Slot, but that gave me many Errors afterwards.
    So now instead of supress ist instancing, I want to disable the renderer, but there are multiple?

    Code (CSharp):
    1.             Transform neck = umaData.skeleton.GetBoneGameObject(UMASkeleton.StringToHash("Neck")).transform;
    2.             neck.gameObject.GetComponent<Renderer>().enabled = false;
    3.  
    Does not work. Do I Need something like ...for each renderer in neck.GetComponentsInChildren… enabled = false

    or is there a simpler way? Using Unity 2017.4.8 and latest UMA.

    Thanks guys :)
     
  19. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,685
    Maybe you could make a "headless" head slot that instead of containing the whole head only contains a bit of mesh for the seam with the torso slot (if that is required)?
     
  20. Miwaku

    Miwaku

    Joined:
    Mar 27, 2017
    Posts:
    1
    Hello,
    I'm working on making a second view of the character to put in the inventory UI, but I have some problem with
    I have attached a render texture to a camera showing the UMA currently played, but when I try to make the background of the camera transparent (by reducing its alpha to 0), the UMA gets trensparent too, except for its eyes and mouth.
    If I insert another game object, I can see it (and parts of the UMA texture with it).
    I don't know much about how UMA renders, so if anyone could help me, I'd be grateful.
    Thanks.
     
  21. evanidul

    evanidul

    Joined:
    Nov 20, 2014
    Posts:
    6
    Hey guys!
    I'm new to UMA. Just purchased some content packs and was wondering how I would go about adding random weapons to UMA characters during runtime. Any quick and dirty way for doing this? Just wondering if I missed some documentation or a youtube tutorial somewhere. I just purchased some weapon assets from the store, then realised that I can't attach the weapon as I normally would to a non-uma character.
     
  22. umutozkan

    umutozkan

    Joined:
    Oct 30, 2015
    Posts:
    406
    Hi, this is not UMA specific but you need to get the hand bone and parent the weapon to that hand bone. If using mecanim humanoid, I'd get the animator and get the hand bone from there. Otherwise you might just search the hand bone with its name under the character. After getting that, you just make weapon's parent the hand bone.

    Depending on the weapon you might need some IK (especially fro 2 handed stuff).
     
  23. Harekelas

    Harekelas

    Joined:
    Feb 3, 2015
    Posts:
    864
    Hey guys, I'm planning using UMA as my projects character system, I see that UMA PBR is not available anymore in asset store, does this mean UMA2 now supports PBR materials internally?
    Also, is there a tutorial (text or video) about making custom base models for base slots? The rigging instructions and stuff like that? I found the links in the wiki about this section are no longer available.
     
  24. evanidul

    evanidul

    Joined:
    Nov 20, 2014
    Posts:
    6
    Wow, got that working fast. Here's what I did:

    Code (CSharp):
    1.     IEnumerator equipRandomWeapon() {
    2.         yield return new WaitForSeconds (2);
    3.         Transform rhandTransform = animator.GetBoneTransform (HumanBodyBones.RightHand);
    4.  
    5.         GameObject weapon = weapons [Random.Range (0, weapons.Length)];
    6.         GameObject newWeapon = Instantiate (weapon, rhandTransform) as GameObject;
    7.         newWeapon.transform.localScale = new Vector3 (0.35f, 0.35f, 0.35f);
    8.         newWeapon.transform.localPosition = new Vector3 (-0.053f, -0.058f, -0.036f);
    9.         newWeapon.transform.localEulerAngles = new Vector3 (-23.777f,  122.154f,   -278.15f);
    10.     }
    That totally made my day. Thanks a bunch!!
     
    P_Jong, umutozkan and hopeful like this.
  25. Deleted User

    Deleted User

    Guest

    Hey we have follow this steps and it is working like it should now, the mesh have perfectly inherit his edges, thank you!
     
    Jaimi and hopeful like this.
  26. Prod212

    Prod212

    Joined:
    Dec 13, 2017
    Posts:
    17
    ok thx for the response, this solved the problem; i just removed the seams mesh, thx. But now we have a problem with clothing as you can see the shirt is overlapping the pants on the image provided. Is there any way to solve this issue?
     

    Attached Files:

  27. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    I can't tell what is wrong from that picture. If you're wanting part of the shirt to disappear when you add the pants, then you can create a "meshhideasset" that will hide polygons of the shirt. Is that what you are wanting to happen? If not, let me know.
     
  28. yusue899

    yusue899

    Joined:
    Jan 11, 2018
    Posts:
    5
    Hey,
    I just notice that UMA has been updated from 2.6 to 2.7, so my question is the UMA 2.7 compatible with Unity 2018.2? are we safe to use the 2.7 with Unity 2018 .2?

    Thank you
     
    P_Jong likes this.
  29. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Yes - 2.7 works with 2018.2. It does not however, currently support the scriptable render pipelines, only the standard pipeline.
     
    P_Jong likes this.
  30. dudedude123

    dudedude123

    Joined:
    Aug 24, 2013
    Posts:
    128
    I will get to my last problems later, I used secretanoraks legacy script to create spectators



    Code (CSharp):
    1.   public UMAGeneratorBase generator;
    2.     public SlotLibrary slotLibraray;
    3.     public OverlayLibrary overlayLibrary;
    4.     public RaceLibrary raceLibrary;
    5.     public RuntimeAnimatorController animController;
    6.  
    7.     private UMADynamicAvatar umaDynamicAvatar;
    8.     private UMAData umaData;
    9.     private UMADnaHumanoid umaDna;
    10.     private UMADnaTutorial umaTutorialDNA;
    11.  
    12.     private int numberOfSlots = 20;
    13.  
    14.     void Start()
    15.     {
    16.         GenerateUMA();
    17.     }
    18.  
    19.  
    20.  
    21.     void GenerateUMA()
    22.     {
    23.         // Create a new game object and add UMA componenets to it
    24.         GameObject GO = new GameObject("MyUMA");
    25.         umaDynamicAvatar = GO.AddComponent<UMADynamicAvatar>();
    26.  
    27.         // Initialise Avatar and grab a reference to it's data component
    28.         umaDynamicAvatar.Initialize();
    29.         umaData = umaDynamicAvatar.umaData;
    30.  
    31.         // Attach our generator
    32.         umaDynamicAvatar.umaGenerator = generator;
    33.         umaData.umaGenerator = generator;
    34.  
    35.         // Set up slot Array
    36.         umaData.umaRecipe.slotDataList = new SlotData[numberOfSlots];
    37.  
    38.         // Set up our Morph references
    39.         umaDna = new UMADnaHumanoid();
    40.         umaTutorialDNA = new UMADnaTutorial();
    41.         umaData.umaRecipe.AddDna(umaDna);
    42.         umaData.umaRecipe.AddDna(umaTutorialDNA);
    43.  
    44.  
    45.         // >>> This is where the fun will happen <<<
    46.         CreateMale();
    47.  
    48.         umaDynamicAvatar.animationController = animController;
    49.  
    50.         // Generate our UMA
    51.         umaDynamicAvatar.UpdateNewRace();
    52.  
    53.         GO.transform.parent = this.gameObject.transform;
    54.         GO.transform.localPosition = Vector3.zero;
    55.         GO.transform.localRotation = Quaternion.identity;
    56.  
    57.     }
    58.     void CreateMale()
    59.     {
    60.         // Grab a reference to our recipe
    61.         var umaRecipe = umaDynamicAvatar.umaData.umaRecipe;
    62.         umaRecipe.SetRace(raceLibrary.GetRace("HumanMale"));
    63.  
    64.         umaData.umaRecipe.slotDataList[0] = slotLibraray.InstantiateSlot("MaleEyes");
    65.         umaData.umaRecipe.slotDataList[0].AddOverlay(overlayLibrary.InstantiateOverlay("EyeOverlay"));
    66.  
    67.         umaData.umaRecipe.slotDataList[1] = slotLibraray.InstantiateSlot("MaleInnerMouth");
    68.         umaData.umaRecipe.slotDataList[1].AddOverlay(overlayLibrary.InstantiateOverlay("InnerMouth"));
    69.  
    70.         umaData.umaRecipe.slotDataList[2] = slotLibraray.InstantiateSlot("MaleFace");
    71.         umaData.umaRecipe.slotDataList[2].AddOverlay(overlayLibrary.InstantiateOverlay("MaleHead02"));
    72.  
    73.         umaData.umaRecipe.slotDataList[3] = slotLibraray.InstantiateSlot("MaleTorso");
    74.         umaData.umaRecipe.slotDataList[3].AddOverlay(overlayLibrary.InstantiateOverlay("MaleBody02"));
    75.  
    76.         umaData.umaRecipe.slotDataList[4] = slotLibraray.InstantiateSlot("MaleHands");
    77.         umaData.umaRecipe.slotDataList[4].SetOverlayList(umaData.umaRecipe.slotDataList[3].GetOverlayList());
    78.  
    79.         umaData.umaRecipe.slotDataList[5] = slotLibraray.InstantiateSlot("MaleLegs");
    80.         umaData.umaRecipe.slotDataList[5].SetOverlayList(umaData.umaRecipe.slotDataList[3].GetOverlayList());
    81.  
    82.         umaData.umaRecipe.slotDataList[6] = slotLibraray.InstantiateSlot("MaleFeet");
    83.         umaData.umaRecipe.slotDataList[6].SetOverlayList(umaData.umaRecipe.slotDataList[3].GetOverlayList());
    84.  
    85.         umaData.umaRecipe.slotDataList[3].AddOverlay(overlayLibrary.InstantiateOverlay("MaleUnderwear01"));
    86.  
    87.         umaData.umaRecipe.slotDataList[2].AddOverlay(overlayLibrary.InstantiateOverlay("MaleEyebrow01", Color.black));
    88.  
    89.         //SetSlot(7,"Hat");
    90.         //AddOverlay(7,"Hat");
    91.  
    92.         SetSlot(8, "AL_MaleJeans01_Slot");
    93.         AddOverlay(8, "AL_MaleJeans01");
    94.  
    95.         SetSlot(9, "AL_MaleTShirt01_Slot");
    96.         AddOverlay(9, "AL_MaleTShirt01");
    97.  
    98.         SetSlot(7, "AL_MaleSneakers01_Slot");
    99.         AddOverlay(7, "AL_MaleSneakers01");
    100.  
    101.     }
    102.  
    103.     void CreateFemale()
    104.     {
    105.         // Grab a reference to our recipe
    106.         var umaRecipe = umaDynamicAvatar.umaData.umaRecipe;
    107.         umaRecipe.SetRace(raceLibrary.GetRace("HumanFemale"));
    108.  
    109.         umaData.umaRecipe.slotDataList[0] = slotLibraray.InstantiateSlot("FemaleEyes");
    110.         umaData.umaRecipe.slotDataList[0].AddOverlay(overlayLibrary.InstantiateOverlay("EyeOverlay"));
    111.  
    112.         umaData.umaRecipe.slotDataList[1] = slotLibraray.InstantiateSlot("FemaleInnerMouth");
    113.         umaData.umaRecipe.slotDataList[1].AddOverlay(overlayLibrary.InstantiateOverlay("InnerMouth"));
    114.  
    115.         umaData.umaRecipe.slotDataList[2] = slotLibraray.InstantiateSlot("FemaleFace");
    116.         umaData.umaRecipe.slotDataList[2].AddOverlay(overlayLibrary.InstantiateOverlay("FemaleHead02"));
    117.  
    118.         umaData.umaRecipe.slotDataList[3] = slotLibraray.InstantiateSlot("FemaleTorso");
    119.         umaData.umaRecipe.slotDataList[3].AddOverlay(overlayLibrary.InstantiateOverlay("FemaleBody02"));
    120.  
    121.         umaData.umaRecipe.slotDataList[4] = slotLibraray.InstantiateSlot("FemaleHands");
    122.         umaData.umaRecipe.slotDataList[4].SetOverlayList(umaData.umaRecipe.slotDataList[3].GetOverlayList());
    123.  
    124.         umaData.umaRecipe.slotDataList[5] = slotLibraray.InstantiateSlot("FemaleLegs");
    125.         umaData.umaRecipe.slotDataList[5].SetOverlayList(umaData.umaRecipe.slotDataList[3].GetOverlayList());
    126.  
    127.         umaData.umaRecipe.slotDataList[6] = slotLibraray.InstantiateSlot("FemaleFeet");
    128.         umaData.umaRecipe.slotDataList[6].SetOverlayList(umaData.umaRecipe.slotDataList[3].GetOverlayList());
    129.  
    130.         umaData.umaRecipe.slotDataList[3].AddOverlay(overlayLibrary.InstantiateOverlay("FemaleUnderwear01"));
    131.  
    132.         umaData.umaRecipe.slotDataList[2].AddOverlay(overlayLibrary.InstantiateOverlay("FemaleEyebrow01", Color.black));
    133.  
    134.         //SetSlot(7,"Hat");
    135.         //AddOverlay(7,"Hat");
    136.  
    137.         //SetSlot(8,"AL_FemaleJeans01");
    138.         //AddOverlay(8,"AL_FemaleJeans01");
    139.  
    140.         //SetSlot(9,"AL_FemaleTShirt01");
    141.         //AddOverlay(9,"AL_FemaleTShirt01");
    142.  
    143.         //SetSlot(7,"AL_FemaleSneakers01");
    144.         //AddOverlay(7,"AL_FemaleSneakers01");
    145.  
    146.     }
    147.  
    148.     //////////////// Overlay Helpers //////////////////
    149.  
    150.     void AddOverlay(int slot, string overlayName)
    151.     {
    152.         umaData.umaRecipe.slotDataList[slot].AddOverlay(overlayLibrary.InstantiateOverlay(overlayName));
    153.     }
    154.  
    155.     void AddOverlay(int slot, string overlayName, Color color)
    156.     {
    157.         umaData.umaRecipe.slotDataList[slot].AddOverlay(overlayLibrary.InstantiateOverlay(overlayName, color));
    158.     }
    159.  
    160.     void LinkOverlay(int slotNumber, int slotToLink)
    161.     {
    162.         umaData.umaRecipe.slotDataList[slotNumber].SetOverlayList(umaData.umaRecipe.slotDataList[slotToLink].GetOverlayList());
    163.     }
    164.  
    165.     void RemoveOverlay(int slotNumber, string overlayName)
    166.     {
    167.         umaData.umaRecipe.slotDataList[slotNumber].RemoveOverlay(overlayName);
    168.     }
    169.  
    170.     void ColorOverlay(int slotNumber, string overlayName, Color color)
    171.     {
    172.         umaData.umaRecipe.slotDataList[slotNumber].SetOverlayColor(color, overlayName);
    173.     }
    174.  
    175.     ////////////////// Slot Helpers ////////////////
    176.  
    177.     void SetSlot(int slotnumber, string SlotName)
    178.     {
    179.         umaData.umaRecipe.slotDataList[slotnumber] = slotLibraray.InstantiateSlot(SlotName);
    180.     }
    181.  
    182.     void RemoveSlot(int slotNumber)
    183.     {
    184.         umaData.umaRecipe.slotDataList[slotNumber] = null;
    185.     }

    First thing is that the spectators started to vanish instead of having clothes, how do I fix that? The second one is how do I get the scripts to randomly select genders to generate?
     

    Attached Files:

  31. p_hergott

    p_hergott

    Joined:
    May 7, 2018
    Posts:
    414
    I got this just after installing all my UMA stuff, anybody know anything about it?
     

    Attached Files:

  32. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    I really can't help with this older code. But my recommendation is to use the Simple Setup scene to save character files, and then use those to create prefabs for your spectators.

     
  33. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    One of your assets included some older parts of UMA. Delete the "core" folder in UMA, and reimport the UMA package from the asset store.. That should fix the broken scripts.


     
  34. EnriquePage91

    EnriquePage91

    Joined:
    Jul 2, 2015
    Posts:
    67
    Hey guys what's up?

    So... I've been using UMA for quite a while now, like 2 years. I've gone into it and dropped it and picked it up again over time - quite a few times.

    I love where the project is going however it still is very confusing and sometimes makes me wonder whether the mistakes occurring are because of me or because of a problem with the library.

    I had built custom races in the past but the process has changed quite a lot over the past year and a half - and in the past few days I've tried to generate a new race but I'm running into a problem with the overlays:

    I have a mesh that has been separated Into 7-8 slots. Many of these slots share texture files so I only generated an overlay for the FIRST mesh utilizing EACH texture. Every slot has the corresponding material associates on its inspector tab, and the text recipe for my race has every slot associated to its corresponding overlay.


    My general problem:

    The slots are not getting overlayed correctly. Most of my slots are black or have the wrong overlay associated to them which should not be the case, as far as I can tell ALL the references are pointing out to the correct files, slots, textures, overlays. I've repeated the process over 3 times now, even tried using the most recent build available on the github and also the 2.7 available in the asset store; they both present similar problems with some differences.

    When using UMA 2.7 directly from the asset store, I can see how the texture atlas generated includes SEVERAL torso and legs overlays; it seems it is adding one to the texture for each slot utilizing the same overlay. Why? No idea, they are after all sharing one single overlay asset.

    When using the latest beta build this does not occur however the same problem persists in both versions:

    Overlays are not being associated correctly to their slots. The Uma library and text recipe for my race seem to be in order and I can't find a way to fix this.


    Today I will proceed to re-import the race into the system, this time actually creating a separate overlay per slot to see if at least I can fix incorrect association however this solution would not be ideal as it would waste a lot of space on the atlas (I have 6 slots (groups of 3) that share 2 textures), and I clearly wouldn't want to have a separate overlay for each of these, however it's the only thing I can think of trying at the moment.

    Any help would be greatly appreciated, I am so close to finally getting my race into UMA and this problem, I have not dealt with it in the past.

    I appreciate all the help, thanks guys.
     
  35. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    The problem sounds like what happens when the texture sizes were changed after the recipes were created. The recipes contain texture coordinates in pixels. (yeah, none of us like it either - but until we rewrite that, it is what it is).
    So if any textures change size, then the coordinates in the atlas can get screwed up and write over each other. Not saying that is what's happening, but I have seen similar issues when that happened.

    Can you post one of the generated atlases? Maybe by seeing what it is doing I can give you more info.
    Also, if you can post a pic of the UMAMaterial and the OverlayDataAsset that would be helpful.



     
    EnriquePage91 likes this.
  36. p_hergott

    p_hergott

    Joined:
    May 7, 2018
    Posts:
    414
    Rught on brother, ill give er a shot
     
  37. EnriquePage91

    EnriquePage91

    Joined:
    Jul 2, 2015
    Posts:
    67

    Thank you so much for the help.

    I am indeed not resizing the textures at any point so I have no idea why that would happen!

    Find attached the pics you requested:

    Atlas:
    Atlas -  New - SC.png

    I've had to cover it with the colors in Photoshop for licensing reasons, sorry. however the colors indicate the textures that are repeated. As you can see they're placed in a gridlike fashion which makes me think UMA is recognizing them as separate overlays per slot (since the number of sets seen in the texture matches the number of slots utilizing the textures).


    Overlay:
    Overlay - SC.png

    Material:
    Material - SC.png

    Text Recipe:
    Text Recipe - SC.png

    Arms Slot:
    Arms - Slot - SC.png


    Thank you so much in advance for all the help, it is greatly appreciated.

    UMA is AMAZING, it's its own beast. It just takes a while to get it right...!
     
    Last edited: Aug 1, 2018
  38. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Indeed - this looks like a bug from the first 2.6 release - where it would add the overlay multiple times due to an error in the equality operator on the overlaydata itself.

    I know you've tried with the version of 2.7 from the asset store, but can I get you to delete the uma/core folder, and redownload and reimport the 2.7 version again just to be sure all the source code files get overwritten?

    As for the shiny model - it looks like the metallic is jacked up. Check your skin color on the DCA, and make sure the "metallic/gloss" is set to black with no alpha.

    Jaimi

     
  39. EnriquePage91

    EnriquePage91

    Joined:
    Jul 2, 2015
    Posts:
    67
    Thanks for the quick response Jaimi,

    I will do as you suggest however....:

    1) Should I download it from the Asset Store?
    2) Should I reprocess every slot once I do so then?
    3) I've also done this process with the latest build on Github and I did not have the gridlike atlas, the atlas was correct. However the black limbs, and wrong placing of the Overlays was STILL an issue.

    4)... Unfortunately while doing what I said I would (1 overlay per slot but reutilizing the corresponding textures), I ran into another problem which I am not sure how to solve. I am guessing perhaps I could rename everything to use underscores instead of spaces and make the relative path shorter perhaps but is that really the issue? Before having to do so much work it would be great to get your feedback on this error:

    New Error - SC.png

    I have run into this while trying to add the newly created slots to the UMA Library. The Overlays do not have the textures associated yet but I doubt that would impact in anyway or at least not in a way that would produce this result.

    I am unable to add half of the slots I created because of this. they all throw the same exception. I did change the name of the slots after creating them as I do not want the underscores and etc., so perhaps once the scriptableObject was created it stored its original name without updating it once I made the changes? however, I have no idea how to deal with this as I've modified the names to be the right ones on every possible field before adding them to the UMA Library just like I was doing yesterday (when it did work).


    Once again thank you so much for the info and help, it is really appreciated.
     
  40. p_hergott

    p_hergott

    Joined:
    May 7, 2018
    Posts:
    414
    Fyi worked like a charm
     
    Jaimi likes this.
  41. dudedude123

    dudedude123

    Joined:
    Aug 24, 2013
    Posts:
    128
    I had created a collider and a slot for the collider. Should I use the text recipe or the wardrobe recipe? 2018-08-01_22h35_10.png
     
  42. snacktime

    snacktime

    Joined:
    Apr 15, 2013
    Posts:
    3,356
    Trying to see if Uma will work with our gpu skinning setup. I'm thinking it should but wanted to check if there was something I wasn't thinking of.

    I think basically as long as Uma isn't modifying it's mesh or material without asking we should be fine. The flow I'm thinking is when we change clothing we do it on a uma avatar offscreen, then just copy the uma material to our renderer. Does Uma change it's mesh at points after initialization? We could handle that just not constantly and without knowing.

    Anyone see any issues?
     
  43. snacktime

    snacktime

    Joined:
    Apr 15, 2013
    Posts:
    3,356
    Trying to get a better handle on how slots work in the context of meshes. From what I can gather it's up to content creators to create clothing meshes that match up with race meshes? So it's possible for example to have a base mesh poking through clothing if the clothing mesh wasn't aligned just right with the base race mesh?
     
  44. PolytopeStudio

    PolytopeStudio

    Joined:
    Aug 22, 2017
    Posts:
    200
    Hi,
    I was trying to create a new race based on this tutorial



    and using my own character. Everything works without any errors until I try to select the new race I've created. The new race appears in the drop down but when I select it I get this error:


    Exception in UMAGeneratorBuiltin.OnDirtyUpdate: System.IndexOutOfRangeException: Array index is out of range. at UMA.UMAGeneratorBase.SkeletonModifier (UMA.UMAData umaData, UnityEngine.SkeletonBone[]& bones, UnityEngine.HumanBone[] human) [0x00018] in D:\UnityProjects\Uma test\Assets\UMA\Core\StandardAssets\UMA\Scripts\UMAGeneratorBase.cs:322 at UMA.UMAGeneratorBase.CreateHumanDescription (UMA.UMAData umaData, UMA.UmaTPose umaTPose) [0x00086] in D:\UnityProjects\Uma test\Assets\UMA\Core\StandardAssets\UMA\Scripts\UMAGeneratorBase.cs:304 at UMA.UMAGeneratorBase.CreateAvatar (UMA.UMAData umaData, UMA.UmaTPose umaTPose) [0x00009] in D:\UnityProjects\Uma test\Assets\UMA\Core\StandardAssets\UMA\Scripts\UMAGeneratorBase.cs:266 at UMA.UMAGeneratorBase.SetAvatar (UMA.UMAData umaData, UnityEngine.Animator animator) [0x0003e] in D:\UnityProjects\Uma test\Assets\UMA\Core\StandardAssets\UMA\Scripts\UMAGeneratorBase.cs:224 at UMA.UMAGeneratorBase.UpdateAvatar (UMA.UMAData umaData) [0x000d9] in D:\UnityProjects\Uma test\Assets\UMA\Core\StandardAssets\UMA\Scripts\UMAGeneratorBase.cs:199 at UMA.UMAGeneratorBuiltin.UpdateUMABody (UMA.UMAData umaData) [0x00037] in D:\UnityProjects\Uma test\Assets\UMA\Core\StandardAssets\UMA\Scripts\UMAGeneratorBuiltin.cs:371 at UMA.UMAGeneratorBuiltin.HandleDirtyUpdate (UMA.UMAData data) [0x001f7] in D:\UnityProjects\Uma test\Assets\UMA\Core\StandardAssets\UMA\Scripts\UMAGeneratorBuiltin.cs:242 at UMA.UMAGeneratorBuiltin.OnDirtyUpdate () [0x0000f] in D:\UnityProjects\Uma test\Assets\UMA\Core\StandardAssets\UMA\Scripts\UMAGeneratorBuiltin.cs:259 UnityEngine.Debug:LogWarning(Object) UMA.UMAGeneratorBuiltin:OnDirtyUpdate() (at Assets/UMA/Core/StandardAssets/UMA/Scripts/UMAGeneratorBuiltin.cs:274) UMA.UMAGeneratorBuiltin:Work() (at Assets/UMA/Core/StandardAssets/UMA/Scripts/UMAGeneratorBuiltin.cs:132) UMA.UMAGeneratorBuiltin:Update() (at Assets/UMA/Core/StandardAssets/UMA/Scripts/UMAGeneratorBuiltin.cs:97)

    Any Ideea what is wrong?
    Thanks !
     
  45. snacktime

    snacktime

    Joined:
    Apr 15, 2013
    Posts:
    3,356
    UMAEditorUtilities.DrawItems needs to die in a fire. It just loads every asset selected and THEN checks to see if it's a type you are interested in? I had to force close Unity due to this behavior. I see you can disable it, but that's not really a good reason for it to exist.
     
  46. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Yeah, that was a bad decision. This is now defaulted to OFF in the current version.
     
  47. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Is it possible you have duplicate named bones? If so, they need to be unique.

    Another thing to look at is the bone hierarchy - it needs that Root/Global/Position thing going on.

     
    Last edited: Aug 2, 2018
  48. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Slots are "partial meshes" that are rigged to a common skeleton. They are combined into a composite mesh at runtime.
    Slots can be part of wardrobe items. When using Wardrobe items, you must use a DynamicCharacterAvatar.

    The content creator should create clothing by rigging it to the main skeleton, and fitting it around the mesh.
    Poke-through is handled by either of the following:
    • Modeling the mesh so that there is no poke-through. This can make bulky meshes and too much overdraw, though. This is appropriate for things like belts, rings, etc.
    • Completely hiding the slots that the new mesh replaces (for example, gauntlets completely cover hands, so the hand slots can be simply discarded when building the composite mesh at runtime). This is optimal, but does not work for every piece of clothing. This is either manually done through code, or can be automatically done when using a DynamicCharacterAvatar and WardrobeRecipes.
    • Hiding parts of the mesh with "Mesh Hide Assets". This is more flexible than completely hiding the mesh, but is slightly less efficient. When using this method, you define the interactions between the two meshes - ie, when using a specific piece of clothing, then a specific set of polygons on the base mesh or other piece of clothing are hidden. This also requires using a DynamicCharacterAvatar and WardrobeRecipes. There is an internal editor for creating these - you paint the hidden polygons directly on the mesh using the mouse or calculate the hidden polygons using occlusion.
    All of These can also be combined when using Wardrobe Recipes - a long jacket might hide the chest slot, and hide individual polygons on the legs.

     
    kenamis likes this.
  49. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    UMA generates materials, meshes and texture atlases on the fly. The materials are generated from a template material that you define, so they can use your own shader with your own settings.

    The building of the mesh/material is handled in a queue by the generator. There is an event that fires when it has finished generating them.

    This generation is kicked off when the character is built. When using legacy UMA, this can happen during crowd generation or initial load, or when you force it to generate.
    When using a DynamicCharacterAvatar, then it can happen on load, when asset bundles are downloaded, when you force it to build using BuildCharacter or ForceUpdate(), or when you call various load/set functions, or you use an LOD script (which will swap out the slots or regenerate the texture atlases, and force a rebuild).

    Either way you will get an event when it is completed.


     
  50. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    This is typically done with a text recipe that is added to the additional utility recipes.