From d7c2231f336e7a4045332ed6900251f1c63cac2c Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 20 Feb 2019 10:19:44 -0800 Subject: [PATCH] use root bone name from skeleton list --- .../Assets/Editor/AvatarExporter.cs | 26 ++++++++++++------ tools/unity-avatar-exporter/Assets/README.txt | 2 +- .../avatarExporter.unitypackage | Bin 13667 -> 13822 bytes 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/tools/unity-avatar-exporter/Assets/Editor/AvatarExporter.cs b/tools/unity-avatar-exporter/Assets/Editor/AvatarExporter.cs index 7b90145223..65ba0312a6 100644 --- a/tools/unity-avatar-exporter/Assets/Editor/AvatarExporter.cs +++ b/tools/unity-avatar-exporter/Assets/Editor/AvatarExporter.cs @@ -14,7 +14,7 @@ using System.Collections.Generic; class AvatarExporter : MonoBehaviour { // update version number for every PR that changes this file, also set updated version in README file - static readonly string AVATAR_EXPORTER_VERSION = "0.2"; + static readonly string AVATAR_EXPORTER_VERSION = "0.3"; static readonly float HIPS_GROUND_MIN_Y = 0.01f; static readonly float HIPS_SPINE_CHEST_MIN_SEPARATION = 0.001f; @@ -264,7 +264,7 @@ class AvatarExporter : MonoBehaviour { static string assetName = ""; static HumanDescription humanDescription; static Dictionary dependencyTextures = new Dictionary(); - + [MenuItem("High Fidelity/Export New Avatar")] static void ExportNewAvatar() { ExportSelectedAvatar(false); @@ -302,11 +302,11 @@ class AvatarExporter : MonoBehaviour { " the Rig section of it's Inspector window.", "Ok"); return; } - + humanDescription = modelImporter.humanDescription; SetUserBoneInformation(); string textureWarnings = SetTextureDependencies(); - + // check if we should be substituting a bone for a missing UpperChest mapping AdjustUpperChestMapping(); @@ -334,7 +334,7 @@ class AvatarExporter : MonoBehaviour { EditorUtility.DisplayDialog("Error", boneErrors, "Ok"); return; } - + string documentsFolder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments); string hifiFolder = documentsFolder + "\\High Fidelity Projects"; if (updateAvatar) { // Update Existing Avatar menu option @@ -630,12 +630,14 @@ class AvatarExporter : MonoBehaviour { string boneName = modelBone.name; if (modelBone.parent == null) { // if no parent then this is actual root bone node of the user avatar, so consider it's parent as "root" + boneName = GetRootBoneName(); // ensure we use the root bone name from the skeleton list for consistency userBoneTree = new BoneTreeNode(boneName); // initialize root of tree userBoneInfo.parentName = "root"; userBoneInfo.boneTreeNode = userBoneTree; } else { // otherwise add this bone node as a child to it's parent's children list - string parentName = modelBone.parent.name; + // if its a child of the root bone, use the root bone name from the skeleton list as the parent for consistency + string parentName = modelBone.parent.parent == null ? GetRootBoneName() : modelBone.parent.name; BoneTreeNode boneTreeNode = new BoneTreeNode(boneName); userBoneInfos[parentName].boneTreeNode.children.Add(boneTreeNode); userBoneInfo.parentName = parentName; @@ -658,7 +660,7 @@ class AvatarExporter : MonoBehaviour { } return result; } - + static void AdjustUpperChestMapping() { if (!humanoidToUserBoneMappings.ContainsKey("UpperChest")) { // if parent of Neck is not Chest then map the parent to UpperChest @@ -682,6 +684,14 @@ class AvatarExporter : MonoBehaviour { } } + static string GetRootBoneName() { + // the "root" bone is the first element in the human skeleton bone list + if (humanDescription.skeleton.Length > 0) { + return humanDescription.skeleton[0].name; + } + return ""; + } + static void SetFailedBoneRules() { failedBoneRules.Clear(); @@ -901,7 +911,7 @@ class AvatarExporter : MonoBehaviour { textureDirectory = textureDirectory.Replace("\\\\", "\\"); return textureDirectory; } - + static string SetTextureDependencies() { string textureWarnings = ""; dependencyTextures.Clear(); diff --git a/tools/unity-avatar-exporter/Assets/README.txt b/tools/unity-avatar-exporter/Assets/README.txt index b81a620406..6516e4b150 100644 --- a/tools/unity-avatar-exporter/Assets/README.txt +++ b/tools/unity-avatar-exporter/Assets/README.txt @@ -1,6 +1,6 @@ High Fidelity, Inc. Avatar Exporter -Version 0.2 +Version 0.3 Note: It is recommended to use Unity versions between 2017.4.17f1 and 2018.2.12f1 for this Avatar Exporter. diff --git a/tools/unity-avatar-exporter/avatarExporter.unitypackage b/tools/unity-avatar-exporter/avatarExporter.unitypackage index 95c000e7c61b7623e0da0a1f9974e0744375014e..4c1474631204788903d573f18fc418d9c8cb1027 100644 GIT binary patch literal 13822 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 As{jB1 literal 13667 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 B&65BC