From 451772ff642ac22bb9b38a13cc06ae507735d623 Mon Sep 17 00:00:00 2001 From: Taku Date: Fri, 5 Nov 2021 23:35:42 +0900 Subject: [PATCH] made it available for obj file --- Assets/Model.meta | 8 -- .../Editor/{SPTempData.cs => SPData.cs} | 4 +- .../{SPTempData.cs.meta => SPData.cs.meta} | 0 .../Editor/SPModelImportWindow.cs | 27 ++-- .../SPModelImporter/Editor/SPModelImporter.cs | 48 +++---- .../SPModelImporter/Editor/ShaderProperty.cs | 4 +- Assets/Scenes/SPModelImporter.unity | 131 +----------------- 7 files changed, 44 insertions(+), 178 deletions(-) delete mode 100644 Assets/Model.meta rename Assets/SPModelImporter/Editor/{SPTempData.cs => SPData.cs} (88%) rename Assets/SPModelImporter/Editor/{SPTempData.cs.meta => SPData.cs.meta} (100%) diff --git a/Assets/Model.meta b/Assets/Model.meta deleted file mode 100644 index 015fb06..0000000 --- a/Assets/Model.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 012d363ae161e0f49b0db114800cd69e -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/SPModelImporter/Editor/SPTempData.cs b/Assets/SPModelImporter/Editor/SPData.cs similarity index 88% rename from Assets/SPModelImporter/Editor/SPTempData.cs rename to Assets/SPModelImporter/Editor/SPData.cs index 3b6dad2..62bc22c 100644 --- a/Assets/SPModelImporter/Editor/SPTempData.cs +++ b/Assets/SPModelImporter/Editor/SPData.cs @@ -3,7 +3,7 @@ namespace SPModelImporter.Editor { [Serializable] - public class SPTempData + public class SPData { public string SourcePath; public string BaseColorPrefix; @@ -12,7 +12,7 @@ public class SPTempData public string HeightPrefix; public string AoPrefix; - public SPTempData(string sourcePath, + public SPData(string sourcePath, string baseColorPrefix, string metallicPrefix, string normalPrefix, diff --git a/Assets/SPModelImporter/Editor/SPTempData.cs.meta b/Assets/SPModelImporter/Editor/SPData.cs.meta similarity index 100% rename from Assets/SPModelImporter/Editor/SPTempData.cs.meta rename to Assets/SPModelImporter/Editor/SPData.cs.meta diff --git a/Assets/SPModelImporter/Editor/SPModelImportWindow.cs b/Assets/SPModelImporter/Editor/SPModelImportWindow.cs index d4956e3..289507e 100644 --- a/Assets/SPModelImporter/Editor/SPModelImportWindow.cs +++ b/Assets/SPModelImporter/Editor/SPModelImportWindow.cs @@ -1,4 +1,5 @@ using System.IO; +using SPModelImporter.Editor; using UnityEditor; using UnityEngine; @@ -9,12 +10,14 @@ public class SPModelImportWindow : EditorWindow [MenuItem("SPModelImporter/Import Model")] public static void OpenFile() { - SPModelSetting Setting = SPModelSetting.GetOrCreate(); + SPModelSetting setting = SPModelSetting.GetOrCreate(); // モデルファイルのパス - var sourceFile = EditorUtility.OpenFilePanel("Select Model file", "", "fbx"); + var sourceFile = EditorUtility.OpenFilePanel("Select Model file", "", "fbx,obj"); var sourceDir = Path.GetDirectoryName(sourceFile); - var saveDir = $"{Application.dataPath}{Setting.saveDir.Replace("Assets", "")}/{Path.GetFileNameWithoutExtension(sourceFile)}"; - var saveFile = $"{Application.dataPath}{Setting.saveDir.Replace("Assets", "")}/{Path.GetFileNameWithoutExtension(sourceFile)}/{Path.GetFileName(sourceFile)}"; + var saveDir = + $"{Application.dataPath}{setting.saveDir.Replace("Assets", "")}/{Path.GetFileNameWithoutExtension(sourceFile)}"; + var saveFile = + $"{Application.dataPath}{setting.saveDir.Replace("Assets", "")}/{Path.GetFileNameWithoutExtension(sourceFile)}/{Path.GetFileName(sourceFile)}"; var jsonPath = @$"{saveDir}/autogenerate.json"; // モデル名のディレクトリの作成 if (!Directory.Exists(saveDir)) Directory.CreateDirectory(saveDir); @@ -22,14 +25,14 @@ public static void OpenFile() // Jsonデータの作成 var json = JsonUtility.ToJson( - new SPTempData( + new SPData( sourceDir, - Setting.baseColorPrefix, - Setting.metallicPrefix, - Setting.normalPrefix, - Setting.heightPrefix, - Setting.aoPrefix)); - + setting.baseColorPrefix, + setting.metallicPrefix, + setting.normalPrefix, + setting.heightPrefix, + setting.aoPrefix)); + // モデルのファイルをコピーしてくる if (File.Exists(saveFile)) { @@ -37,11 +40,11 @@ public static void OpenFile() { File.Delete(saveFile); File.Delete(saveFile + ".meta"); - } else return; } + File.WriteAllText(jsonPath, json); File.Copy(sourceFile, saveFile); diff --git a/Assets/SPModelImporter/Editor/SPModelImporter.cs b/Assets/SPModelImporter/Editor/SPModelImporter.cs index 6f2c510..f72da37 100644 --- a/Assets/SPModelImporter/Editor/SPModelImporter.cs +++ b/Assets/SPModelImporter/Editor/SPModelImporter.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.IO; +using SPModelImporter.Editor; using UnityEditor; using UnityEngine; @@ -10,7 +11,6 @@ public class SPModelImporter : AssetPostprocessor { private static readonly List ProcessedList = new List(); - /// /// アセットを読み込んだ時に発火する /// @@ -18,13 +18,15 @@ public class SPModelImporter : AssetPostprocessor /// /// /// - private static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, + private static void OnPostprocessAllAssets( + string[] importedAssets, + string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) { foreach (var path in importedAssets) { - if (path.EndsWith(".fbx")) + if (path.EndsWith(".fbx") || path.EndsWith(".obj")) { if (ProcessedList.Contains(path)) { @@ -45,7 +47,7 @@ private static void OnPostprocessAllAssets(string[] importedAssets, string[] del } string json = File.ReadAllText(jsonPath); - var temp = JsonUtility.FromJson(json); + var temp = JsonUtility.FromJson(json); if (string.IsNullOrEmpty(json)) { @@ -56,7 +58,7 @@ private static void OnPostprocessAllAssets(string[] importedAssets, string[] del // jsonの削除 if (File.Exists(jsonPath)) File.Delete(jsonPath); if (File.Exists(jsonPath + ".meta")) File.Delete(jsonPath + ".meta"); - + // フォルダ var setting = SPModelSetting.GetOrCreate(); var sourceTexDir = @$"{temp.SourcePath}\{setting.textureFolderName}"; @@ -96,29 +98,24 @@ static void CreateMaterialAndSetTextures( string distTexDir, string distMatDir, string modelName, - SPTempData spTemp, + SPData substance, string matName) { #if UNITY_RP_URP Material material = new Material(Shader.Find("Universal Render Pipeline/Lit")) { name = matName }; - var sourceBaseMap = ConvertPrefix(@$"{sourceTexDir}\{spTemp.BaseColorPrefix}", modelName, matName); - var sourceHeightMap = ConvertPrefix(@$"{sourceTexDir}\{spTemp.MetallicPrefix}", modelName, matName); - var sourceMetallicMap = ConvertPrefix(@$"{sourceTexDir}\{spTemp.MetallicPrefix}", modelName, matName); - var sourceNormalMap = ConvertPrefix(@$"{sourceTexDir}\{spTemp.NormalPrefix}", modelName, matName); - var sourceRoughnessMap = ConvertPrefix(@$"{sourceTexDir}\{spTemp.HeightPrefix}", modelName, matName); - var sourceAoMap = ConvertPrefix(@$"{sourceTexDir}\{spTemp.AoPrefix}", modelName, matName); - - - // マテリアルごとにフォルダを作成 - if (!Directory.Exists(@$"{distTexDir}\{matName}")) - Directory.CreateDirectory(@$"{distTexDir}\{matName}"); - - var distBaseMap = ConvertPrefix(@$"{distTexDir}\{matName}\{spTemp.BaseColorPrefix}", modelName, matName); - var distHeightMap = ConvertPrefix(@$"{distTexDir}\{matName}\{spTemp.MetallicPrefix}", modelName, matName); - var distMetallicMap = ConvertPrefix(@$"{distTexDir}\{matName}\{spTemp.MetallicPrefix}", modelName, matName); - var distNormalMap = ConvertPrefix(@$"{distTexDir}\{matName}\{spTemp.NormalPrefix}", modelName, matName); - var distRoughnessMap = ConvertPrefix(@$"{distTexDir}\{matName}\{spTemp.HeightPrefix}", modelName, matName); - var distAoMap = ConvertPrefix(@$"{distTexDir}\{matName}\{spTemp.AoPrefix}", modelName, matName); + var sourceBaseMap = ConvertPrefix(@$"{sourceTexDir}\{substance.BaseColorPrefix}", modelName, matName); + var sourceHeightMap = ConvertPrefix(@$"{sourceTexDir}\{substance.MetallicPrefix}", modelName, matName); + var sourceMetallicMap = ConvertPrefix(@$"{sourceTexDir}\{substance.MetallicPrefix}", modelName, matName); + var sourceNormalMap = ConvertPrefix(@$"{sourceTexDir}\{substance.NormalPrefix}", modelName, matName); + var sourceRoughnessMap = ConvertPrefix(@$"{sourceTexDir}\{substance.HeightPrefix}", modelName, matName); + var sourceAoMap = ConvertPrefix(@$"{sourceTexDir}\{substance.AoPrefix}", modelName, matName); + + var distBaseMap = ConvertPrefix(@$"{distTexDir}\{matName}\{substance.BaseColorPrefix}", modelName, matName); + var distHeightMap = ConvertPrefix(@$"{distTexDir}\{matName}\{substance.MetallicPrefix}", modelName, matName); + var distMetallicMap = ConvertPrefix(@$"{distTexDir}\{matName}\{substance.MetallicPrefix}", modelName, matName); + var distNormalMap = ConvertPrefix(@$"{distTexDir}\{matName}\{substance.NormalPrefix}", modelName, matName); + var distRoughnessMap = ConvertPrefix(@$"{distTexDir}\{matName}\{substance.HeightPrefix}", modelName, matName); + var distAoMap = ConvertPrefix(@$"{distTexDir}\{matName}\{substance.AoPrefix}", modelName, matName); List> maps = new List>(); maps.Add(new Tuple(sourceBaseMap, distBaseMap, ShaderProperty.BaseMap)); maps.Add(new Tuple(sourceHeightMap, distHeightMap, ShaderProperty.HeightMap)); @@ -127,6 +124,9 @@ static void CreateMaterialAndSetTextures( maps.Add(new Tuple(sourceRoughnessMap, distRoughnessMap, ShaderProperty.RoughnesMap)); maps.Add(new Tuple(sourceAoMap, distAoMap, ShaderProperty.AOMap)); + // マテリアルがあった場合ぞれぞれフォルダを作成 + if (maps.Count > 0 && !Directory.Exists(@$"{distTexDir}\{matName}")) + Directory.CreateDirectory(@$"{distTexDir}\{matName}"); foreach (var map in maps) { diff --git a/Assets/SPModelImporter/Editor/ShaderProperty.cs b/Assets/SPModelImporter/Editor/ShaderProperty.cs index 35aa59e..afa142b 100644 --- a/Assets/SPModelImporter/Editor/ShaderProperty.cs +++ b/Assets/SPModelImporter/Editor/ShaderProperty.cs @@ -74,10 +74,10 @@ public static class ShaderProperty #else StandardHeightMap; #endif -# if UNITY_RP_URP + # if UNITY_RP_URP public static int AOMap => URPAOMap; // StandardAOMap; -#endif + #endif public static int EmissionMap => # if UNITY_RP_URP URPEmissionMap; diff --git a/Assets/Scenes/SPModelImporter.unity b/Assets/Scenes/SPModelImporter.unity index 3a2bbee..f9cf9e6 100644 --- a/Assets/Scenes/SPModelImporter.unity +++ b/Assets/Scenes/SPModelImporter.unity @@ -132,7 +132,6 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 595217743} - - component: {fileID: 595217742} m_Layer: 0 m_Name: GameObject m_TagString: Untagged @@ -140,20 +139,6 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!114 &595217742 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 595217741} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 7bb68acb5c0ae9f42bb97072d7cc048d, type: 3} - m_Name: - m_EditorClassIdentifier: - _material: {fileID: 2100000, guid: 2089870f240956b4d82601df57d812de, type: 2} - _texture2D: {fileID: 2800000, guid: 866e57e3d33cc1d429805a382c0bad46, type: 3} --- !u!4 &595217743 Transform: m_ObjectHideFlags: 0 @@ -168,63 +153,6 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1001 &912823224 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: -8679921383154817045, guid: a818015dbd309474c9522a2884814950, type: 3} - propertyPath: m_RootOrder - value: 1 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: a818015dbd309474c9522a2884814950, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: a818015dbd309474c9522a2884814950, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: a818015dbd309474c9522a2884814950, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: a818015dbd309474c9522a2884814950, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: a818015dbd309474c9522a2884814950, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: a818015dbd309474c9522a2884814950, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: a818015dbd309474c9522a2884814950, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: a818015dbd309474c9522a2884814950, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: a818015dbd309474c9522a2884814950, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: a818015dbd309474c9522a2884814950, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 919132149155446097, guid: a818015dbd309474c9522a2884814950, type: 3} - propertyPath: m_Name - value: untitled1 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: a818015dbd309474c9522a2884814950, type: 3} --- !u!1 &2011858850 GameObject: m_ObjectHideFlags: 0 @@ -318,62 +246,5 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 2 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1001 &2132967998 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: -8679921383154817045, guid: a818015dbd309474c9522a2884814950, type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: a818015dbd309474c9522a2884814950, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: a818015dbd309474c9522a2884814950, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: a818015dbd309474c9522a2884814950, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: a818015dbd309474c9522a2884814950, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: a818015dbd309474c9522a2884814950, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: a818015dbd309474c9522a2884814950, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: a818015dbd309474c9522a2884814950, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: a818015dbd309474c9522a2884814950, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: a818015dbd309474c9522a2884814950, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: a818015dbd309474c9522a2884814950, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 919132149155446097, guid: a818015dbd309474c9522a2884814950, type: 3} - propertyPath: m_Name - value: untitled1 (1) - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: a818015dbd309474c9522a2884814950, type: 3}