Merge pull request #788 from ousttrue/fix/material_rename

fix material rename
This commit is contained in:
PoChang007 2021-03-16 16:09:20 +09:00 committed by GitHub
commit 5b80e2afec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 17 deletions

View File

@ -261,7 +261,7 @@ namespace UniGLTF
{
// rename
var uname = lower + "_" + Guid.NewGuid().ToString("N");
Debug.LogWarning($"same name: {lower} => {uname}");
Debug.LogWarning($"texture.name: {lower} => {uname}");
gltfTexture.name = uname;
if (!used.Add(uname))
{
@ -274,12 +274,21 @@ namespace UniGLTF
public void FixMaterialNameUnique()
{
var used = new HashSet<string>();
foreach (var material in GLTF.materials)
{
var originalName = material.name;
int j = 2;
while (GLTF.materials.Any(x => x != material && x.name == material.name))
while (true)
{
if (used.Add(material.name))
{
#if VRM_DEVELOP
Debug.Log($"Material: {material.name}");
#endif
break;
}
material.name = string.Format("{0}({1})", originalName, j++);
}
}

View File

@ -178,17 +178,17 @@ namespace VRM
return true;
}
// if (assetPath.IsFileExists)
// {
// if (AvoidOverwriteAndLoad(assetPath, o))
// {
// #if VRM_DEVELOP
// Debug.Log($"AvoidOverwriteAndLoad: {assetPath}");
// #endif
// // 上書きせずに既存のアセットからロードして置き換えた
// return true;
// }
// }
// if (assetPath.IsFileExists)
// {
// if (AvoidOverwriteAndLoad(assetPath, o))
// {
// #if VRM_DEVELOP
// Debug.Log($"AvoidOverwriteAndLoad: {assetPath}");
// #endif
// // 上書きせずに既存のアセットからロードして置き換えた
// return true;
// }
// }
// アセットとして書き込む
assetPath.Parent.EnsureFolder();

View File

@ -37,9 +37,9 @@ namespace VRM
}
else
{
// #if VRM_DEVELOP
// Debug.LogWarningFormat("unknown shader {0}.", shaderName);
// #endif
// #if VRM_DEVELOP
// Debug.LogWarningFormat("unknown shader {0}.", shaderName);
// #endif
}
return await MaterialFactory.DefaultCreateMaterialAsync(awaitCaller, gltf, m_index, getTexture);
}
@ -48,7 +48,8 @@ namespace VRM
// restore VRM material
//
var material = new Material(shader);
material.name = item.name;
// use material.name, because material name may renamed in GltfParser.
material.name = gltf.materials[m_index].name;
material.renderQueue = item.renderQueue;
foreach (var kv in item.floatProperties)