Search Unity

  1. Unity 6 Preview is now available. To find out what's new, have a look at our Unity 6 Preview blog post.
    Dismiss Notice
  2. Unity is excited to announce that we will be collaborating with TheXPlace for a summer game jam from June 13 - June 19. Learn more.
    Dismiss Notice
  3. Dismiss Notice

UMA - Unity Multipurpose Avatar on the Asset Store!

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

  1. IIIZoom

    IIIZoom

    Joined:
    Jun 26, 2018
    Posts:
    24
    i donload from this branch right
    https://github.com/umasteeringgroup/UMA/tree/Feature-13
     
  2. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,243
  3. IIIZoom

    IIIZoom

    Joined:
    Jun 26, 2018
    Posts:
    24
    can i use unitys animation rigging package with UMA?, if not is other IK assets work or not
     
  4. Kst001

    Kst001

    Joined:
    Sep 14, 2021
    Posts:
    16
    How will it work with animations? Will I need to add IK to make feet movement look realistic?
     
  5. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,243
    Both should work fine. But you usually do have to IK feet anyway, if you want higher realism.
     
    Kst001 and Bwacky like this.
  6. Kst001

    Kst001

    Joined:
    Sep 14, 2021
    Posts:
    16
    upload_2023-9-4_17-29-43.png
    I'm using second method but after I change DNA position and rotation values they do not immediately apply, but instead I randomly find them applied after I return to Unity editor. Entering and exiting play mode or re-equipping heels do not apply values either.
     
  7. GrosCorps

    GrosCorps

    Joined:
    Jul 27, 2018
    Posts:
    6
    Hi, first of all, thank you for what you did, this package is amazing, I created a really cool customization system for my game (Tricking 0), using a custom rig for my fuse character, and following you great tutorials on Youtube, I'm very gratefull :)

    My game is on steam and Xbox and although it's working for almost everyone, a few players complained about a bug playing on PC, when their character is supposed to spawn, the character is invisible. I asked some of them to send me their logs and they are filled with this error :


    Code (CSharp):
    1.  
    2. Exception in UMAAssetIndexer.AddAssetItem: System.ArgumentNullException: Value cannot be null.
    3. Parameter name: key
    4.   at System.Collections.Generic.Dictionary`2[TKey,TValue].FindEntry (TKey key) [0x00000] in <00000000000000000000000000000000>:0
    5.   at System.Collections.Generic.Dictionary`2[TKey,TValue].ContainsKey (TKey key) [0x00000] in <00000000000000000000000000000000>:0
    6.   at UMA.UMAAssetIndexer.AddAssetItem (UMA.AssetItem ai, System.Boolean SkipBundleCheck) [0x00000] in <00000000000000000000000000000000>:0
    7.   at UMA.UMAAssetIndexer.UpdateSerializedDictionaryItems () [0x00000] in <00000000000000000000000000000000>:0
    8.   at UMA.UMAAssetIndexer.get_Instance () [0x00000] in <00000000000000000000000000000000>:0
    9.   at UMA.UMAGlobalContext.GetRecipes (System.String raceName) [0x00000] in <00000000000000000000000000000000>:0
    10.   at UMA.CharacterSystem.DynamicCharacterAvatar.FindSlotRecipe (System.String Slotname, System.String Recipename) [0x00000] in <00000000000000000000000000000000>:0
    11.   at UMA.CharacterSystem.DynamicCharacterAvatar.SetSlot (System.String Slotname, System.String Recipename) [0x00000] in <00000000000000000000000000000000>:0
    12.   at Controller.OnEnable () [0x00000] in <00000000000000000000000000000000>:0
    13.   at UnityEngine.Object.Instantiate[T] (T original) [0x00000] in <00000000000000000000000000000000>:0
    14.   at UnityEngine.InputSystem.PlayerInput.DoInstantiate (UnityEngine.GameObject prefab) [0x00000] in <00000000000000000000000000000000>:0
    15.   at UnityEngine.InputSystem.PlayerInputManager.JoinPlayer (System.Int32 playerIndex, System.Int32 splitScreenIndex, System.String controlScheme, UnityEngine.InputSystem.InputDevice pairWithDevice) [0x00000] in <00000000000000000000000000000000>:0
    16.   at UnityEngine.InputSystem.PlayerInputManager.JoinPlayerFromActionIfNotAlreadyJoined (UnityEngine.InputSystem.InputAction+CallbackContext context) [0x00000] in <00000000000000000000000000000000>:0
    17.   at System.Action`1[T].Invoke (T obj) [0x00000] in <00000000000000000000000000000000>:0
    18.   at UnityEngine.InputSystem.Utilities.DelegateHelpers.InvokeCallbacksSafe[TValue] (UnityEngine.InputSystem.Utilities.CallbackArray`1[System.Action`1[TValue]]& callbacks, TValue argument, System.String callbackName, System.Object context) [0x00000] in <00000000000000000000000000000000>:0
    19.   at UnityEngine.InputSystem.InputActionState.CallActionListeners (System.Int32 actionIndex, UnityEngine.InputSystem.InputActionMap actionMap, UnityEngine.InputSystem.InputActionPhase phase, UnityEngine.InputSystem.Utilities.CallbackArray`1[System.Action`1[UnityEngine.InputSystem.InputAction+CallbackContext]]& listeners, System.String callbackName) [0x00000] in <00000000000000000000000000000000>:0
    20.   at UnityEngine.InputSystem.InputActionState.ChangePhaseOfActionInternal (System.Int32 actionIndex, UnityEngine.InputSystem.InputActionState+TriggerState* actionState, UnityEngine.InputSystem.InputActionPhase newPhase, UnityEngine.InputSystem.InputActionState+TriggerState& trigger) [0x00000] in <00000000000000000000000000000000>:0
    21.   at UnityEngine.InputSystem.InputActionState.ChangePhaseOfAction (UnityEngine.InputSystem.InputActionPhase newPhase, UnityEngine.InputSystem.InputActionState+TriggerState& trigger, UnityEngine.InputSystem.InputActionPhase phaseAfterPerformedOrCanceled) [0x00000] in <00000000000000000000000000000000>:0
    22.   at UnityEngine.InputSystem.InputActionState.ProcessDefaultInteraction (UnityEngine.InputSystem.InputActionState+TriggerState& trigger, System.Int32 actionIndex) [0x00000] in <00000000000000000000000000000000>:0
    23.   at UnityEngine.InputSystem.InputActionState.ProcessControlStateChange (System.Int32 mapIndex, System.Int32 controlIndex, System.Int32 bindingIndex, System.Double time, UnityEngine.InputSystem.LowLevel.InputEventPtr eventPtr) [0x00000] in <00000000000000000000000000000000>:0
    24.   at UnityEngine.InputSystem.InputActionState.UnityEngine.InputSystem.LowLevel.IInputStateChangeMonitor.NotifyControlStateChanged (UnityEngine.InputSystem.InputControl control, System.Double time, UnityEngine.InputSystem.LowLevel.InputEventPtr eventPtr, System.Int64 mapControlAndBindingIndex) [0x00000] in <00000000000000000000000000000000>:0
    25.   at UnityEngine.InputSystem.InputManager.FireStateChangeNotifications (System.Int32 deviceIndex, System.Double internalTime, UnityEngine.InputSystem.LowLevel.InputEvent* eventPtr) [0x00000] in <00000000000000000000000000000000>:0
    26.   at UnityEngine.InputSystem.InputManager.UpdateState (UnityEngine.InputSystem.InputDevice device, UnityEngine.InputSystem.LowLevel.InputUpdateType updateType, System.Void* statePtr, System.UInt32 stateOffsetInDevice, System.UInt32 stateSize, System.Double internalTime, UnityEngine.InputSystem.LowLevel.InputEventPtr eventPtr) [0x00000] in <00000000000000000000000000000000>:0
    27.   at UnityEngine.InputSystem.InputManager.UpdateState (UnityEngine.InputSystem.InputDevice device, UnityEngine.InputSystem.LowLevel.InputEvent* eventPtr, UnityEngine.InputSystem.LowLevel.InputUpdateType updateType) [0x00000] in <00000000000000000000000000000000>:0
    28.   at UnityEngine.InputSystem.InputManager.OnUpdate (UnityEngine.InputSystem.LowLevel.InputUpdateType updateType, UnityEngine.InputSystem.LowLevel.InputEventBuffer& eventBuffer) [0x00000] in <00000000000000000000000000000000>:0
    29.   at UnityEngine.InputSystem.LowLevel.NativeInputRuntime+<>c__DisplayClass7_0.<set_onUpdate>b__0 (UnityEngineInternal.Input.NativeInputUpdateType updateType, UnityEngineInternal.Input.NativeInputEventBuffer* eventBufferPtr) [0x00000] in <00000000000000000000000000000000>:0
    30.   at UnityEngineInternal.Input.NativeInputSystem.NotifyUpdate (UnityEngineInternal.Input.NativeInputUpdateType updateType, System.IntPtr eventBuffer) [0x00000] in <00000000000000000000000000000000>:0
    31. UnityEngine.Logger:Log(LogType, Object)
    32. UnityEngine.Debug:LogWarning(Object)
    33. UMA.UMAAssetIndexer:AddAssetItem(AssetItem, Boolean)
    34. UMA.UMAAssetIndexer:UpdateSerializedDictionaryItems()
    35. UMA.UMAAssetIndexer:get_Instance()
    36. UMA.UMAGlobalContext:GetRecipes(String)
    37. UMA.CharacterSystem.DynamicCharacterAvatar:FindSlotRecipe(String, String)
    38. UMA.CharacterSystem.DynamicCharacterAvatar:SetSlot(String, String)
    39. Controller:OnEnable()
    40. UnityEngine.Object:Instantiate(T)
    41. UnityEngine.InputSystem.PlayerInput:DoInstantiate(GameObject)
    42. UnityEngine.InputSystem.PlayerInputManager:JoinPlayer(Int32, Int32, String, InputDevice)
    43. UnityEngine.InputSystem.PlayerInputManager:JoinPlayerFromActionIfNotAlreadyJoined(CallbackContext)
    44. System.Action`1:Invoke(T)
    45. UnityEngine.InputSystem.Utilities.DelegateHelpers:InvokeCallbacksSafe(CallbackArray`1&, TValue, String, Object)
    46. UnityEngine.InputSystem.InputActionState:CallActionListeners(Int32, InputActionMap, InputActionPhase, CallbackArray`1&, String)
    47. UnityEngine.InputSystem.InputActionState:ChangePhaseOfActionInternal(Int32, TriggerState*, InputActionPhase, TriggerState&)
    48. UnityEngine.InputSystem.InputActionState:ChangePhaseOfAction(InputActionPhase, TriggerState&, InputActionPhase)
    49. UnityEngine.InputSystem.InputActionState:ProcessDefaultInteraction(TriggerState&, Int32)
    50. UnityEngine.InputSystem.InputActionState:ProcessControlStateChange(Int32, Int32, Int32, Double, InputEventPtr)
    51. UnityEngine.InputSystem.InputActionState:UnityEngine.InputSystem.LowLevel.IInputStateChangeMonitor.NotifyControlStateChanged(InputControl, Double, InputEventPtr, Int64)
    52. UnityEngine.InputSystem.InputManager:FireStateChangeNotifications(Int32, Double, InputEvent*)
    53. UnityEngine.InputSystem.InputManager:UpdateState(InputDevice, InputUpdateType, Void*, UInt32, UInt32, Double, InputEventPtr)
    54. UnityEngine.InputSystem.InputManager:UpdateState(InputDevice, InputEvent*, InputUpdateType)
    55. UnityEngine.InputSystem.InputManager:OnUpdate(InputUpdateType, InputEventBuffer&)
    56. UnityEngine.InputSystem.LowLevel.<>c__DisplayClass7_0:<set_onUpdate>b__0(NativeInputUpdateType, NativeInputEventBuffer*)
    57. UnityEngineInternal.Input.NativeInputSystem:NotifyUpdate(NativeInputUpdateType, IntPtr)

    And ending with this message :

    Code (CSharp):
    1. Building DynamicCharacterAvatar: Tricker 0
    2. UnityEngine.Logger:Log(LogType, Object)
    3. UnityEngine.Debug:Log(Object)
    4. UMA.CharacterSystem.DynamicCharacterAvatar:BuildCharacter(Boolean, Boolean, Boolean)
    5. UMA.CharacterSystem.DynamicCharacterAvatar:BuildFromComponentSettings()
    6.  
    7. Uploading Crash Report
    8. FormatException: Input string was not in a correct format.
    9.   at System.Number.ThrowOverflowOrFormatException (System.Boolean overflow, System.String overflowResourceKey) [0x00000] in <00000000000000000000000000000000>:0
    10.   at System.Number.ParseSingle (System.ReadOnlySpan`1[T] value, System.Globalization.NumberStyles styles, System.Globalization.NumberFormatInfo info) [0x00000] in <00000000000000000000000000000000>:0
    11.   at System.Single.Parse (System.String s, System.IFormatProvider provider) [0x00000] in <00000000000000000000000000000000>:0
    12.   at UMA.UMAProperty.FromString (System.String serializedString) [0x00000] in <00000000000000000000000000000000>:0
    13.   at UMA.UMAPackedRecipeBase+PackedOverlayColorDataV3.SetOverlayColorData (UMA.OverlayColorData overlayColorData) [0x00000] in <00000000000000000000000000000000>:0
    14.   at UMA.UMAPackedRecipeBase.UnpackColors (UMA.UMAPackedRecipeBase+UMAPackRecipe umaPackRecipe) [0x00000] in <00000000000000000000000000000000>:0
    15.   at UMA.UMAPackedRecipeBase.UnpackRecipeVersion3 (UMA.UMAData+UMARecipe umaRecipe, UMA.UMAPackedRecipeBase+UMAPackRecipe umaPackRecipe, UMA.UMAContextBase context) [0x00000] in <00000000000000000000000000000000>:0
    16.   at UMA.UMAPackedRecipeBase.Load (UMA.UMAData+UMARecipe umaRecipe, UMA.UMAContextBase context) [0x00000] in <00000000000000000000000000000000>:0
    17.   at UMA.UMATextRecipe.Load (UMA.UMAData+UMARecipe umaRecipe, UMA.UMAContextBase context) [0x00000] in <00000000000000000000000000000000>:0
    18.   at UMA.CharacterSystem.DynamicCharacterAvatar.LoadCharacter (UMA.UMARecipeBase umaRecipe, System.Collections.Generic.List`1[T] Replaces, System.Collections.Generic.List`1[T] umaAdditionalSerializedRecipes, UMA.UMARecipeBase[] AdditionalRecipes, System.Collections.Generic.Dictionary`2[TKey,TValue] MeshHideDictionary, System.Collections.Generic.List`1[T] hiddenSlots, System.Collections.Generic.List`1[T] HideTags, UMA.UMADnaBase[] CurrentDNA, System.Boolean restoreDNA, System.Boolean skipBundleCheck) [0x00000] in <00000000000000000000000000000000>:0
    19.   at UMA.CharacterSystem.DynamicCharacterAvatar.BuildCharacter (System.Boolean RestoreDNA, System.Boolean skipBundleCheck, System.Boolean useBundleParameter) [0x00000] in <00000000000000000000000000000000>:0
    20.   at UMA.CharacterSystem.DynamicCharacterAvatar.BuildFromComponentSettings () [0x00000] in <00000000000000000000000000000000>:0
    21.  
    I have absolutely no idea what could explain that it works for most people and not those guys, I'm a bit lost so I really need some help :)
     

    Attached Files:

  8. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,243
    There's some sort of data issue going on here. It's trying to load the library.

    The library has a list of items in the library that is serialized and deserialized. It's serialized when you compile, by Unity. It's deserialized when the prefab is loaded by the Unity runtime.

    That list is then processed. Every item in the list is an "AssetItem". The AssetItem has an "_Type" field and an "_Name" field. The type field contains the type (each item is indexed by type, and then by name within type).

    I can't tell which dictionary is complaining - but it's complaining that the key is null. This will either be the _Type of the AssetItem, or the _Name of the AssetItem.

    But not having either of them is completely invalid. If it were data on the item, I would expect that they would be empty strings, not null. So my first guess is that Unity had an error loading the data - maybe not enough memory, or some antivirus messed up the file load, or something similar.

    The second one is saying that the player string is invalid. If you can capture the string used it could be helpful. But it's likely related - bad data. Maybe the resources file didn't make it down, or another file didn't download or decompress, or something.

     
  9. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,243
    Wow, I have no idea what happened there. First thing I suggest is get the latest alpha version (alpha 4) and work from there, there's been a LOT of changes.
     
  10. ringworldbound

    ringworldbound

    Joined:
    Jan 18, 2023
    Posts:
    14
    @Jaimi, I modified v28 significantly, addressing the serialization/deserialization issues you mentioned. I posted about it a couple of years ago under the handle @Tarball, but I lost that account while trying to sue some people in the non-game/unrelated software world. In any case, I plan on releasing an early access title on Steam in early October 2023, and if the game sells, I'll fork off of UMA v28 on GitHub.

    Basically, I deleted about 1500 lines of code and fixed the serialization issues you mentioned. The problem was that the json data was being stored within another json, so it was nearly impossible to serialize to binary. In my version, it is much easier to dump the single stored json into lists immediately prior to creating a binary save file. It is simple enough to where it could be applied to an MMO. In fact, that may be the direction this project winds up going, if early access sales go as expected.

    If you can acquire some new updated textures/artwork/faces/etc, and my early access title sells as planned, I would be willing to contribute my updated code for a revamped updated version of UMA. Then, perhaps I could make use of if myself in a finished release. Check out my version in action here:

    http://hatoradegames.com

    There's a 10 minute gameplay trailer on the main page, and I have a few more videos on the news tab. Check back in a week or so, and I plan on making a webplayable browser demo, after I have obfuscated the code sufficiently. If you want, I can upload a quick video on the news tab showcasing the binary serialization save/load features I added.
     
    hopeful likes this.
  11. kompanions

    kompanions

    Joined:
    Oct 1, 2016
    Posts:
    2
    Hi, we are getting an error on making slot data for one of our models' attires ,we are able to create slots data for 4 of our player attires , facing a null reference error in one ,specifically leg part of it . Not sure what's causing the error as the rig also is similar to other attires rigs .
     

    Attached Files:

    • errr.PNG
      errr.PNG
      File size:
      146.7 KB
      Views:
      56
  12. SOICGeek

    SOICGeek

    Joined:
    Jun 25, 2019
    Posts:
    78
    Is there an updated Discord invite? The one someone posted here is expired, and the documentation won't load. Github works fine, but the documentation link on the Github site does not. It just goes to a blank screen. Someone posted an issue on it three weeks ago on Github, so apparently I'm not the only one.
     
  13. Haydara

    Haydara

    Joined:
    Nov 29, 2015
    Posts:
    10
    Is the uma project dead? I don't see any progress sinds alpha 4, should I use it in new projects or it will be deprecated soon?
     
  14. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,707
    Since it began in 2013, ten years ago, and has had many updates and features added, I think it's more appropriate to refer to it as "mature" rather than dead.
     
  15. SOICGeek

    SOICGeek

    Joined:
    Jun 25, 2019
    Posts:
    78
    Yeah, I don't think it's dead, because the discord is reportedly very active, and they're always pretty quick to fix any compatibility issues when a new Unity version comes out. I do think the documentation link needs to be fixed, though. I wanted to get on the discord because I use UMA a lot.
     
  16. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,707
    Here's a temporary link. https://discord.gg/HKyWVcz6

    Let me know if it works or not. I'm not a big Discord user.
     
  17. Haydara

    Haydara

    Joined:
    Nov 29, 2015
    Posts:
    10
    Thank you for the link, it's very helpfull
     
    hopeful likes this.
  18. mranderson744

    mranderson744

    Joined:
    Feb 16, 2023
    Posts:
    8
    materials are broken in HDRP
    any way to fix it?
     

    Attached Files:

  19. mranderson744

    mranderson744

    Joined:
    Feb 16, 2023
    Posts:
    8
  20. mranderson744

    mranderson744

    Joined:
    Feb 16, 2023
    Posts:
    8
  21. ringworldbound

    ringworldbound

    Joined:
    Jan 18, 2023
    Posts:
    14
    @hopeful @Jaimi I just made a radically different fork (codewise -- not artwork) on github, which I called 4.1.1. It is a major rewrite of v28.

    https://github.com/tarbalReboot/UMA

    Basically, I have fixed the json serialization problems, such that data can be serialized into binary. The problem with the old version was that it put a json into a json, so binary serialization was impossible. In my rewrite, I deleted about 2000 lines of code, so deserialization of json files at runtime into a struct occurs which can be saved/loaded into/from a binary save file.
     
    Last edited: Oct 7, 2023
    hopeful likes this.
  22. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,707
    Thank you! It's always great to get contributions from the UMA community. That's how we get by!
     
  23. Username24323

    Username24323

    Joined:
    Mar 22, 2021
    Posts:
    2
    Hi, all. I've been following the tutorial video of secret anorak on building uma race from Daz3d studio g8. Everything works fine except that the final character has weird twist arms. I guess this problem has something to do with the daz arm skeleton, since each arm has four bones. The exported fbx file works fine, this problem only occurs in uma characters. Could anyone give advice on this? much appreciated.
     

    Attached Files:

  24. mranderson744

    mranderson744

    Joined:
    Feb 16, 2023
    Posts:
    8
    How to delete? package manager is not showing Remove btn
    wth?
     
  25. IIIZoom

    IIIZoom

    Joined:
    Jun 26, 2018
    Posts:
    24
    hi, when i do this

    _umaDNA[dnaName].Set(newValue);
    _umaAvatar.BuildCharacter();

    using a slider the game framerate geos from 200+ to 10, the player loop in the function (UMAGeneratorBuiltin.Update) takes 70+ms to complete with 1.4MB of GC Alloc, im using the latest version in Github, is there a solution to this?
    thx
     
  26. IIIZoom

    IIIZoom

    Joined:
    Jun 26, 2018
    Posts:
    24
    i keep getting this error


    A Native Collection has not been disposed, resulting in a memory leak. Allocated from:
    Unity.Collections.NativeArray`1:.ctor(Int32[], Allocator)
    UMA.SubMeshTriangles:GetTriangles() (at Assets\UMA\Core\StandardAssets\UMA\Scripts\UMAMeshData.cs:45)
    UMA.SkinnedMeshCombiner:AnalyzeSources(CombineInstance[], Int32[], Int32&, Int32&, Int32&, Int32&, MeshComponents&) (at Assets\UMA\Core\StandardAssets\UMA\Scripts\SkinnedMeshCombiner.cs:818)
    UMA.SkinnedMeshCombiner:CombineMeshes(UMAMeshData, CombineInstance[], BlendShapeSettings, UMARecipe, Int32) (at Assets\UMA\Core\StandardAssets\UMA\Scripts\SkinnedMeshCombiner.cs:119)
    UMA.UMADefaultMeshCombiner:UpdateUMAMesh(Boolean, UMAData, Int32) (at Assets\UMA\Core\StandardAssets\UMA\Scripts\UMADefaultMeshCombiner.cs:187)
    UMA.UMAGeneratorBuiltin:UpdateUMAMesh(Boolean) (at Assets\UMA\Core\StandardAssets\UMA\Scripts\UMAGeneratorBuiltin.cs:650)
    UMA.UMAGeneratorBuiltin:GenerateSingleUMA(UMAData, Boolean) (at Assets\UMA\Core\StandardAssets\UMA\Scripts\UMAGeneratorBuiltin.cs:389)
    UMA.UMAGeneratorBuiltin:OnDirtyUpdate() (at Assets\UMA\Core\StandardAssets\UMA\Scripts\UMAGeneratorBuiltin.cs:610)
    UMA.UMAGeneratorBuiltin:Work() (at Assets\UMA\Core\StandardAssets\UMA\Scripts\UMAGeneratorBuiltin.cs:182)
    UMA.UMAGeneratorBuiltin:Update() (at Assets\UMA\Core\StandardAssets\UMA\Scripts\UMAGeneratorBuiltin.cs:116)
     
  27. IIIZoom

    IIIZoom

    Joined:
    Jun 26, 2018
    Posts:
    24
    it only happens when the value is changed using script, changing values in inspector is smooth
     
  28. Firlefanz73

    Firlefanz73

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

    two questions maybe someone can help:

    I am using the latest UMA version from UMA-Feature-13 and Unity 2023.1.16.

    I am working on a ski Jump game.

    - How can I attach ski to the feet? Maybe just instantiate as a child to the LeftFoot and RightFoot transform childs?
    - I am using UMAPhysics and I love it! Works perfect and looks for failed landings, just setting ragdolled to true. But if I destroy the player and initiate it again, it shakes / trembles all the time although it should be a complete new instance, do I need to reset something "ragdolled"?

    Thanks and have a nice weekend
     
  29. Firlefanz73

    Firlefanz73

    Joined:
    Apr 2, 2015
    Posts:
    1,328
    I got both problems solved/working. Thanks for your interest ;-)
     
  30. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,243
    If you want to check it out, Later versions of the code abandoned the character string (the JSON on JSON), and moved to a struct called an "AvatarDefinition", that is then serialized/deserialized directly to JSON, and can be generated/used on a server without UMA installed.
     
    hopeful likes this.
  31. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,243
    Just delete the UMA folder
     
  32. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,243
    Are you on the latest code? I think that is fixed on GIT.
     
  33. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,243
    Sorry I didn't see this, and glad you got it going. Notifications got lost for this thread somehow.
     
    Firlefanz73 likes this.
  34. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,243
    UMA 2.13b1 Released

    https://github.com/umasteeringgroup/UMA/releases/tag/v2.13b1

    You can now enable/disable default wardrobe recipes without removing them from the list in the customization section.
    The currently equipped wardrobe recipe is marked with a * in the list.
    Enabled recipes are marked with a plus sign.
    Disabled recipes are marked with a minus sign.

    EnableDisable.png

    The Hair Smoosher has been updated and bugs fixed.
    Clipping Plane offset - It will now allow you to tune the plane points on the clipping plane slot.
    You can now scale and offset the smooshed hair to help adjust for different polygon densities on the hair slot.


    smoosher2.png
    Overlays can now have Photoshop-style blend modes applied to them. This allows for more control over how the overlay is blended with the underlying texture.
    Blends are specified on the individual texture channel on the overlay.
    Supported blend modes are: Normal, Multiply, Screen, Overlay, Darken, Lighten, Color Dodge, Color Burn, Hard Light, Soft Light, and Subtract.
    BlendModes.png


    Drag and drop support for merging recipes into other recipes, with slots/overlays/colors/options.
    Mesh Hide asset editor can now export occlusion data to a texture, and load and apply occlusion data from a texture.
    Fixed bug in Addressable preloader where it would not ask to load additive recipes, causing those not to work at all when using addressables.
    Added new compositing shader for Diffuse/Normal/Metallic workflow, so you can drop it in most recipes.
    Added favorites window so you can add whatever favorites you want
    Colors can now be marked as "base colors" in the customization window, and filtered to those colors.
    Added option to "average normals" on the slot welder.
    Added ability on DCA to "force suppress" slots or overlays based on tag. For example, if you want to remove an eyebrow overlay off the face if you have used replacement texture for the face that already contains them.
    Added preference to use the Burst Compiler to speed up mesh generation. Requires the burst compiler to be installed.
    Added option to tile overlays when using the Keep Textures mode.
    Added additional sanity checking in various functions for those times when things are going so well. :)
    Disabled index healing (even when enabled in preferences) when playing in the editor
    Added option to trigger various rebuild types in the editor, not just a full rebuild.
    Added "Second pass" material to UMAMaterial. When present, will duplicate the submesh, and draw the submesh a second time with the second material. This is useful for simulating multi-pass in URP.
    Added option to UMAMaterial to specify alternate materials for different SRP pipelines.
    ConvertRenderTexture is now off by default on mobile.
    Fixed various leaks/bugs in MeshHideAsset Inspector.
     
  35. Kst001

    Kst001

    Joined:
    Sep 14, 2021
    Posts:
    16
    How should Hair Smoosher be used? Should I add this component to the character game object with DynamicCharacterAvatar? Is it supposed to be used before building, or is it to be executed at runtime after hair change?
     
  36. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,243
    It happens dynamically when the hat+clipping plane are equipped at runtime. Once you have everything setup, it's all automatic. Ignore the component, it will be removed from later versions. It's now integrated into the DynamicCharacterAvatar.

    I've attached a PDF with the documentation.
     

    Attached Files:

    Kst001, Firlefanz73 and hopeful like this.
  37. Username24323

    Username24323

    Joined:
    Mar 22, 2021
    Posts:
    2
    After a few attempts, I finally find a method to fix my daz3d character arms. So I would just post it here for those might encounter the same problem. First of all, set the right scale in unity fbx import settings, the bound extend values of the unified mesh skinmeshrender component should be around 0.5. Then before extract uma avatar asset, make sure that the humanoid avatar of fbx is selected. The extracted uma avatar asset should have some non-zero value in its configuration, in my case those are 0.5.
     
    Jaimi likes this.
  38. jurijc

    jurijc

    Joined:
    Jul 17, 2019
    Posts:
    13
    Hey Jaimi, I'm curious if there's a possibility for deferred character building in UMA? I want to change wardrobe items quickly on the customization screen and only build the character when leaving.
     
  39. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,243
    Yes, you call SetSlot to set the wardrobe item on the character, it does not automatically build. Then when you want to build the character, call BuildCharacter. Note that building a character is pretty quick except in some special cases, typically people set the slot, and build right away.
     
  40. ncnkalinovskij

    ncnkalinovskij

    Joined:
    Oct 18, 2023
    Posts:
    4
    Hello,
    Was wondering if you could provide some insight on how geometry order works in UMA.
    I've encountered the regular alpha sorting issue with our characters, where I have several slots with transparency to them, namely the hair which is made via alpha planes and glasses, which have transparency to lenses. On a singular object basis what is being done to remedy transparency issues is manually sorting the transparent layers within an object (face indices belonging to the planes closest to the head are lower and increase as the planes get layered on top). Logically, adding glasses would have to make the new indices for glasses ordered after the face indices for the last hair plane, however in the final assembled UMA character this does not seem to be the case, and neither is it affected by the order in which the items are added onto the character. I've attached the screenshot illustrating the alpha issues I'm referring to. So my question is how exactly does UMA assemble the final face index list for the merged character, and if there's any way to directly influence the face order to force the "proper" alpha sorting.
     
  41. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,243
    Items are merged together in this order:

    1. base race recipe - all the base slots are merged in order they are in the recipe.
    2. wardrobe recipes - recipes are sorted in order that the wardrobe slots are listed on the race. Then slots within recipe are ordered by position they are in the recipe.
    3. additional recipes - merged in order they are on the character. Any slots inside the recipe are merged in the order they exist in the recipe.

    So whatever slot your glasses are in, should go after the hair slot on your race, then the glasses faces would be placed after the hair texture in the mesh. I think there are cases where Unity can reorder things. If you find this doesn't fix it, Another fix would be to break out your glasses into a separate umamaterial/material, with a higher sort order.



     
    hopeful and ncnkalinovskij like this.
  42. Kst001

    Kst001

    Joined:
    Sep 14, 2021
    Posts:
    16
    I have done every step but it does not work and the clipping plane is visible. What am I doing wrong?
    upload_2023-11-13_17-55-59.png
     
  43. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,243
    If the clipping plane is visible, then it is being rendered and merged. That should not happen. Most likely, the slot is not marked as a clipping plane.
     
  44. jurijc

    jurijc

    Joined:
    Jul 17, 2019
    Posts:
    13
    Is it possible to make the wardrobe item visible immediately after calling 'SetSlot' without waiting for the 'BuildCharacter' step? I understand that it may not be optimized for rendering, but in a character customization screen, reducing the lag when changing items is more important to me.
     
  45. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,243
    No - building is what causes it to be visible. If you are just adjusting colors or DNA, then it can be a lot faster to just update those using ForceUpdate, but if you are setting slots, then you must call BuildCharacter. What is causing lag when building? UMA is used on mobile devices, and builds pretty fast. Are you using your own races with tons of Blendshapes? (those are slow).
     
  46. jurijc

    jurijc

    Joined:
    Jul 17, 2019
    Posts:
    13
    Thanks for the info, Jaimi. I'm already using 'ForceUpdate' for colors and DNA, and yes, I'm using my own race with 52 blendshapes for facial animations. To prevent clipping issues, I've divided the character's body and clothing into many parts. I'm also using many accessories like hats, piercings, tattoos, handbags, etc. As a result, when many items are set, especially on older mid-range devices like the Samsung A40, noticeable lag occurs when I change wardrobe items and rebuild.
     
  47. ncnkalinovskij

    ncnkalinovskij

    Joined:
    Oct 18, 2023
    Posts:
    4
    Thank you so much for the help, it works well after reorganizing the slots :)
     
    hopeful and Jaimi like this.
  48. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,243
    There are several things you can do to speed up the building process.

    1. Are you on the latest beta release? If not, upgrade. It's faster in most cases.
    2. In your prefab, just in the customization screen, Turn OFF "Load Blendshapes" on the DynamicCharacterAvatar. The face animations will be gone, but should be a speedy build.
    3. If you can't turn off blendshapes, you might need to just manage them. There's some complicated to explain functions that let you apply on certain blendshapes. This involves
    4. Turn OFF "Copy render texture" on your UMAGenerator in your uma_glib prefab. This disables a step that copies the texture from VRAM to RAM in Unity. However, this is not really needed on mobile in most cases and causes a stall.
    5. Use the compositing materials in the latest beta. This skips the texture atlas building, lowers RAM usage, and skips an entire step. It does increase drawcalls though, but in many cases this is preferable to uses more RAM.
    6. Implement lower poly count slots for low power devices, and dynamically load the correct ones using addressables or asset bundles (the slots can have the same "slot name", so only the loading system needs to be aware of them). This is a more complicated discussion also, and is art intensive. However, you can also save memory on lower end devices, and speed up the building quite a bit.

    Those are just some things off the top of my head.
     
    hopeful likes this.
  49. jurijc

    jurijc

    Joined:
    Jul 17, 2019
    Posts:
    13
    I'll definitely try these suggestions. Thanks again for your help!
     
  50. J_Kasowski

    J_Kasowski

    Joined:
    Jan 3, 2023
    Posts:
    19
    Hello, I know this is probably a stupid question but I can't seem to find an answer. Most guides seem to suggest changing the "Shared Color" should update the color... I've tried this:

    Code (CSharp):
    1. void SetColor()
    2.         {
    3.             avatar.SetColor(sharedColorName,Color.red,UpdateTexture:true);
    4.             avatar.UpdateColors(true);
    5.         }
    With " sharedColorName='Eyes' "

    It correctly changes the shared color (assuming the color multiplier is the correct thing):
    upload_2023-12-1_2-41-21.png

    But this fails to actually change anything even though the eyes are set to "Use Shared Color: Eyes":
    upload_2023-12-1_2-42-3.png

    What's the proper way to change eye/skin/other colors through a script?