Search Unity

UMA - Unity Multipurpose Avatar on the Asset Store!

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

  1. erw29

    erw29

    Joined:
    Sep 27, 2018
    Posts:
    13
    Hi,

    is there a way to get the absolute height (Like the body height of an human) of an generated UMA in Unity Units?

    Best,

    Erik
     
  2. Firlefanz73

    Firlefanz73

    Joined:
    Apr 2, 2015
    Posts:
    1,316
    It is in the DNA in UmaData I believe :)
     
  3. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    That will give you the modifier for the height, but not the physical height.

    Typically for this kind of thing you would add a bone at the specific place you wanted to put something. (like if you wanted to put a name over someones head). But it's probably simplest to just calculate the length of the vector between the head bone world space position and the origin, and calculate the length of the vector. Probably have to fudge it a bit.
     
  4. Firlefanz73

    Firlefanz73

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

    when I create my UMA characters using UMA DCS but no warddrobes, mixing Slots and overlays by myself and using atlas, the UMA renderer Shows me two materials, one it seems for hair and beard, another one for everything else?

    I have new mesh shaders for hair and Skin and eyes. I would at least like to use those for hair and Skin.

    I tried to look into my DynamicOverlayLibrary, pick a overlay and material and Change it's shader (I realized there are in uma already better shaders for hair than the Standard shader), for example I changed UMA_Hair_Std Material Hair MAt Dbl to some other shader, but when I start the game it uses Standard shader for the hair again…

    Can somebody please tell me how to Change the hair shader for all my uma and if possible the Skin shader for all my uma?

    Thanks a lot and have a nice Weekend :)

    upload_2018-12-15_19-6-12.png
     
  5. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    UMA uses the shader based on a template material. This is defined in the UMAMaterial. So do the following steps:

    Create the objects
    1. Create a normal Unity Material (for example: "hair").
    2. Assign your shader to the hair material, and set any default parameters on that material.
    3. Create a "UMAMaterial" for the template material ("hair") that you created above. For this exercise, call that UMAMaterial "UMAHair".
    Setup the UMAMaterial
    1. On the UMAHair object (the UMAMaterial you just created), assign the "hair" unity material to the Material property.
    2. The Material Type should remain "Atlas" - the tells UMA to combine textures when possible for this material.
    3. Set the Mipmap Bias. Mipmap bias defines how soon it switches mipmaps. For sharp items like hair, you might want to lower this to -1 or -2.
    4. Set the Aniso level. Aniso level specifies the amount of anisotropy. This defines how the mipmaps are used when blending. My recommendation is to set this to like 2 or 4 for fine detailed items like hair.
    5. Set the texture filter mode. For hair, probably Trilinear filtering is best.
    6. Set the texture channels. Set the number of textures that you want to use in your overlays for the Hair material. Likely there will be 3, but this will vary based on the shader.
    7. Set the channel type for each texture channel. Usually this is either "Texture" for everything except normal maps. For a normal map, choose "normal map".
    8. Texture Format is almost always ARGB32
    9. For each texture channel, select the Material Property Name from the drop down. For example, the main texture propertyname is almost always "_MainTex".
    10. You can leave the rest of the properties as they are.
    Assign the UMAMaterial

    1. On the Slots that you want to use the material, set the UMAMaterial property to the "UMAHair" UMAMaterial you created.
    2. On the Overlays that the slots will use, set the UMAMaterial property to the "UMAHair" UMAMaterial that you created.
    3. On each overlay, set the Texture List to the textures you want. Pay attention to the Shader Keywords that specify what the texture channel is supposed to contain.

    Now when you add the overlay to the compatible slot, the hair should be split out into it's own atlas, and that atlas should have a generated texture that uses the default values from your original template material, and the textures you assigned to the overlay in the appropriate spots.
     
    Firlefanz73 likes this.
  6. Firlefanz73

    Firlefanz73

    Joined:
    Apr 2, 2015
    Posts:
    1,316
    Thanks a lot! Same for the Skin?
     
  7. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Yes, same procedure will work for any custom shader.
     
    Firlefanz73 likes this.
  8. cmkeller97

    cmkeller97

    Joined:
    May 29, 2018
    Posts:
    8
    I'm back again with the basic questions, sorry. So I have no idea how to add build references in the global library, or really, how to use the global library at all. I can't seem to find a truly ground-level explanation of how it works anywhere, and everything I've tried to learn from has just made me more confused. All I want to do is add wardrobe assets to basic default recipes for characters that I don't need to ever change their appearances in-game. Help?
     
  9. Firlefanz73

    Firlefanz73

    Joined:
    Apr 2, 2015
    Posts:
    1,316
    Thanks a lot Jaimi!
     
  10. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    The global library is simply a library that indexes your assets. Because the assets are loaded at runtime, they have to be included in the build. The global library simplifies this by adding a reference to the item.

    To use the global library, open the "Global LIbrary Window" from the "UMA" menu at the top of unity. I dock it so that it is easier to use. It will have a drop area that says "drag indexable assets here".

    When you import your wardrobe items, they should all be placed in a folder somewhere. Drag that folder to the drop area, and the library will index them. Open the "Simple Setup" scene and run it, and the wardrobe items should now appear if you are using a compatible race.

    "build references" should be added when you build an application to distribute. To do so, simply click "add build references", and it will add references for everything. You can also manage this yourself, by clicking on the "B+" and "B-" buttons on the asset in the library.
     
  11. cmkeller97

    cmkeller97

    Joined:
    May 29, 2018
    Posts:
    8
    That makes sense, but when I drag Wardrobe Recipes to the box on the Dynamic Character Avatar script, I still get the error "[DynamicCharacterSystem] could not find o3n_male_hair_01_recipe in Resources or any AssetBundles. Do you need to rebuild your UMAResources Index or AssetBundles?" for every asset, even though they exist in the global library. Why is that?
     
  12. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Do you have the UMA_DCS prefab in the scene? If you are in one of the old (uma 1) scenes, they use a different prefab for UMA, and they do not have the Dynamic libraries.
     
  13. cmkeller97

    cmkeller97

    Joined:
    May 29, 2018
    Posts:
    8
    Yes, I do have the UMA_DCS prefab in the scene, and it seems to be working otherwise.
     
  14. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Might try repairing the index. As well, look at all the "Dynamic" objects in the prefab, make sure you haven't accidentally turned off the "Dynamically add from Global Library" option.

    As well, if you've marked them as being in Asset Bundles, they won't load from the Global Library anymore (to prevent duplication).
     
  15. cmkeller97

    cmkeller97

    Joined:
    May 29, 2018
    Posts:
    8
    Figured out that the default settings for UMA_DCS limited the DynamicCharacterSystem component's ability to dynamically add from the global library to certain directories for some reason. Got rid of that, and it solved my issue. Unfortunately, now I'm having a different issue, where I get a "MissingComponentException" when I try to reference the animator controller in my scripting, which says "There is no 'Animator' attached to the "Asushunamir3D" game object, but a script is trying to access it. You probably need to add a Animator to the game object "Asushunamir3D"." even though the Animator component is being generated correctly when I try to run the game. The code in question is copied below.

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.EventSystems;

    public class PlayerController : MonoBehaviour
    {
    public float speed = 6f; // The speed that the player will move at.

    private Vector3 target = Vector3.zero;
    Animator anim;
    Rigidbody playerRigidbody;
    Vector3 movement; // The vector to store the direction of the player's movement.

    int floorMask; // A layer mask so that a ray can be cast just at gameobjects on the floor layer.
    float camRayLength = 100.0f; // The length of the ray from the camera into the scene.

    public void Start()
    {
    //Set up on Scene load
    GameObject a = GameObject.Find("Asushunamir3D");
    anim = a.GetComponent<Animator>();
    playerRigidbody = GetComponent<Rigidbody>();

    // Create a layer mask for the floor layer.
    floorMask = LayerMask.GetMask("Floor");
    }

    void Update()
    {
    float x = Input.GetAxisRaw("Horizontal");
    float z = Input.GetAxisRaw("Vertical");

    // Move the player around the scene.
    Move(x, z);

    // Turn the player to face the mouse cursor.
    RotatePlayer();

    // Animate the player.
    Animating(x, z);
    }

    //Move player to target location.
    void Move(float x, float z)
    {
    // Set the movement vector based on the axis input.
    movement.Set(x, 0f, z);

    // Normalise the movement vector and make it proportional to the speed per second.
    movement = movement.normalized * speed * Time.deltaTime;

    // Move the player to it's current position plus the movement.
    playerRigidbody.MovePosition(transform.position + movement);
    }

    //Rotate player to face what is clicked.
    void RotatePlayer()
    {
    // Create a ray from the mouse cursor on screen in the direction of the camera.
    Ray camRay = Camera.main.ScreenPointToRay(Input.mousePosition);

    // Create a RaycastHit variable to store information about what was hit by the ray.
    RaycastHit hit;

    // Perform the raycast and if it hits something
    if (Physics.Raycast(camRay, out hit, camRayLength))
    {
    // Create a vector from the player to the point the raycast from the mouse hit.
    Vector3 playerToMouse = hit.point - transform.position;

    // Ensure the vector is entirely along the horizontal plane.
    playerToMouse.y = 0f;

    // Create a quaternion (rotation) based on looking down the vector from the player to the mouse.
    Quaternion newRotation = Quaternion.LookRotation(playerToMouse);

    // Set the player's rotation to this new rotation.
    playerRigidbody.MoveRotation(newRotation);
    }
    }

    void Animating(float x, float z)
    {
    // Create a boolean that is true if either of the input axes is non-zero.
    bool walking = x != 0f || z != 0f;

    // Tell the animator whether or not the player is moving.
    anim.SetBool("IsMoving", walking);
    }
    }
     
  16. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    The problem you are seeing is because you are referencing the animator at startup, and it doesn't exist yet because the character has not been built (it has to be added at runtime, because each race can have it's own animator).

    The simplest thing to do is to disable your PlayerController script, and then enable it in the CharacterCreated event.

    1. Disable the PlayerController.
    2. Open up the "character events" panel on the DynamicCharacterAvatar component on your gameobject.
    Add an event to "Character Created" (using the plus sign at the bottom). Drop your GameObject onto the object edit box for the event.
    3. Select PlayerController, and then "bool enabled" from the function dropdown.
    4. select the checkbox to make it set enabled to true.

    Now, it should enable your component after the character is created and has an Animator.

     
  17. vansean

    vansean

    Joined:
    Jan 10, 2015
    Posts:
    2
    I just updated to 2018.3 - I was stoked for the changes to the prefab system, but it seems like those same changes are causing issues in UMA.

    At runtime I get these errors:

    Code (CSharp):
    1. Setting the parent of a transform which resides in a Prefab instance is not possible (GameObject: 'UMADynamicCharactarAvatarWithExpressions').
    2. UnityEngine.Transform:SetParent(Transform, Boolean)
    3. UMA.UMAGeneratorBase:UpdateAvatar(UMAData) (at Assets/UMA/Core/StandardAssets/UMA/Scripts/UMAGeneratorBase.cs:181)
    Code (CSharp):
    1. AvatarBuilder 'UMADynamicCharactarAvatarWithExpressions': Transform 'UMADynamicCharactarAvatarWithExpressions' must be the top most parent, found 'NPCs'.
    2. UnityEngine.AvatarBuilder:BuildHumanAvatar(GameObject, HumanDescription)
    Are these fixed in the 2.8 release candidate? If not, is there any ETA on 2018.3 compatibility?

    Thanks, love the project.
     
  18. cmkeller97

    cmkeller97

    Joined:
    May 29, 2018
    Posts:
    8
    It's working now! Thanks for all of your help!
     
    hopeful likes this.
  19. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    It is possible that it's already fixed, a I've not seen that particular error. However, it's also possible it's still broken, as
    it is not yet tested very thoroughly on 2018.3. Are you able to duplicate the error in one of the existing scenes?
     
  20. karticchaudhary

    karticchaudhary

    Joined:
    Dec 17, 2018
    Posts:
    2
    hi,
    from what i have seen, one can create models and change according to its needs.
    I want to change the shape of my nose through image.
    Can the said functionality be achieved through UMA?
     
  21. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    I'm not understanding what you are wanting? Are you wanting an automated way to match the nose by uploading a picture? If so, no, that is not built in, you would need to detect where the nose was, and then modify the DNA of the model based on your detected values.
     
  22. karticchaudhary

    karticchaudhary

    Joined:
    Dec 17, 2018
    Posts:
    2
    Let me clarify. I upload a image with a face and then can change nose size, making it either big or small.
     
  23. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    You can programatically change the size of the nose (making it bigger or smaller). You can put the picture of a face over the texture for the face, but this will require you to match up the image (probably based on the eyes position)
     
  24. zisaboy

    zisaboy

    Joined:
    Jun 30, 2014
    Posts:
    6
    HI! If I have equipment slot and, show equipment in inventory or store, but I want not to show character.
    How can I do? Suggest?
    Thanks!
     
  25. vansean

    vansean

    Joined:
    Jan 10, 2015
    Posts:
    2
    I just updated to 2.8 RC. I still get these errors when I spawn an NPC at runtime, but I don't get them if I drop a prefab in directly. Must be something I need to change in how I'm spawning prefabs. I'll get it sorted out, thanks!
     
  26. jones512

    jones512

    Joined:
    Apr 12, 2015
    Posts:
    6
    Hi!

    Anybody knows how the DNA Ranges works and how to apply that on the DNA? I created one on my test scene but the values on the DNA still between 0 and 1.

    Both, the DNA and the DNA ranges are linked into the race, and the DNA Ranges is based on the DNA

    Thanks
     
  27. ecurtz

    ecurtz

    Joined:
    May 13, 2009
    Posts:
    640
    DNA ranges are an attempt to let you use the same DNA converters for more than one race. For example the standard "humanoid" example DNA converter will let you make a character with a giant bobble head if you want, so you could attach a DNA range that would limit that to regular human sizes.
     
  28. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    You can either use the bone builder to create a prefab DCA, and then add the recipe item to that (having it turn off everything else). Or you can capture a picture of the item using the included photobooth scene, add that to the recipe, and then use it as an icon in your inventory.
     
  29. DigitalNomad

    DigitalNomad

    Joined:
    Nov 7, 2018
    Posts:
    2
    Hi I wonder if someone may be to offer some help with an issue I have, I'm trying to save the UMA recipe to a SQL database using
    Code (CSharp):
    1. avatar.GetCurrentRecipe();
    I'm using Entity Framework to then save the Json to the database. I can save all the data Dna, WardrobeSets etc to their respective tables no problems except for the characterColors like hair, skin, eyes, undies.

    I use Json2CSharp to generate my database models which gives me
    Code (CSharp):
    1. public class Dna
    2. {
    3.     public string dnaType { get; set; }
    4.     public int dnaTypeHash { get; set; }
    5.     public string packedDna { get; set; }
    6. }
    7.  
    8. public class CharacterColor
    9. {
    10.     public string name { get; set; }
    11.     public List<int> colors { get; set; }
    12. }
    13.  
    14. public class WardrobeSet
    15. {
    16.     public string slot { get; set; }
    17.     public string recipe { get; set; }
    18. }
    19.  
    20. public class Character
    21. {
    22.     public string packedRecipeType { get; set; }
    23.     public string name { get; set; }
    24.     public string race { get; set; }
    25.     public List<Dna> dna { get; set; }
    26.     public List<CharacterColor> characterColors { get; set; }
    27.     public List<WardrobeSet> wardrobeSet { get; set; }
    28.     public string raceAnimatorController { get; set; }
    29. }
    The issue is with
    Code (CSharp):
    1. public List<int> colors { get; set; }
    Entity Framework does not support collections of primitive types, I need that collection to be a collection of objects of lets say Color to be able to map it to the correct table in the database and to do that I would need to append the Json generated by UMA from
    "characterColors":[{"name":"Skin","colors":[255,255,255,255,0,0,0,0,255,255,255,255,0,0,0,0,255,255,255,255,0,0,0,0]}
    to
    "characterColors":[{"name":"Skin","colors":[{Id:0, Color:255},{Id:1, Color:255}, ...] and so on
    I was wondering what would be the best way to handle this, either try to modify UMA to create the Json with Id's added or append the Json on the server before its inserted to the database, I'm not familiar with how the Json is generated by UMA how would I do this? as I'd like to keep the work the server is doing down.

    Thanks
     
  30. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    The easiest thing to do is to simply save the character into an nvarchar(max) field, and be done with it. Unless you need to search on colors or DNA, there's probably not a need to break them all out into separate tables.
    Anyway, if you want to change the output - look into the DCSPackRecipe class - it creates a PackedOverlayColorDataV3 for the colors - you could modify that to do what you want.

     
  31. Herman-Tulleken

    Herman-Tulleken

    Joined:
    Nov 20, 2009
    Posts:
    358
    Hi Everyone,

    I am one of the developers of Rucksack (Multiplayer Inventory System) at Devdog. We recently did a integration for UMA that allows you to define UMA clothing etc. as Rucksack items that allows you to use them s pickups, manage them in your inventory, equip them, and buy and sell them. Both recipes and raw slots are supported.
     
  32. jones512

    jones512

    Joined:
    Apr 12, 2015
    Posts:
    6
    Thanks! But, I prepared the the DNA ranges based on the DNA and then I applied the DNA Ranges on the race. The problem is that seems that the DNA ranges are not applied to the DNA, so the value ranges for the bones are not the same that the DNA Ranges.

    So, the question is, what is necessary some special configuration to link the DNA ranges to the DNA or if necessary do it via code? I didn't see any tutorial

    Thanks!
     
  33. DigitalNomad

    DigitalNomad

    Joined:
    Nov 7, 2018
    Posts:
    2
    Hi Jaimi, thanks for info and taking the time to reply.
     
  34. chrisk

    chrisk

    Joined:
    Jan 23, 2009
    Posts:
    704
    Hi, Herman, thanks for the integration and I'll love to check it out. Cheers!
     
    Last edited: Dec 20, 2018
  35. arteria

    arteria

    Joined:
    May 31, 2007
    Posts:
    2,189
    Hope the UMA Devs don't mind me posting this here - but as well as the costume release today, we would like to offer a special UMA promotion as a thankyou to the team and UMA users alike. See below for details

    Also, a new release today, - 'Thief/Assasin' for UMA



    Assasin/Thief UMA Costume SPECS
    All costume items scale and deform precisely so you can vary the size of your characters proportions
    Pack Contains:
    • 10 Slots
    • 10 Overlays
    • 10 Wardrobe Recipes
    SLOTS Included & Overlays & Wardrobe Elements for:
    • Hood
    • Robe
    • Mask
    • ShoulderArmour
    • Chest Belt
    • Belt
    • Gauntlets
    • Trousers
    • Trouser Poach

    CHRISTMAS UMA SPECIAL OFFER
    Choose any 7 UMA packs on the website for just $27 - Use the link below to piurchase, and we will email you after purchase for you to choose your packs(excludes full Male/Female Knight Pack), but singular knights are included.

    PURCHASE BELOW
    https://arteria3d.myshopify.com/products/umaspecial
     
    hopeful and Jaimi like this.
  36. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Great Job!

     
  37. arteria

    arteria

    Joined:
    May 31, 2007
    Posts:
    2,189
    Thank you Jaimi, thanks to you too, for all the great work you do
     
  38. FiveFingerStudios

    FiveFingerStudios

    Joined:
    Apr 22, 2016
    Posts:
    510
    I made a new head for my UMA which uses a new Overlay.

    I want to change the whole UMA to use the new overlay.

    Should I be changing all slots (head, arms, legs body etc), to make sure it uses the new overlay?

    If so, should I be using the "replaces" dropdown on the wardrobe recipe or the "hides" dropdown?
     
  39. Colby4284

    Colby4284

    Joined:
    Dec 17, 2018
    Posts:
    2
    Hey

    Complete beginner here. I just downloaded UMA and am getting an CS0104 error 'TextureCompressionQuality' is an ambiguous reference between 'UnityEditor.TextureCompressionQuality' and 'UnityEngine.TextureCompressionQuality' any help would be greatly appreciated
     
  40. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    "Replaces" means it swaps out the old head slot, and puts in a new one - keeping the existing overlays on it. It's only useful in a few cases.

    For your head, it's probably easiest to just hide the old head, and add the new one with the new overlay.
     
  41. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Yes - this is an incompatibility with 2018.3 unity (for some reason, unknown to mortal man, they have TextureCompressionQuality defined twice). The simplest thing to do is to simply prepend "UnityEngine." to the TextureCompressionQuality, so it knows which one to use - even though they are the exact same value.

    This will be fixed in the new Release Candidate that we're hoping to have ready later tonight.
     
    hopeful likes this.
  42. Colby4284

    Colby4284

    Joined:
    Dec 17, 2018
    Posts:
    2
    That worked thank you so much
     
  43. FiveFingerStudios

    FiveFingerStudios

    Joined:
    Apr 22, 2016
    Posts:
    510
    Thanks, when I do that. I now have two overlays on my UMA that are for the head and body.
    Head - uses the new overlay
    Body, arms and legs - uses the original overlay.

    Not sure how to make sure all slots use the new overlay.
     
  44. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    If you just want to swap out overlays - there are wardrobe slots for that - there is a "face" slot, and a "body" slot. Since they use two overlays, you will have to include the slot they go on, and the new overlay for it in the recipe.

    If you want to do it all on one wardrobe recipe, and you have a head slot, head overlay, and body overlay, then you would create a wardrobe recipe that had:

    • New head slot. new head overlay + skin colors (if you use that)
    • old body slot. new body overlay + skin colors
    • hides the old head slot on the base recipe
     
  45. FiveFingerStudios

    FiveFingerStudios

    Joined:
    Apr 22, 2016
    Posts:
    510
    Ok, that makes sense. I didn't know that using "Face" and "Body" was needed.

    So, it looks like I will always have two overlays for my UMA characters then.

    I think the problem for me is that I created a custom race with Fuse characters. Since Fuse characters share one Overlay for both the Head and the body....I see the two textures in my UMA. (I believe default UMA uses separate overlays for Head and Body).
     
    Last edited: Dec 20, 2018
  46. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    You only actually need one in that case - it should be defined on your base race recipe on the face, and then when you swap faces, it should all work out.
     
  47. vaki26

    vaki26

    Joined:
    Jan 23, 2015
    Posts:
    22
    I have created some meshes using MeshMaker to add horns to an UMA the slot creator will not process the mesh it remains empty. I have used the SkinnedMesh render. Does the mesh have to be made external from unity or be a certain type ?
     
  48. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    It needs to be a SkinnedMesh, and weighted to the appropriate bones, and there is a specific hierarchy you have to follow. I haven't tried it, but conceptually it should work. I have edited meshes using his tools, and (iirc) it worked OK. But I found it much easier to edit and do things in Blender.
     
  49. vaki26

    vaki26

    Joined:
    Jan 23, 2015
    Posts:
    22
    The mesh is relatively simple horn so I was hoping it would be like creating a helm. Does that still need bone structure or can it just go to the helmet slot. What is IIRC ?
     
  50. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    Yes - it needs a bone structure, even though it is just like a helmet. That's because it needs to modify the position/scale/rotation based on the bone data (like it does the head). I recommend to do it in Blender, it takes about the same amount of work, and the source models are in github so you can do the mapping (etc).

    iirc = "if i recall correctly"