Search Unity

UMA - Unity Multipurpose Avatar on the Asset Store!

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

  1. goat

    goat

    Joined:
    Aug 24, 2009
    Posts:
    5,182
    Let me copy one back to my disk. Others have noticed new slowness too but they all seem to involve Unity 2D and os X.

    OK, I upgraded a copy of another project, on PC, and it is also ~ 5 - 10 FPS slower. It's not UMA. Thanks.
     
    Last edited: May 28, 2014
  2. lgz

    lgz

    Joined:
    Apr 19, 2013
    Posts:
    44

    Hello again ;)
    Here is the link for the live webplayer demo !.
    And I started a new thread for the pack - http://forum.unity3d.com/threads/248540-AL-Male-Civilians-Pack-for-UMA

    As I don't want to make a mess on the original UMA thread :)


    regards
    ~luk
     
  3. goat

    goat

    Joined:
    Aug 24, 2009
    Posts:
    5,182
    Likewise, it's a Unity 4.5 problem so I'll do more testing on os X Lion and post to the Unity 4.5 thread. Thanks.
     
  4. Gimulnautti

    Gimulnautti

    Joined:
    May 27, 2014
    Posts:
    9
    Hello.

    First I must say that UMA looks like very promising framework for the future, it has a lot of the components a lot of people are going to need, and the performance is not bad at all! However, setting up an asset pipeline seems to be hanging in the very first step for us; creating a new race. I know the race tutorial is coming up soon and can gladly wait for that, but in the meantime perhaps you can help with a simple stacktrace, perhaps the problem is relatively common and easy to solve..

    We've set up our rig as a clone from the UMA content creator pack's rig, then skinned our own mesh to it. We've split the mesh to slots as we would like them (a few less parts than the uma standard avatar) and imported both the unified mesh (= race) and the individual meshes to unity with scale 1 and animation mode legacy. Then open up the material builder, set the unified skinnedmesh renderer, set the uma default material shader and drag in the slot mesh and press create slot (just like in the tutorial videos). We are using 3ds max for content creation and authoring the .fbx files.

    I think we tried tweaking the meshes and bone data and import settings to every possible variation but have had no luck. Every time we run into this error:

    ArgumentNullException: Argument cannot be null.
    Parameter name: key
    System.Collections.Generic.Dictionary`2[UnityEngine.Transform,UnityEngine.Transform].TryGetValue (UnityEngine.Transform key, UnityEngine.Transform value) (at /Users/builduser/buildslave/monoAndRuntimeClassLibs/build/mcs/class/corlib/System.Collections.Generic/Dictionary.cs:588)
    UMA.SkinnedMeshAligner.RecursiveFindBoneInHierarchy (UnityEngine.Transform bone, UnityEngine.Transform hierarchyRoot, System.Collections.Generic.Dictionary`2 boneMap)
    UMA.SkinnedMeshAligner.RecursiveFindBoneInHierarchy (UnityEngine.Transform bone, UnityEngine.Transform hierarchyRoot, System.Collections.Generic.Dictionary`2 boneMap)
    UMA.SkinnedMeshAligner.RecursiveFindBoneInHierarchy (UnityEngine.Transform bone, UnityEngine.Transform hierarchyRoot, System.Collections.Generic.Dictionary`2 boneMap)
    UMA.SkinnedMeshAligner.RecursiveFindBoneInHierarchy (UnityEngine.Transform bone, UnityEngine.Transform hierarchyRoot, System.Collections.Generic.Dictionary`2 boneMap)
    UMA.SkinnedMeshAligner.RecursiveFindBoneInHierarchy (UnityEngine.Transform bone, UnityEngine.Transform hierarchyRoot, System.Collections.Generic.Dictionary`2 boneMap)
    UMA.SkinnedMeshAligner.RecursiveFindBoneInHierarchy (UnityEngine.Transform bone, UnityEngine.Transform hierarchyRoot, System.Collections.Generic.Dictionary`2 boneMap)
    UMA.SkinnedMeshAligner.RecursiveFindBoneInHierarchy (UnityEngine.Transform bone, UnityEngine.Transform hierarchyRoot, System.Collections.Generic.Dictionary`2 boneMap)
    UMA.SkinnedMeshAligner.RecursiveFindBoneInHierarchy (UnityEngine.Transform bone, UnityEngine.Transform hierarchyRoot, System.Collections.Generic.Dictionary`2 boneMap)
    UMA.SkinnedMeshAligner.RecursiveFindBoneInHierarchy (UnityEngine.Transform bone, UnityEngine.Transform hierarchyRoot, System.Collections.Generic.Dictionary`2 boneMap)
    UMA.SkinnedMeshAligner.RecursiveFindBoneInHierarchy (UnityEngine.Transform bone, UnityEngine.Transform hierarchyRoot, System.Collections.Generic.Dictionary`2 boneMap)
    UMA.SkinnedMeshAligner.RecursiveFindBoneInHierarchy (UnityEngine.Transform bone, UnityEngine.Transform hierarchyRoot, System.Collections.Generic.Dictionary`2 boneMap)
    UMA.SkinnedMeshAligner.RecursiveFindBoneInHierarchy (UnityEngine.Transform bone, UnityEngine.Transform hierarchyRoot, System.Collections.Generic.Dictionary`2 boneMap)
    UMA.SkinnedMeshAligner.FindBoneIndexInHierarchy (UnityEngine.Transform bone, UnityEngine.Transform hierarchyRoot, System.Collections.Generic.Dictionary`2 boneMap, System.Collections.Generic.Dictionary`2 boneIndexes)
    UMA.SkinnedMeshAligner.AlignBindPose (UnityEngine.SkinnedMeshRenderer template, UnityEngine.SkinnedMeshRenderer data)
    UMAEditor.UMATextureImporterUtil.CreateSlotData (System.String slotFolder, System.String assetFolder, System.String assetName, UnityEngine.SkinnedMeshRenderer mesh, UnityEngine.Material material, UnityEngine.SkinnedMeshRenderer prefabMesh)
    UMAEditor.UmaTexturePrepareWindow.CreateSlot_Internal ()
    UMAEditor.UmaTexturePrepareWindow.CreateSlot ()
    UMAEditor.UmaTexturePrepareWindow.OnGUI ()
    System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/monoAndRuntimeClassLibs/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)


    I had a look at the Git repo for UMADLL and saw that the AlignBindPose method is looking for a named bone, but then fails when it discovers a null parent bone apparently. This is extremely puzzling, as we import the exact bone structure that is used in the uma content pack. Any tips, tricks, how to proceed?
     
  5. ecurtz

    ecurtz

    Joined:
    May 13, 2009
    Posts:
    640
    It's clearly a bug in the code, but you're probably hitting it because the root bone on the skinnedMeshRenderer of your race has a different name than the one on the new slot.
     
  6. goat

    goat

    Joined:
    Aug 24, 2009
    Posts:
    5,182
    OK, I've tested enough. My Mac Mini Lion Intel GMA 950 used to perform of all intents and purposes like my EP121 Windows 8 Intel HD Graphics. Now they have both slowed down substantially, the Mac Mini unusably, and the Mac Mini graphics look bad. They seems to be being done differently than before.

    For sure there is at least one extra level of internal API as they untangle things.
     

    Attached Files:

  7. Bigpete591

    Bigpete591

    Joined:
    May 7, 2013
    Posts:
    60
    It was mentioned earlier in the thread, but I didn't see a solution posted. Every time I destroy a UMA avatar in the scene I get this error:

    It is trying to destroy the Male_Unified.fbx asset.
     
  8. goat

    goat

    Joined:
    Aug 24, 2009
    Posts:
    5,182
    I get that error too but I haven't worked on it since January. It has to do with the animator object I believe. It doesn't like to be changed from the default.
     
  9. Waffleslug

    Waffleslug

    Joined:
    Jan 3, 2013
    Posts:
    12
    Is there any way to control what gets written to the _MainTex alpha channel when an overlay is added to it? Right now an overlay will always output a white pixel onto the alpha channel wherever it copies color values, since the only place it will be copying is where there is a value in the alpha channel.

    I think the ideal situation is that we could set whether an overlay writes a white, black (multiplied by the transparency value) or nothing to the alpha channel per overlay, rather than using what is in the overlay's alpha channel - since the alpha channel in this case is being used to provide composting data and not rendering data.

    What I am interested in using the alpha channel for is marking what counts as skin for my shader to use as a mask for tinting and for applying skin-shading elements. But there are some things that are written as overlays that I would like to count as skin and the current workflow doesn't let me have any control over that. I have added an additional texture to use for this purpose but it bothers me to see a texture channel go unused.

    Here's an example of what I'm doing right now. The first screen is what I'm writing to a 3rd texture, picking up a defined value from the source and copying it onto the final texture.

    The second screenshot is what's in the MainTex alpha. I have no way of telling it to write black for the eyes, so that's the 2nd square above that's not present in the first screenshot. That's the UMA Avatar's eyes, which I want the shader to pick up as skin for shading it properly. If I were to put some tattoos on as overlays they would also get set as white like the underpants when I would prefer it stay black, or some shade of gray so it would still be treated as skin-like by my shader.



     
  10. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362

    Hi there!
    The alpha channel on main texture is required for generating the atlas based on overlay composition itself, I would recommend using a different channel or including an extra texture to provide more data to the shader.
    Cheers
     
  11. sgtkoolaid

    sgtkoolaid

    Joined:
    May 11, 2010
    Posts:
    899
    completely confused on how to enable the sliders to customize the features on a given model. I am using the crowd.unity file to start a male model. it works fine, but the sliders do squat. I am sure its me overlooking something. any help? please.
     
  12. ecurtz

    ecurtz

    Joined:
    May 13, 2009
    Posts:
    640
    In the crowd demo? You need to click on one of the avatars with the right mouse button to focus on them.
     
  13. sgtkoolaid

    sgtkoolaid

    Joined:
    May 11, 2010
    Posts:
    899
    ahh right click in the game scene. finally works. thanks.
     
  14. Gimulnautti

    Gimulnautti

    Joined:
    May 27, 2014
    Posts:
    9
    Is it possible that MAX does something to the bones when you import FBX? We added zero skin data to the bones in the rig, and surprise surprise, we are in the next step. But still fails when looking for Global bone, even though it's definitel there in the rig in max...

    NullReferenceException: Object reference not set to an instance of an object
    UMAEditor.UMATextureImporterUtil.FindGlobalBone (UnityEngine.Transform bone)
    UMAEditor.UMATextureImporterUtil.FindGlobalBone (UnityEngine.Transform bone)
    UMAEditor.UMATextureImporterUtil.FindGlobalBone (UnityEngine.Transform bone)
    UMAEditor.UMATextureImporterUtil.ExtractNewBones (UnityEngine.SkinnedMeshRenderer newMesh, UnityEngine.SkinnedMeshRenderer oldMesh)
    UMAEditor.UMATextureImporterUtil.CreateSlotData (System.String slotFolder, System.String assetFolder, System.String assetName, UnityEngine.SkinnedMeshRenderer mesh, UnityEngine.Material material, UnityEngine.SkinnedMeshRenderer prefabMesh)
    UMAEditor.UmaTexturePrepareWindow.CreateSlot_Internal ()
    UMAEditor.UmaTexturePrepareWindow.CreateSlot ()
    UMAEditor.UmaTexturePrepareWindow.OnGUI ()
    System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/monoAndRuntimeClassLibs/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)
     
  15. FargleBargle

    FargleBargle

    Joined:
    Oct 15, 2011
    Posts:
    774
    I've just started making some clothing - shirts, pants, boots, sunglasses, hats - using 3ds Max 2014, and LaneFox's video tutorial. I followed it step by step, especially the scaling, and FBX import bone settings. I parented my new meshes to the appropriate separated skinned meshes from the content creation pack, then detached them, used skin wrap, and then converted to skin, exactly as shown in the video. I then exported them back to Unity, again following Lane's export recommendations, and everything worked fine. When creating new slots using Material Builder, it's important to fill in all of the blanks correctly, as shown here:

    MatBuilder1.PNG
    In this example, since the boots I've created are for a male, I've used the Male_Unified > UMA_Human_Male as my Race Prefab Skinned Mesh. Depending on what you're making, you might be using the female instead, or a different race entirely, but it needs to be properly installed and recognized by UMA first. The textures aren't as important when creating slots, but you'll need them if you're making overlays afterwards. If you follow the steps from the video, and are careful to get the details right, it should all work. If your workflow involves any extra steps not covered in the video, I'd start looking there if you're having problems. Good luck.
     
    Last edited: Jul 2, 2014
  16. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    I´ve been working on the werewolf race at night those last days. Today I´ve spend some time on rig/skinning, here´s some funny results. Skinning is not 100% yet, but it´s worth posting =D
     
  17. Xohho

    Xohho

    Joined:
    Jun 6, 2014
    Posts:
    1
    Is there a version of this available that will function on Unity 4.2.2? I'm a licensed developer for the Wii U indie program and that's the latest version currently available.
     
  18. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    Hi there!
    Does 4.2.2 already exposed the Mecanim avatar creation functions? We need them for UMA. If it does, you can use the UMA version available on GIT.
    Cheers
     
  19. nsmith1024

    nsmith1024

    Joined:
    Mar 18, 2014
    Posts:
    870
    Hello,

    I bought the UMA in-game avatar system and I'm trying to get it to work with uLink.

    I downloaded the uLink sample "snowbox", and tried to replace the boxman character in that demo with UMA Character, but of course it doesnt work (surprise surprise)

    Simply adding the uLinkNetwork view to UMACharacter prefab doesnt do the trick. In snowbox demo there are actually three prefabs, Owner, Creator, and Proxy. I replaced all three with the UMACharacter, but no joy.

    I'm going totally crazy here, been working at this for weeks, nobody in UMA tech support has replied to my emails about this.

    I suspect that one issue could be that the transform of the root UMACharacter object in the scene isnt actually changing when the character moves, but some child deep down is actually moving, while the parent and first child stays still, and the rest of the child's below that are created dynamically, with locomotion.cs for controlling the animation is attached in there.

    I dont know if this is the problem or not. But I cant get it to work.

    The main reason for getting UMA was to use it in an actual game, but if it cant work with uLink, then......???
    I also tried UMA with some other network systems like UMMO, it wont work with that either, possibly because of the same reason as above.

    Anybody succeeded in getting UMA to work with uLink "snowbox" demo, which is simple authoritative network multi-player game.

    Thanks
     
  20. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    UMA is free and open source, what do you mean with "I bought the UMA in-game avatar system" ?
    As I´ve said, I usually receive some emails that end up in the spam box, might have been your case. I´m the creator of the project, but writting your questions here at UMA forum thread there will be a bigger chance of getting help from someone also using uLink.

    UMA is already being used in many MMO games, so it might be the case the problem lies on uLink side..

    It´s a good idea to watch this video tutorial to understand how UMA avatars can be saved and streamed through the network:


    If you´re new to Unity, I would recommend starting with a simple project, a multiplayer game might end being quite complex to start with.
    Cheers
     
  21. Gimulnautti

    Gimulnautti

    Joined:
    May 27, 2014
    Posts:
    9
    Yes. But as I stated earlier, we are creating our own race and not getting out of square one really. Any news on the race creation tutorial, Fernando?
     
  22. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
     
  23. Gimulnautti

    Gimulnautti

    Joined:
    May 27, 2014
    Posts:
    9
    So the wolf-man says: "Just you wait!" ? :)
     
  24. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    Wont take long now =)
    After the first skinning steps, I identified some areas were I could improve topology, So at night I´ll work on those adjusts.
     
  25. nsmith1024

    nsmith1024

    Joined:
    Mar 18, 2014
    Posts:
    870
    TOPIC: UMA and uLink in a multiplayer network game


    Hello,

    I'm writing a authoritative networked multiplayer game using UMA and uLink for the networking.

    UMA seems to be the perfect character system to be used in a networked game since the players can easily change their characters appearance during the game play. However I'm having issues with using UMA over the network.

    I just started learning unity around a month ago, so I got a huge learning curve, and am just trying to get the hang of it, but it seems the normal way to set up an network aware player is to drag a network view to the player object (the object would be the UMACharacter prefab in this case), then set the "observed" parameter of the network view to the transform of the player object, and that would be all you need to do in order for the movement of the player to be replicated in all the clients playing the game over the network.

    The other way would be to set the "observed" parameter of the network view, to "script", then use the serialization function to manually serialize the character position, rotation, animation etc, and it will appear and move on all clients and players in the network.

    However, none of those standard methods work with UMA, simply because the root prefab object isnt the object that is actually moving, its the third child down where all the movement and animation takes place. So its not possible to just drag a network view and attach it to the root prefab, because at prefab time, there is no children on the UMACharacter prefab, they are created dynamically at run-time. So there isnt an easy way to specify the correct transform to observe to an attached network view since the Prefab root isnt the one thats changing during the game.

    Maybe the UMA system should be changed so that at least the root prefab UMACharacter object is somehow updated every frame, with the players current position, rotation, animation etc so that this can be easily sent over the network to synchronize it with other networked players using an attached network view set to observe the root transform or script.

    In order to get it sort of working, I had to go deep into the guts of UMA locomotion.cs script and dynamically add a network view at run-time on both the server and on all clients, then send a newly allocated network ID to everybody, then set the network to observe the transform of the locomotion's animator, or the transform.

    This works a little but not all the time, because it easily gets out of sync, for example the animation sometimes gets out of sync, and the physics is wrong, so the player position is sometimes end up being very different on some clients. However, I suspect this could be caused by my lack of experience in doing this kind of thing.

    Has anybody else tried using UMA in a networked game? it seems UMA would be perfect for multiplayer networking game, except for this little problem where the root prefab is not updated with the actual information about where/what of the actual player the root pefab represents.

    thanks
    nsmith
     
  26. Waffleslug

    Waffleslug

    Joined:
    Jan 3, 2013
    Posts:
    12
    I have a request, hopefully it's not too major (I may try to find the time to get the source code and look at it myself).

    Right now OverlayData only accepts Texture2D. Would it be possible to change this filter/type to Texture so that it will also work with ProceduralTexture objects such as ones created by Substances? This way we could then run the initial input textures through a substance to add procedural dirt, wear and tear and other effects to them on a per-overlay basis before they are baked into the UMA Avatar textures.

    The main hurdle I foresee is that setting the IsReadable flag on a ProceduralTexture requires access to the ProceduralMaterial that created it and I don't see any way to access this information from the texture itself. OverlayData would probably need an additional field for the non-pro user to provide the ProceduralMaterial if they are using Procedural Textures in the overlay. I imagine it would work without any additional changes at all on Unity Pro since it uses render textures and the textures should behave identically there and won't need to be rebuilt with the readable flag.

    Here's some code I use in a script for copying the procedural textures created by a procedural material, part of a process I currently use as a pipeline for processing the uma body overlay textures for a physically based renderer.


    ProceduralMaterial pmat = sourceMaterial as ProceduralMaterial;
    // Rebuild the procedural textures with the readable flag set
    // We also requires that the Format be set to RAW on the procedural material
    ProceduralMaterial.substanceProcessorUsage = ProceduralProcessorUsage.All;
    pmat.isReadable = true;
    pmat.substanceProcessorUsage = ProceduralProcessorUsage.All;
    pmat.RebuildTexturesImmediately();

    // Iterate through all the textures generated by this material
    // We can also grab a specific texture by name or use
    // an existing variable to access a specific texture
    Texture[] texs = pmat.GetGeneratedTextures();
    foreach(Texture t in texs)
    {
    ProceduralTexture pt = t as ProceduralTexture;
    Texture2D destTexture = new Texture2D(pt.width, pt.height, TextureFormat.RGBA32, true);
    destTexture.SetPixels32(pt.GetPixels32(0,0,pt.width, pt.height));
    destTexture.Apply();
    // do things with destTexture
    }

    http://docs.unity3d.com/ScriptReference/ProceduralMaterial.html
    http://docs.unity3d.com/ScriptReference/ProceduralTexture.html

    There is also a free collection of procedural materials on the asset store you can use for testing.
    http://u3d.as/content/allegorithmic/18-free-substances-/26a

     
  27. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    He is very obedient, good boy =D
     
  28. Gimulnautti

    Gimulnautti

    Joined:
    May 27, 2014
    Posts:
    9
    About setting up UMA without the DLL directly form sources (to do some debugging), where do I get information about setting up that? Simply using the files as-is doesn't cut it:

    Internal compiler error. See the console log for more information. output was:
    Unhandled Exception: System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded.
    at (wrapper managed-to-native) System.Reflection.Assembly:GetTypes (bool)
    at System.Reflection.Assembly.GetTypes () [0x00000] in <filename unknown>:0
    at Mono.CSharp.RootNamespace.ComputeNamespaces (System.Reflection.Assembly assembly, System.Type extensionType) [0x00000] in <filename unknown>:0
    at Mono.CSharp.RootNamespace.ComputeNamespace (Mono.CSharp.CompilerContext ctx, System.Type extensionType) [0x00000] in <filename unknown>:0
    at Mono.CSharp.GlobalRootNamespace.ComputeNamespaces (Mono.CSharp.CompilerContext ctx) [0x00000] in <filename unknown>:0
    at Mono.CSharp.Driver.LoadReferences () [0x00000] in <filename unknown>:0
    at Mono.CSharp.Driver.Compile () [0x00000] in <filename unknown>:0
    at Mono.CSharp.Driver.Main (System.String[] args) [0x00000] in <filename unknown>:0
     
  29. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    Hi there,
    I never worked with uLink so I won´t be of great help on that, but I´ve been doing networking tests with UMA for a while now, and it´s quite viable to stream the avatar data and share all necessary information between server and clients. Implementing a project that requires networking is usually a complex task that requires extra knowledge, it´s usually not enough to use the solution of simply tracking the position and rotation of the character over time. When you have custom avatars, you will need to share the avatar information so it can be created for all users, you need to decide the best way to sync avatar animation and so on. uLink might help on those tasks, but it´s important that you understand how it works if you´re aiming for a real game with many avatars.
     
  30. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    There´s a developer trying to integrate Substance and UMA, but I didn´t managed talking with him for a while.
    As soon the developer group has any news, you will hear them here. If you would like to help on that, let me know and I can get you in touch with the other devs.

    Cheers
     
  31. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    This has already been discussed here, swaping between DLL and full source code requires manually setting the references. Using the DLL was a request from Unity itself, but we might be able to provide an automatic solution to swap between then, but there won´t be an ETA for that.
     
  32. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    Skinning is done, I´ll move to the first tests on the integration with UMA itself at night. =)

     
  33. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
  34. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    Rendering result using LUX.
    I´ll base the specular and gloss values on those results, so it will be easy to change between UMA base shaders and IBL.

     
  35. adventurefan

    adventurefan

    Joined:
    Jan 17, 2014
    Posts:
    230
    That's really cool man. Looks like a character from Bloodborne.
     
  36. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    Pose tests for werewold race



     
  37. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    Thanks =)
     
  38. Fawfulfan

    Fawfulfan

    Joined:
    May 22, 2014
    Posts:
    13
    Hello everyone, I'm having some serious difficulties with UMA. I am trying to integrate the UMAzing character creator with the RPG 2.0 package. I want the default character creator scene in Unity to generate a dynamic avatar which will then be used as the permanent model for the RPG 2.0 file...I basically want the player spawner to spawn the UMA avatar instead of the sci-fi RPG characters, and it should have all the functionality of RPG 2.0 (character controllers etc).

    I'm encountering several problems. For one thing, the dynamic avatars aren't prefabs so I don't really know how to call their models. For another, when I try to change which prefab is loaded by the character controller, it breaks the spawner, nothing loads, and I get errors.

    What should I do here?
     
  39. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    Hi there!
    I´m not familiar with UMAzing code, but the easiest way to use UMA avatars similar to how prefabs work without the need of 3rd party extensions is to save the character using UMA/Load and Save/Save selected avatar(s) asset. Then take a look on example Scene02, all avatars here are loaded dinamically using saved avatars assets on umaRecipe variable, you can load your own saved avatars this way.

    Hope it helps!
     
  40. Fawfulfan

    Fawfulfan

    Joined:
    May 22, 2014
    Posts:
    13
    A
    Is there any way to do load and save UMA avatars dynamically, like in a script?
     
  41. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    I recommend watching all UMA video tutorials from my channel.
     
  42. Fawfulfan

    Fawfulfan

    Joined:
    May 22, 2014
    Posts:
    13
    That's not what I'm trying to do...I'm trying to save and load avatars AUTOMATICALLY, through scripting. You know, so that a player who creates a character will automatically see it loaded up when they go into the game. Are there any C# functions to (a) find and save an avatar currently in the scene, and (b) load it into an object on command?
     
  43. lgz

    lgz

    Joined:
    Apr 19, 2013
    Posts:
    44
    goat likes this.
  44. Gimulnautti

    Gimulnautti

    Joined:
    May 27, 2014
    Posts:
    9
    Yesh, got the texture importer util running from source code now, and problem is certainly visible:

    At UMATextureImporterUtil.cs in
    private static Transform[] ExtractNewBones(SkinnedMeshRenderer newMesh, SkinnedMeshRenderer oldMesh)
    ...
    ExtractNewBonesRecursive(FindGlobalBone(newMesh.rootBone), FindGlobalBone(oldMesh.rootBone), newBones);
    ...

    is called with newMesh.rootBone as undefined.

    What could be missing in the skinned mesh to not have it's root bone defined? The "oldMesh" (which is the race prefab, right?) does resolve it's root bone quite nicely. This is imported from MAX. However, on the skinned mesh created by the TextureImporterUtil.cs code the root bone is missing. I will run some further tests to try and see where in the process the root bone gets lost.
     
    Last edited: Jun 12, 2014
  45. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    The video tutorial has exactly the example code to save an avatar and load it. You can simply trigger the Save and Load functions in a different way, and handle the avatar data exactly as you need it.
     
  46. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
    =D
    Got luck to check the AssetStore when it got online :)
     
  47. Fawfulfan

    Fawfulfan

    Joined:
    May 22, 2014
    Posts:
    13
    Maybe you could show that code on this post, a little more explicitly? The video was rather small in size and I couldn't easily see the code.
     
  48. FernandoRibeiro

    FernandoRibeiro

    Joined:
    Sep 23, 2009
    Posts:
    1,362
  49. Gimulnautti

    Gimulnautti

    Joined:
    May 27, 2014
    Posts:
    9
    Yes, it seems the code assumes the rootbone from the incoming mesh is a child of the "Global" bone (or that exact bone). It will not work if the rootbone is the rig's root for example, but will just search the parent ouf ot the hierarchy and finally crash on that.
     
    Last edited: Jun 12, 2014
  50. sandboxgod

    sandboxgod

    Joined:
    Sep 27, 2013
    Posts:
    366
    Hi, how do we connect LUX to UMA? Is the directions included in this thread somewhere?

    To be specific, I'd like for my UMA avatars to use LUX skin shaders

    [edit] maybe it is as simple as setting it as a material...
     
    Last edited: Jun 15, 2014