瀏覽代碼

Material Converted Texture & Pixel Fixes

Fix normal map conversion issue & use 32-bit cube face pixels
MackeyK24 8 年之前
父節點
當前提交
b76c3c7bb3

+ 15 - 5
Exporters/Unity 5/EditorToolkit/Assets/Babylon/Source/SceneBuilder.Materials.cs

@@ -173,8 +173,8 @@ namespace Unity3D2Babylon
                         {
                             ExporterWindow.ReportProgress(1, "Exporting texture cube item: " + textureName);
                             var tempTexture = new Texture2D(textureFace.width, textureFace.height, TextureFormat.ARGB32, false);
-                            Color[] pixels = textureFace.GetPixels();
-                            tempTexture.SetPixels(pixels);
+                            Color32[] pixels = textureFace.GetPixels32();
+                            tempTexture.SetPixels32(pixels);
                             tempTexture.Apply();
                             if (png)
                             {
@@ -207,8 +207,15 @@ namespace Unity3D2Babylon
             {
                 string srcTexturePath = AssetDatabase.GetAssetPath(texture2D);
                 var importTool = new BabylonTextureImporter(srcTexturePath);
-                bool isReadable = importTool.IsReadable();
-                if (!isReadable) importTool.SetReadable();
+                var previousConvertToNormalmap = importTool.textureImporter.convertToNormalmap;
+                var previousAlphaSource = importTool.textureImporter.alphaSource;
+                var previousTextureType = importTool.textureImporter.textureType;
+                importTool.SetReadable();
+                importTool.textureImporter.textureType = TextureImporterType.Default;
+                importTool.textureImporter.alphaSource = TextureImporterAlphaSource.FromInput;
+                importTool.textureImporter.convertToNormalmap = false;
+                AssetDatabase.ImportAsset(texturePath);
+
                 try
                 {
                     var usePNG = texture2D.alphaIsTransparency;
@@ -248,7 +255,10 @@ namespace Unity3D2Babylon
                 }
                 finally
                 {
-                    if (!isReadable) importTool.ForceUpdate();
+                    importTool.textureImporter.textureType = previousTextureType;
+                    importTool.textureImporter.alphaSource = previousAlphaSource;
+                    importTool.textureImporter.convertToNormalmap = previousConvertToNormalmap;
+                    importTool.ForceUpdate();
                 }
             }
             else if (texture2D.alphaIsTransparency || texturePath.EndsWith(".png"))

二進制
Exporters/Unity 5/EditorToolkit/Redist/Asset Store-5.x/BabylonJS/BabylonJS Editor Toolkit.unitypackage