public static Task <Texture2D> LoadTaskAsync(UnityPath m_assetPath, glTF gltf, int textureIndex) { var colorSpace = gltf.GetColorSpace(textureIndex); // // texture from assets // m_assetPath.ImportAsset(); var importer = m_assetPath.GetImporter <UnityEditor.TextureImporter>(); if (importer == null) { Debug.LogWarningFormat("fail to get TextureImporter: {0}", m_assetPath); } else { importer.maxTextureSize = 8192; importer.sRGBTexture = colorSpace == RenderTextureReadWrite.sRGB; importer.SaveAndReimport(); } var Texture = m_assetPath.LoadAsset <Texture2D>(); if (Texture == null) { Debug.LogWarningFormat("fail to Load Texture2D: {0}", m_assetPath); } else { var maxSize = Mathf.Max(Texture.width, Texture.height); importer.maxTextureSize = maxSize > 4096 ? 8192 : maxSize > 2048 ? 4096 : maxSize > 1024 ? 2048 : maxSize > 512 ? 1024 : 512; importer.SaveAndReimport(); } var sampler = gltf.GetSamplerFromTextureIndex(textureIndex); if (sampler != null) { TextureSamplerUtil.SetSampler(Texture, sampler); } return(Task.FromResult(Texture)); }
public IEnumerator ProcessOnMainThread(bool isLinear, glTFTextureSampler sampler) { // // texture from assets // m_assetPath.ImportAsset(); var importer = m_assetPath.GetImporter <TextureImporter>(); if (importer == null) { Debug.LogWarningFormat("fail to get TextureImporter: {0}", m_assetPath); } importer.maxTextureSize = 8192; importer.sRGBTexture = !isLinear; importer.SaveAndReimport(); Texture = m_assetPath.LoadAsset <Texture2D>(); //Texture.name = m_textureName; if (Texture == null) { Debug.LogWarningFormat("fail to Load Texture2D: {0}", m_assetPath); } else { var maxSize = Mathf.Max(Texture.width, Texture.height); importer.maxTextureSize = maxSize > 4096 ? 8192 : maxSize > 2048 ? 4096 : maxSize > 1024 ? 2048 : maxSize > 512 ? 1024 : 512; importer.SaveAndReimport(); } if (sampler != null) { TextureSamplerUtil.SetSampler(Texture, sampler); } yield break; }
public static Task <Texture2D> LoadTaskAsync(UnityPath m_assetPath, bool isLinear, glTFTextureSampler sampler) { // // texture from assets // m_assetPath.ImportAsset(); var importer = m_assetPath.GetImporter <UnityEditor.TextureImporter>(); if (importer == null) { Debug.LogWarningFormat("fail to get TextureImporter: {0}", m_assetPath); } importer.maxTextureSize = 8192; importer.sRGBTexture = !isLinear; importer.SaveAndReimport(); var Texture = m_assetPath.LoadAsset <Texture2D>(); if (Texture == null) { Debug.LogWarningFormat("fail to Load Texture2D: {0}", m_assetPath); } else { var maxSize = Mathf.Max(Texture.width, Texture.height); importer.maxTextureSize = maxSize > 4096 ? 8192 : maxSize > 2048 ? 4096 : maxSize > 1024 ? 2048 : maxSize > 512 ? 1024 : 512; importer.SaveAndReimport(); } if (sampler != null) { TextureSamplerUtil.SetSampler(Texture, sampler); } return(Task.FromResult(Texture)); }
public void GetOrCreateTexture(bool isLinear) { #if UNITY_EDITOR if (IsAsset) { // // texture from assets // m_assetPath.ImportAsset(); TextureImporter importer = m_assetPath.GetImporter <TextureImporter>(); if (importer == null) { Debug.LogWarningFormat("fail to get TextureImporter: {0}", m_assetPath); } importer.sRGBTexture = !isLinear; importer.SaveAndReimport(); m_texture = m_assetPath.LoadAsset <Texture2D>(); if (m_texture == null) { Debug.LogWarningFormat("fail to Load Texture2D: {0}", m_assetPath); } } else #endif { // // texture from image(png etc) bytes // m_texture = new Texture2D(2, 2, TextureFormat.ARGB32, false, isLinear); if (m_imageBytes != null) { m_texture.LoadImage(m_imageBytes); } } m_texture.name = m_textureName; }
public IEnumerator ProcessOnMainThread(bool isLinear) { // // texture from assets // m_assetPath.ImportAsset(); var importer = m_assetPath.GetImporter <TextureImporter>(); if (importer == null) { Debug.LogWarningFormat("fail to get TextureImporter: {0}", m_assetPath); } importer.sRGBTexture = !isLinear; importer.SaveAndReimport(); Texture = m_assetPath.LoadAsset <Texture2D>(); //Texture.name = m_textureName; if (Texture == null) { Debug.LogWarningFormat("fail to Load Texture2D: {0}", m_assetPath); } yield break; }
public void SaveAsAsset(UnityPath prefabPath) { ShowMeshes(); //var prefabPath = PrefabPath; if (prefabPath.IsFileExists) { // clear SubAssets foreach (var x in prefabPath.GetSubAssets().Where(x => !(x is GameObject) && !(x is Component))) { GameObject.DestroyImmediate(x, true); } } // // save sub assets // var paths = new List <UnityPath>() { prefabPath }; foreach (var o in ObjectsForSubAsset()) { if (o == null) { continue; } var assetPath = GetAssetPath(prefabPath, o); if (!assetPath.IsNull) { if (assetPath.IsFileExists) { if (AvoidOverwriteAndLoad(assetPath, o)) { // 上書きせずに既存のアセットからロードして置き換えた continue; } } // アセットとして書き込む assetPath.Parent.EnsureFolder(); assetPath.CreateAsset(o); paths.Add(assetPath); } else { // save as subasset prefabPath.AddObjectToAsset(o); } } // Create or upate Main Asset if (prefabPath.IsFileExists) { Debug.LogFormat("replace prefab: {0}", prefabPath); var prefab = prefabPath.LoadAsset <GameObject>(); PrefabUtility.ReplacePrefab(Root, prefab, ReplacePrefabOptions.ReplaceNameBased); } else { Debug.LogFormat("create prefab: {0}", prefabPath); PrefabUtility.CreatePrefab(prefabPath.Value, Root); } foreach (var x in paths) { x.ImportAsset(); } }
public void SaveAsAsset(UnityPath prefabPath) { ShowMeshes(); //var prefabPath = PrefabPath; if (prefabPath.IsFileExists) { // clear SubAssets foreach (var x in prefabPath.GetSubAssets().Where(x => !(x is GameObject) && !(x is Component))) { GameObject.DestroyImmediate(x, true); } } // Add SubAsset var materialDir = prefabPath.GetAssetFolder(".Materials"); materialDir.EnsureFolder(); var textureDir = prefabPath.GetAssetFolder(".Textures"); textureDir.EnsureFolder(); var meshDir = prefabPath.GetAssetFolder(".Meshes"); if (!MeshAsSubAsset) { meshDir.EnsureFolder(); } var paths = new List <UnityPath>() { prefabPath }; foreach (var o in ObjectsForSubAsset()) { if (o is Material) { var materialPath = materialDir.Child(o.name.EscapeFilePath() + ".asset"); materialPath.CreateAsset(o); paths.Add(materialPath); } else if (o is Texture2D) { var texturePath = textureDir.Child(o.name.EscapeFilePath() + ".asset"); texturePath.CreateAsset(o); paths.Add(texturePath); } else if (o is Mesh && !MeshAsSubAsset) { var meshPath = meshDir.Child(o.name.EscapeFilePath() + ".asset"); meshPath.CreateAsset(o); paths.Add(meshPath); } else { // save as subasset prefabPath.AddObjectToAsset(o); } } // Create or upate Main Asset if (prefabPath.IsFileExists) { Debug.LogFormat("replace prefab: {0}", prefabPath); var prefab = prefabPath.LoadAsset <GameObject>(); PrefabUtility.ReplacePrefab(Root, prefab, ReplacePrefabOptions.ReplaceNameBased); } else { Debug.LogFormat("create prefab: {0}", prefabPath); PrefabUtility.CreatePrefab(prefabPath.Value, Root); } foreach (var x in paths) { x.ImportAsset(); } }
public void SaveAsAsset(UnityPath prefabPath, bool meshAsSubAsset = false) { m_context.ShowMeshes(); //var prefabPath = PrefabPath; if (prefabPath.IsFileExists) { // clear SubAssets foreach (var x in prefabPath.GetSubAssets().Where(x => !(x is GameObject) && !(x is Component))) { GameObject.DestroyImmediate(x, true); } } // // save sub assets // var paths = new List <UnityPath>() { prefabPath }; foreach (var o in ObjectsForSubAsset()) { if (!string.IsNullOrEmpty(AssetDatabase.GetAssetPath(o))) { // already exists continue; } var assetPath = GetAssetPath(prefabPath, o, meshAsSubAsset); if (!assetPath.IsNull) { if (assetPath.IsFileExists) { if (AvoidOverwriteAndLoad(assetPath, o)) { // 上書きせずに既存のアセットからロードして置き換えた continue; } } // アセットとして書き込む assetPath.Parent.EnsureFolder(); assetPath.CreateAsset(o); paths.Add(assetPath); } else { // save as subasset prefabPath.AddObjectToAsset(o); } } // Create or update Main Asset if (prefabPath.IsFileExists) { Debug.LogFormat("replace prefab: {0}", prefabPath); var prefab = prefabPath.LoadAsset <GameObject>(); #if UNITY_2018_3_OR_NEWER PrefabUtility.SaveAsPrefabAssetAndConnect(m_context.Root, prefabPath.Value, InteractionMode.AutomatedAction); #else PrefabUtility.ReplacePrefab(Root, prefab, ReplacePrefabOptions.ReplaceNameBased); #endif } else { Debug.LogFormat("create prefab: {0}", prefabPath); #if UNITY_2018_3_OR_NEWER PrefabUtility.SaveAsPrefabAssetAndConnect(m_context.Root, prefabPath.Value, InteractionMode.AutomatedAction); #else PrefabUtility.CreatePrefab(prefabPath.Value, Root); #endif } foreach (var x in paths) { x.ImportAsset(); } }