[WIP] UMAElements - UMA Lego, dyeable clothing, and attachments

I’m working on a system, called UMAElements, for UMA that enables devs and content creators to create humanoids using almost lego like pieces, and a minimum of coding.

The main core is a new Elements Library (pretty similar to the UMA SlotLibrary for those that know UMA). This Library consists of ElementData ScriptableObjects. Each ScriptableObject can be a body-part, an item of clothing, or an attachable item.

Elements are added together to produce a build. When adding an Element, a single multiplier color can be given, or three colors can be given used in conjunction with the Element’s splat-map image to provide dyeable clothing similar to most MMORPGs.

Attachments are an easy way to have things like weapons, backpacks, or inventory bags working with UMA, without being part of the internal UMA build and atlases. They are prefabs that are parented to one of the nine (currently) attachment points.

That’s the basics of UMAElements. The idea being to make UMA easily accessible to more people, as it can be quite a complex system.

UMAElements is free.

8 Likes

Fantastic, Whippets! It is exactly what we need. Thank you.

Sounds cool! Will absolutely check it out : )

Very awesome thanks Whippets ^w^!

Thanks Whippets, awesome work! I will put this through its paces some time soon and let you know how things go. :slight_smile:

Screenshots or it didn’t happen!

1 Like

Yay! =D Really happy to hear that!

1 Like

New version 0.9.2 coming soon with a threaded Dye system, which prevents the brief stutter whilst the dyes are processed.

1 Like

0.9.3 released - fixed a bug where UMA wasn’t correctly positioned within character controller capsule.

Looks great, however I can’t get the Test CS dye-able shirt demo to work.
When I press C all I get is: “Unsupported texture format - needs to be ARGB32, RGBA32, RGB24 or Alpha8”.

Any Ideas?

Hi Secret, for dyeable clothing, the texture for the splat map needs to be set to read/write and RGBA32 in the inspector, as does the diffuse texture for the UMA Overlay. That should enable the texture merger to work.

I’d set these options in the code if I could, but I’ve not seen any way to do that. Let me know if that works ok, or if you’re still having issues.

Thank you Whippets, that worked a like a charm.
I’d checked and double checked the splat map, but not looked at the UMA Overlay textures.

If anyone else experiences this issue, navigate to UMA > UMA_Assets > Overlays > Male > MaleShirt01 and change the format for both textures to RGBA32.

Very nice library by the way, I’ve been playing around for a couple of hours and am very impressed.

Nice little library, just a couple of nitpicks…

  • Ability to load a UMA character from the standard json format would make it play nice with UMA and other UMA utilities.

  • Newtonsoft has a great json serializer that would have been a much cleaner and less brittle solution for your pack/unpack.

  • If it was on github I’d be tempted to actually contribute some of these fixes. As might others as this is a really useful tool.

1 Like

Sure thing. I could use some help getting it onto git, but there’s a repository waiting at https://github.com/umaelements

Nice work Whippets, very useful system
I have some ideas, to improve your system

  1. in your method HumanoidBuilder.Update() we have to use Name of object
    it cause some problems when we have 2 object at the same name, better option will be using GameObject instead of string
  2. when we choose attachment position will be good to add rotation to items, as sample sword work good, but rifles need small rotation :slight_smile: good idea is to customize local rotation

I think a better solution to item rotation is to just add it as a child to an empty gameobject and just adjust the rotation that way. Then you dont have to input the rotation as numbers for every single item : )

i thought to realize with it, but some items need other rotations when are in hand and other when are not active
just see screens:
in hand

on the left shoulder blade

I found 3rd issue, when we attach item as DefaultPosition None and set on it, item is deattach and lay on the ground on scene at 0,0,0 :frowning: