diff --git a/Assets/UniGLTF/Runtime/UniGLTF/IO/GltfDuplicatedNameConversionRule.cs b/Assets/UniGLTF/Runtime/UniGLTF/IO/GltfDuplicatedNameConversionRule.cs
index f6d2002d4..1dc747464 100644
--- a/Assets/UniGLTF/Runtime/UniGLTF/IO/GltfDuplicatedNameConversionRule.cs
+++ b/Assets/UniGLTF/Runtime/UniGLTF/IO/GltfDuplicatedNameConversionRule.cs
@@ -18,6 +18,19 @@ namespace UniGLTF
public static readonly string UniqueFixResourceSuffix = "__UNIGLTF__DUPLICATED__";
private static readonly Regex _removeUniqueFixResourceSuffix = new Regex($@"^(.+){UniqueFixResourceSuffix}(\d+)$");
+ ///
+ /// `v0.129.0` GlbLowLevelParser.Parse からこちらに移動。
+ /// glTF では許されるが Unity では都合の悪い名前に対する変更を行う。
+ ///
+ public static void FixNames(glTF GLTF)
+ {
+ FixMeshNameUnique(GLTF);
+ FixTextureNameUnique(GLTF);
+ FixMaterialNameUnique(GLTF);
+ FixEmptyNodeName(GLTF);
+ FixAnimationNameUnique(GLTF);
+ }
+
public static string FixNameUnique(HashSet used, string originalName)
{
if (used.Add(originalName))
@@ -174,8 +187,10 @@ namespace UniGLTF
///
/// rename empty name to $"{index}"
+ /// 名前が null または 空文字列である場合に、連番による名前を付ける。
+ /// 名前の重複はそのままにする。
///
- public static void FixNodeName(glTF GLTF)
+ public static void FixEmptyNodeName(glTF GLTF)
{
for (var i = 0; i < GLTF.nodes.Count; ++i)
{
@@ -204,18 +219,14 @@ namespace UniGLTF
}
}
- // `v0.129.0` GlbLowLevelParser.Parse からこちらに移動
- public static void FixNames(glTF GLTF)
- {
- FixMeshNameUnique(GLTF);
- FixTextureNameUnique(GLTF);
- FixMaterialNameUnique(GLTF);
- FixNodeName(GLTF);
- FixAnimationNameUnique(GLTF);
- }
-
+ ///
+ /// AvatarBuilder.BuildHumanAvatar のエラーを防止するため Node名を Unique にする。
+ /// 主に humanoid avatar を作成する vrm-0.x, vrm-1.0, vrma の import で使う。
+ ///
public static void FixNodeNameUnique(glTF GLTF)
{
+ FixEmptyNodeName(GLTF);
+
var m_uniqueNameSet = new HashSet();
int counter = 1;
for (var i = 0; i < GLTF.nodes.Count; ++i)