노말맵 G 체널 인버터 클래스.
맥스나 마야 또는 기타 다른 엔진의 경우 노말맵의 Green channel 이 아래쪽으로 되어 있는 것을 보셨죠?
유니티와 연동해서 작업 할 때 매번 포토샵에서 노말맵을 반전 시켜서 따로 저장 하고 하던 거 엄청 지겹죠.
간단하게 에디터 클래스를 만들었습니다.
AssetPostprocessor 를 상속받아서 작성 해야 하고요...
SetPixels 은 32비트나 24비트만을 지원 하기 때문에 원본을 유지 하고 사용하기에는 DXT 등의 압축은 사용 할 수 없어요.
뭐 만약 꼭 해야 한다면 좀 더 복잡 해 지겠죠. 그리고 원본을 그대로 쓰진 못하고 tmp 데이터로 생성시킨 후 프로세싱을 거쳐 원본에 겹쳐 쓰기 해 줘야 할 겁니다.
아직까지 그건 못했고. ㅋㅌ;
유니티와 연동해서 작업 할 때 매번 포토샵에서 노말맵을 반전 시켜서 따로 저장 하고 하던 거 엄청 지겹죠.
간단하게 에디터 클래스를 만들었습니다.
AssetPostprocessor 를 상속받아서 작성 해야 하고요...
SetPixels 은 32비트나 24비트만을 지원 하기 때문에 원본을 유지 하고 사용하기에는 DXT 등의 압축은 사용 할 수 없어요.
뭐 만약 꼭 해야 한다면 좀 더 복잡 해 지겠죠. 그리고 원본을 그대로 쓰진 못하고 tmp 데이터로 생성시킨 후 프로세싱을 거쳐 원본에 겹쳐 쓰기 해 줘야 할 겁니다.
아직까지 그건 못했고. ㅋㅌ;
using UnityEngine; using UnityEditor; using System.Collections; public class Green_channel_flip : AssetPostprocessor { // Use this for initialization void OnPostprocessTexture(Texture2D texture) { string lowerCaseAssetPath = assetPath.ToLower(); if (lowerCaseAssetPath.IndexOf("/inverted/") == -1) return; //프로세스 처리 될 폴더 패스. for (int m = 0; m < texture.mipmapCount; m++) { Color[] c = texture.GetPixels(m); for (int i = 0; i < c.Length; i++) { c[i].r = c[i].r; c[i].g = 1 - c[i].g; c[i].b = c[i].b; } texture.SetPixels(c, m); TextureOptions(); } } void TextureOptions() { string lowerCaseAssetPath = assetPath.ToLower(); TextureImporter textureImporter = AssetImporter.GetAtPath(lowerCaseAssetPath) as TextureImporter; textureImporter.textureType = TextureImporterType.Advanced; textureImporter.mipmapEnabled = true; textureImporter.anisoLevel = 3; textureImporter.isReadable = true; textureImporter.npotScale = TextureImporterNPOTScale.None; textureImporter.filterMode = FilterMode.Trilinear; textureImporter.textureFormat = TextureImporterFormat.RGB24; } }Game Developer Leegoon copyright all right reserved since 2010.
Comments
Post a Comment
덧글쓰기 기능 있는거 아시죠? ㅋㅋ