본문 바로가기
유니티 엔진

그럼에도 불구하고 유니티에서 왜 PNG가 왜 좋은가??

by 대마왕J 2016. 7. 21.

후후후후 

글을 쓰고 나서 바로 하루도 안되어서 제 글을 반박하는 글을 쓰게 되었군요 

제목은 자극적으로 낚시 (...) 뭐 엄청나게 PNG가 좋은건 아니지만, 문제를 해결할 수 있는 방법이 생긴건 맞아요 




많은 도움을 주신 @hellonbee  님께 정말 감사의 말씀을 드립니다. 


예전에 영상 공부할때에도 이런 '알파에 의한 찌꺼기 묻어남' 현상을 막기 위한 에프터 이펙트 기능으로 '프리멀티드 알파'(Pre-Multiplied Alpha) 라고 하는 기법이 있었습니다. 미리 투명도를 곱해 놔서 외각색이 묻어 나오는 것을 방지하는 기능이지요 


http://www.3dsmax.net/ez2k/ezboard.cgi?db=maxtheory&action=read&page=0&dbf=3&


뭐 이것과 완벽히 같은 알고리즘인지는 모르겠지만, 유니티에도 이 문제를 해결할 수 있는 기능이 생겨 있다는 것을  @hellonbee 님과 얘기하다가 발견하게 되었습니다! 









시작은 다시 여기에서부터 시작합니다. 묻어나오던 그 이미지. 외각이 묻어나오던 그거 말이죠 



이렇게 하려면 속성을 이렇게 해야 합니다. 뭐 그냥 일반적인 Texture 속성이요. 







이런 경우 외각 칼라가 묻어나오는게 너무 당연해서, TGA를 이용해서 외각보다 큰 색상으로 해결해라.. 뭐 그런 요지였습니다만. 이것을 해결할 수 있는 기능도 숨어 있더군요! 



심지어 메뉴얼에도 안써있는 기능이네요 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 뭐야 이거 만들고서 왜 홍보 안하는건데 ㅋㅋㅋ


일단 생긴지 그렇게 오래 안된 기능인걸로 아는데, "Alpha is Transparency" 기능이 그 기능이었습니다. 


이 옵션만 켜주면 이렇게 됩니다. 



짜잔.


아무리 봐도 프리멀티드 알파가 동작하는 모양과 비슷한데요??!??!?!? 예전 에프터 이펙트에서 봤던 그 기능 말이죠. ㅎㅎ 

이 기능을 쓰면 외각이 묻어나오는 것을 상당 부분 복구할 수 있게 됩니다! 매우 간단해요. 


물론 비교해 보니 압축 상태에서 TGA를 이용하는 것이 미세하게 더 깔끔한게 보이긴 합니다만, 실제 사용할때는 큰 차이가 없을 정도로 괜찮습니다. 상당히 괜찮아요. 


사실 저 기능이 생겼을때는, "뭐야 그냥 반투명을 프리뷰에서 보여주려고 만든 기능이었나?" 하고 생각했었습니다만, 

오늘 드디어 저 기능의 정체를 밝힐 수 있게 되었습니다. 덕분에 저도 많이 배우게 되어서 기쁩니다.
 이제 확실히 말할 수 있게 되었네요.  


"PNG 걱정말고 쓰셔도 될 것 같습니다!!!" ㅎㅎ

반응형

댓글