mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-04-25 15:47:26 -05:00
mv TextureSetImporter TextureDescriptorGenerator
This commit is contained in:
parent
157c7091f7
commit
a4a5b1d0cb
|
|
@ -33,14 +33,14 @@ namespace UniGLTF
|
|||
static bool s_foldMaterials = true;
|
||||
static bool s_foldTextures = true;
|
||||
|
||||
public static void OnGUI(ScriptedImporter importer, GltfParser parser, ITextureSetImporter textureSetImporter, Func<string, string> textureDir, Func<string, string> materialDir)
|
||||
public static void OnGUI(ScriptedImporter importer, GltfParser parser, ITextureDescriptorGenerator textureDescriptorGenerator, Func<string, string> textureDir, Func<string, string> materialDir)
|
||||
{
|
||||
var hasExternal = importer.GetExternalObjectMap().Any(x => x.Value is Material || x.Value is Texture2D);
|
||||
using (new TmpGuiEnable(!hasExternal))
|
||||
{
|
||||
if (GUILayout.Button("Extract Materials And Textures ..."))
|
||||
{
|
||||
ExtractMaterialsAndTextures(importer, parser, textureSetImporter, textureDir, materialDir);
|
||||
ExtractMaterialsAndTextures(importer, parser, textureDescriptorGenerator, textureDir, materialDir);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -56,7 +56,7 @@ namespace UniGLTF
|
|||
s_foldTextures = EditorGUILayout.Foldout(s_foldTextures, "Remapped Textures");
|
||||
if (s_foldTextures)
|
||||
{
|
||||
importer.DrawRemapGUI<UnityEngine.Texture>(textureSetImporter.GetTextureImportParamSet().GetEnumerable().Select(x => x.SubAssetKey));
|
||||
importer.DrawRemapGUI<UnityEngine.Texture>(textureDescriptorGenerator.GetTextureImportParamSet().GetEnumerable().Select(x => x.SubAssetKey));
|
||||
}
|
||||
|
||||
if (GUILayout.Button("Clear"))
|
||||
|
|
@ -74,7 +74,7 @@ namespace UniGLTF
|
|||
AssetDatabase.ImportAsset(self.assetPath, ImportAssetOptions.ForceUpdate);
|
||||
}
|
||||
|
||||
static void ExtractMaterialsAndTextures(ScriptedImporter self, GltfParser parser, ITextureSetImporter textureSetImporter, Func<string, string> textureDir, Func<string, string> materialDir)
|
||||
static void ExtractMaterialsAndTextures(ScriptedImporter self, GltfParser parser, ITextureDescriptorGenerator textureDescriptorGenerator, Func<string, string> textureDir, Func<string, string> materialDir)
|
||||
{
|
||||
if (string.IsNullOrEmpty(self.assetPath))
|
||||
{
|
||||
|
|
@ -97,7 +97,7 @@ namespace UniGLTF
|
|||
TextureExtractor.ExtractTextures(
|
||||
parser,
|
||||
assetPath.Parent.Child(dirName),
|
||||
textureSetImporter,
|
||||
textureDescriptorGenerator,
|
||||
self.GetSubAssets<Texture>(self.assetPath).ToDictionary(kv => kv.Item1, kv => kv.Item2),
|
||||
addRemap,
|
||||
onCompleted
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ namespace UniGLTF
|
|||
break;
|
||||
|
||||
case Tabs.Materials:
|
||||
EditorMaterial.OnGUI(m_importer, m_parser, new GltfTextureSetImporter(m_parser),
|
||||
EditorMaterial.OnGUI(m_importer, m_parser, new GltfTextureDescriptorGenerator(m_parser),
|
||||
assetPath => $"{Path.GetFileNameWithoutExtension(assetPath)}.Textures",
|
||||
assetPath => $"{Path.GetFileNameWithoutExtension(assetPath)}.Materials");
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ namespace UniGLTF
|
|||
break;
|
||||
|
||||
case Tabs.Materials:
|
||||
EditorMaterial.OnGUI(m_importer, m_parser, new GltfTextureSetImporter(m_parser),
|
||||
EditorMaterial.OnGUI(m_importer, m_parser, new GltfTextureDescriptorGenerator(m_parser),
|
||||
assetPath => $"{Path.GetFileNameWithoutExtension(assetPath)}.Textures",
|
||||
assetPath => $"{Path.GetFileNameWithoutExtension(assetPath)}.Materials");
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ namespace UniGLTF
|
|||
using (var loader = new ImporterContext(parser, extractedObjects))
|
||||
{
|
||||
// Configure TextureImporter to Extracted Textures.
|
||||
foreach (var textureInfo in loader.TextureSetImporter.GetTextureImportParamSet().GetEnumerable())
|
||||
foreach (var textureInfo in loader.TextureDescriptorGenerator.GetTextureImportParamSet().GetEnumerable())
|
||||
{
|
||||
TextureImporterConfigurator.Configure(textureInfo, loader.TextureFactory.ExternalTextures);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,12 +75,12 @@ namespace UniGLTF
|
|||
/// <param name="dirName"></param>
|
||||
/// <param name="onCompleted"></param>
|
||||
public static void ExtractTextures(GltfParser parser, UnityPath textureDirectory,
|
||||
ITextureSetImporter textureSetImporter, IReadOnlyDictionary<SubAssetKey, Texture> subAssets,
|
||||
ITextureDescriptorGenerator textureDescriptorGenerator, IReadOnlyDictionary<SubAssetKey, Texture> subAssets,
|
||||
Action<SubAssetKey, Texture2D> addRemap,
|
||||
Action<IEnumerable<UnityPath>> onCompleted = null)
|
||||
{
|
||||
var extractor = new TextureExtractor(parser, textureDirectory, subAssets);
|
||||
foreach (var param in textureSetImporter.GetTextureImportParamSet().GetEnumerable())
|
||||
foreach (var param in textureDescriptorGenerator.GetTextureImportParamSet().GetEnumerable())
|
||||
{
|
||||
extractor.Extract(param.SubAssetKey, param);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ namespace UniGLTF
|
|||
|
||||
#endregion
|
||||
|
||||
public ITextureSetImporter TextureSetImporter { get; protected set; }
|
||||
public ITextureDescriptorGenerator TextureDescriptorGenerator { get; protected set; }
|
||||
public IMaterialImporter MaterialImporter { get; protected set; }
|
||||
public TextureFactory TextureFactory { get; }
|
||||
public MaterialFactory MaterialFactory { get; }
|
||||
|
|
@ -40,7 +40,7 @@ namespace UniGLTF
|
|||
public ImporterContext(GltfParser parser, IReadOnlyDictionary<SubAssetKey, UnityEngine.Object> externalObjectMap = null)
|
||||
{
|
||||
Parser = parser;
|
||||
TextureSetImporter = new GltfTextureSetImporter(Parser);
|
||||
TextureDescriptorGenerator = new GltfTextureDescriptorGenerator(Parser);
|
||||
MaterialImporter = new GltfMaterialImporter();
|
||||
|
||||
externalObjectMap = externalObjectMap ?? new Dictionary<SubAssetKey, UnityEngine.Object>();
|
||||
|
|
@ -183,7 +183,7 @@ namespace UniGLTF
|
|||
|
||||
public async Task LoadTexturesAsync()
|
||||
{
|
||||
var textures = TextureSetImporter.GetTextureImportParamSet().GetEnumerable();
|
||||
var textures = TextureDescriptorGenerator.GetTextureImportParamSet().GetEnumerable();
|
||||
foreach (var param in textures)
|
||||
{
|
||||
var tex = await TextureFactory.GetTextureAsync(param);
|
||||
|
|
|
|||
|
|
@ -25,12 +25,12 @@ namespace UniGLTF
|
|||
/// * normal 外部ライルをそのまま使うので SubAsset にしない(normalとしてロードするためにAssetImporterの設定は必用)
|
||||
/// * metallicRoughnessOcclusion 変換結果を SubAsset 化する
|
||||
/// </summary>
|
||||
public sealed class GltfTextureSetImporter : ITextureSetImporter
|
||||
public sealed class GltfTextureDescriptorGenerator : ITextureDescriptorGenerator
|
||||
{
|
||||
private readonly GltfParser m_parser;
|
||||
private TextureImportParamSet _textureImportParamSet;
|
||||
|
||||
public GltfTextureSetImporter(GltfParser parser)
|
||||
public GltfTextureDescriptorGenerator(GltfParser parser)
|
||||
{
|
||||
m_parser = parser;
|
||||
}
|
||||
|
|
@ -7,7 +7,7 @@ namespace UniGLTF
|
|||
///
|
||||
/// glTF Texture と Unity Texture の対応関係は N:M である。
|
||||
/// </summary>
|
||||
public interface ITextureSetImporter
|
||||
public interface ITextureDescriptorGenerator
|
||||
{
|
||||
TextureImportParamSet GetTextureImportParamSet();
|
||||
}
|
||||
|
|
@ -136,7 +136,7 @@ namespace UniGLTF
|
|||
}
|
||||
|
||||
// should unique
|
||||
var gltfTextures = new GltfTextureSetImporter(parser).GetTextureImportParamSet().GetEnumerable()
|
||||
var gltfTextures = new GltfTextureDescriptorGenerator(parser).GetTextureImportParamSet().GetEnumerable()
|
||||
.Select(x => x.SubAssetKey)
|
||||
.ToArray();
|
||||
var distinct = gltfTextures.Distinct().ToArray();
|
||||
|
|
|
|||
|
|
@ -207,7 +207,7 @@ namespace UniGLTF
|
|||
{
|
||||
GLTF = TwoTexture(),
|
||||
};
|
||||
var items = new GltfTextureSetImporter(parser).GetTextureImportParamSet().GetEnumerable().ToArray();
|
||||
var items = new GltfTextureDescriptorGenerator(parser).GetTextureImportParamSet().GetEnumerable().ToArray();
|
||||
Assert.AreEqual(2, items.Length);
|
||||
}
|
||||
|
||||
|
|
@ -216,7 +216,7 @@ namespace UniGLTF
|
|||
{
|
||||
GLTF = TwoTextureOneUri(),
|
||||
};
|
||||
var items = new GltfTextureSetImporter(parser).GetTextureImportParamSet().GetEnumerable().ToArray();
|
||||
var items = new GltfTextureDescriptorGenerator(parser).GetTextureImportParamSet().GetEnumerable().ToArray();
|
||||
Assert.AreEqual(1, items.Length);
|
||||
}
|
||||
|
||||
|
|
@ -225,7 +225,7 @@ namespace UniGLTF
|
|||
{
|
||||
GLTF = TwoTextureOneImage(),
|
||||
};
|
||||
var items = new GltfTextureSetImporter(parser).GetTextureImportParamSet().GetEnumerable().ToArray();
|
||||
var items = new GltfTextureDescriptorGenerator(parser).GetTextureImportParamSet().GetEnumerable().ToArray();
|
||||
Assert.AreEqual(1, items.Length);
|
||||
}
|
||||
|
||||
|
|
@ -234,7 +234,7 @@ namespace UniGLTF
|
|||
{
|
||||
GLTF = CombineMetallicSmoothOcclusion(),
|
||||
};
|
||||
var items = new GltfTextureSetImporter(parser).GetTextureImportParamSet().GetEnumerable().ToArray();
|
||||
var items = new GltfTextureDescriptorGenerator(parser).GetTextureImportParamSet().GetEnumerable().ToArray();
|
||||
Assert.AreEqual(1, items.Length);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ namespace UniGLTF
|
|||
|
||||
// extractor
|
||||
var extractor = new TextureExtractor(parser, UnityPath.FromUnityPath(""), context.TextureFactory.ConvertedTextures);
|
||||
var m = context.TextureSetImporter.GetTextureImportParamSet().GetEnumerable()
|
||||
var m = context.TextureDescriptorGenerator.GetTextureImportParamSet().GetEnumerable()
|
||||
.FirstOrDefault(x => x.SubAssetKey.Name == "texture_1.standard");
|
||||
|
||||
Assert.Catch<NotImplementedException>(() => extractor.Extract(m.SubAssetKey, m));
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ namespace VRM
|
|||
UnityPath m_prefabPath;
|
||||
List<UnityPath> m_paths = new List<UnityPath>();
|
||||
|
||||
public ITextureSetImporter TextureSetImporter => m_context.TextureSetImporter;
|
||||
public ITextureDescriptorGenerator TextureDescriptorGenerator => m_context.TextureDescriptorGenerator;
|
||||
|
||||
public VRMEditorImporterContext(VRMImporterContext context, UnityPath prefabPath)
|
||||
{
|
||||
|
|
@ -105,7 +105,7 @@ namespace VRM
|
|||
var subAssets = m_context.TextureFactory.ConvertedTextures;
|
||||
var vrmTextures = new VRMMaterialImporter(m_context.VRM);
|
||||
var dirName = $"{m_prefabPath.FileNameWithoutExtension}.Textures";
|
||||
TextureExtractor.ExtractTextures(m_context.Parser, m_prefabPath.Parent.Child(dirName), m_context.TextureSetImporter, subAssets, (_x, _y) => { }, onTextureReloaded);
|
||||
TextureExtractor.ExtractTextures(m_context.Parser, m_prefabPath.Parent.Child(dirName), m_context.TextureDescriptorGenerator, subAssets, (_x, _y) => { }, onTextureReloaded);
|
||||
}
|
||||
|
||||
bool SaveAsAsset(UnityEngine.Object o)
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ namespace VRM
|
|||
using (var context = new VRMImporterContext(parser, map))
|
||||
{
|
||||
var editor = new VRMEditorImporterContext(context, prefabPath);
|
||||
foreach (var textureInfo in editor.TextureSetImporter.GetTextureImportParamSet().GetEnumerable())
|
||||
foreach (var textureInfo in editor.TextureDescriptorGenerator.GetTextureImportParamSet().GetEnumerable())
|
||||
{
|
||||
VRMShaders.TextureImporterConfigurator.Configure(textureInfo, context.TextureFactory.ExternalTextures);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ namespace VRM
|
|||
using (var context = new VRMImporterContext(parser, map))
|
||||
{
|
||||
var editor = new VRMEditorImporterContext(context, prefabPath);
|
||||
foreach (var textureInfo in context.TextureSetImporter.GetTextureImportParamSet().GetEnumerable())
|
||||
foreach (var textureInfo in context.TextureDescriptorGenerator.GetTextureImportParamSet().GetEnumerable())
|
||||
{
|
||||
VRMShaders.TextureImporterConfigurator.Configure(textureInfo, context.TextureFactory.ExternalTextures);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ namespace VRM
|
|||
if (glTF_VRM_extensions.TryDeserialize(GLTF.extensions, out glTF_VRM_extensions vrm))
|
||||
{
|
||||
VRM = vrm;
|
||||
TextureSetImporter = new VRMTextureSetImporter(Parser, VRM);
|
||||
TextureDescriptorGenerator = new VrmTextureDescriptorGenerator(Parser, VRM);
|
||||
MaterialImporter = new VRMMaterialImporter(VRM);
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@ using VRMShaders;
|
|||
|
||||
namespace VRM
|
||||
{
|
||||
public sealed class VRMTextureSetImporter : ITextureSetImporter
|
||||
public sealed class VrmTextureDescriptorGenerator : ITextureDescriptorGenerator
|
||||
{
|
||||
private readonly GltfParser m_parser;
|
||||
private readonly glTF_VRM_extensions m_vrm;
|
||||
private TextureImportParamSet _textureImportParamSet;
|
||||
|
||||
public VRMTextureSetImporter(GltfParser parser, glTF_VRM_extensions vrm)
|
||||
public VrmTextureDescriptorGenerator(GltfParser parser, glTF_VRM_extensions vrm)
|
||||
{
|
||||
m_parser = parser;
|
||||
m_vrm = vrm;
|
||||
|
|
@ -72,7 +72,7 @@ namespace VRM
|
|||
},
|
||||
}
|
||||
};
|
||||
var items = new VRMTextureSetImporter(parser, vrm).GetTextureImportParamSet().GetEnumerable().ToArray();
|
||||
var items = new VrmTextureDescriptorGenerator(parser, vrm).GetTextureImportParamSet().GetEnumerable().ToArray();
|
||||
Assert.AreEqual(1, items.Length);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ namespace UniVRM10
|
|||
case Tabs.Materials:
|
||||
if (m_parser != null && m_vrm != null)
|
||||
{
|
||||
EditorMaterial.OnGUI(m_importer, m_parser, new Vrm10TextureSetImporter(m_parser),
|
||||
EditorMaterial.OnGUI(m_importer, m_parser, new Vrm10TextureDescriptorGenerator(m_parser),
|
||||
assetPath => $"{Path.GetFileNameWithoutExtension(assetPath)}.vrm1.Textures",
|
||||
assetPath => $"{Path.GetFileNameWithoutExtension(assetPath)}.vrm1.Materials");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ namespace UniVRM10
|
|||
using (var loader = new Vrm10Importer(parser, extractedObjects))
|
||||
{
|
||||
// settings TextureImporters
|
||||
foreach (var textureInfo in loader.TextureSetImporter.GetTextureImportParamSet().GetEnumerable())
|
||||
foreach (var textureInfo in loader.TextureDescriptorGenerator.GetTextureImportParamSet().GetEnumerable())
|
||||
{
|
||||
VRMShaders.TextureImporterConfigurator.Configure(textureInfo, loader.TextureFactory.ExternalTextures);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,12 +7,12 @@ using VRMShaders;
|
|||
|
||||
namespace UniVRM10
|
||||
{
|
||||
public sealed class Vrm10TextureSetImporter : ITextureSetImporter
|
||||
public sealed class Vrm10TextureDescriptorGenerator : ITextureDescriptorGenerator
|
||||
{
|
||||
private readonly GltfParser m_parser;
|
||||
private TextureImportParamSet _textureImportParamSet;
|
||||
|
||||
public Vrm10TextureSetImporter(GltfParser parser)
|
||||
public Vrm10TextureDescriptorGenerator(GltfParser parser)
|
||||
{
|
||||
m_parser = parser;
|
||||
}
|
||||
|
|
@ -24,7 +24,7 @@ namespace UniVRM10
|
|||
public Vrm10Importer(UniGLTF.GltfParser parser, IReadOnlyDictionary<SubAssetKey, UnityEngine.Object> externalObjectMap = null)
|
||||
: base(parser, externalObjectMap)
|
||||
{
|
||||
TextureSetImporter = new Vrm10TextureSetImporter(parser);
|
||||
TextureDescriptorGenerator = new Vrm10TextureDescriptorGenerator(parser);
|
||||
MaterialImporter = new Vrm10MaterialImporter();
|
||||
|
||||
m_externalMap = externalObjectMap;
|
||||
|
|
@ -281,7 +281,7 @@ namespace UniVRM10
|
|||
{
|
||||
m_meta.Authors.AddRange(src.Authors);
|
||||
}
|
||||
if (Vrm10TextureSetImporter.TryGetMetaThumbnailTextureImportParam(Parser, vrm, out (SubAssetKey, VRMShaders.TextureImportParam Param) kv))
|
||||
if (Vrm10TextureDescriptorGenerator.TryGetMetaThumbnailTextureImportParam(Parser, vrm, out (SubAssetKey, VRMShaders.TextureImportParam Param) kv))
|
||||
{
|
||||
var texture = await TextureFactory.GetTextureAsync(kv.Param);
|
||||
if (texture is Texture2D tex2D)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user