Files
ZHGD_Web/Assets/Quixel/Scripts/BridgeImporter/MegascansTextureProcessor.cs

50 lines
1.8 KiB
C#
Raw Permalink Normal View History

2025-07-13 23:16:20 +08:00
#if UNITY_EDITOR
using UnityEngine;
using System.IO;
using UnityEditor;
using System;
namespace Quixel
{
public class MegascansTextureProcessor : MonoBehaviour
{
string sourcePath;
string destPath;
bool normalMap;
bool sRGB;
public MegascansTextureProcessor(string sourcePath, string destPath, bool normalMap = false, bool sRGB = true)
{
this.sourcePath = sourcePath;
this.destPath = destPath;
this.normalMap = normalMap;
this.sRGB = sRGB;
}
public Texture2D ImportTexture()
{
MegascansUtilities.CopyFileToProject(sourcePath, destPath);
TextureImporter tImp = AssetImporter.GetAtPath(destPath) as TextureImporter;
int importResolution = Convert.ToInt32(Math.Pow(2, 9 + EditorPrefs.GetInt("QuixelDefaultImportResolution", 4)));
tImp.maxTextureSize = importResolution;
tImp.sRGBTexture = sRGB;
tImp.textureType = normalMap ? TextureImporterType.NormalMap : TextureImporterType.Default;
AssetDatabase.ImportAsset(destPath);
AssetDatabase.Refresh();
return AssetDatabase.LoadAssetAtPath<Texture2D>(destPath);
}
public void AdjustAlphaCutoff(float alphaCutoff = 0.33f, bool alphaIsTransparency = true, bool mipMapsPreserveCoverage = true)
{
TextureImporter tImp = AssetImporter.GetAtPath(destPath) as TextureImporter;
tImp.mipMapsPreserveCoverage = mipMapsPreserveCoverage;
tImp.alphaIsTransparency = alphaIsTransparency;
tImp.alphaTestReferenceValue = alphaCutoff;
AssetDatabase.ImportAsset(destPath);
AssetDatabase.Refresh();
AssetDatabase.LoadAssetAtPath<Texture2D>(destPath);
}
}
}
#endif