본문으로 건너뛰기

러프니스를 스무스니스로 변환 · Unity용 채널 반전

Unity 메탈릭 워크플로는 스무스니스를 읽는데 대부분의 텍스처 도구는 러프니스를 씁니다. 반전은 간단한 계산이지만 바이트가 살아남아야 합니다. 텍스처 랩은 PNG를 직접 읽으므로 저장된 값이 정확히 255 − 러프니스입니다.

텍스처 맵을 끌어다 놓으세요(PNG는 채널 바이트를 그대로 유지)
브라우저에서 처리하며 파일은 업로드되지 않습니다.
텍스처 랩: CC0 텍스처로 만든 노멀맵과 OpenGL/DirectX 규약 표시
CC0 에셋(ambientCG)을 연 실제 텍스처 랩 화면입니다.
출력
  • Channel PNGs측정 확인· numpy
  • Normal map측정 확인· numpy
  • Packed mask / ORM측정 확인· Pillow
  • Engine import미검증

이렇게 작동합니다

  • 정확히 255 − v를 쓰는 채널 반전(내려받은 파일을 numpy로 확인).
  • 브라우저 캔버스라면 잃었을 완전히 투명한 텍셀 아래의 바이트 유지.
  • Unity HDRP(마스크 맵)나 URP(알파의 메탈릭 + 스무스니스)에서의 의미와 함께 채널 미리보기.
  • 패커로 이어서: 스무스니스는 URP 메탈릭 맵이나 HDRP 마스크 맵의 알파에 들어갑니다.

사용 방법

  1. 러프니스 맵(PNG)을 끌어다 놓습니다.
  2. 채널을 반전합니다.
  3. 스무스니스 맵을 받거나 마스크 패커를 엽니다.
  4. Unity 프리셋으로 메탈릭(HDRP는 AO도)과 함께 패킹합니다.

출력 파일과 검증 방법

"측정 확인"은 내려받은 파일을 페이지 밖에서(Pillow·numpy·별도 파서) 다시 열어 그 속성을 측정했다는 뜻입니다. 게임 엔진에서 불러오는 것은 시험하지 않았습니다.

대상파일검증
Channel PNGs<name>-r/g/b/a.png (8-bit grey)측정 확인 numpy채널마다 바이트가 같고 완전히 투명한 텍셀 아래의 RGB도 유지됩니다.
Normal mapPNG · OpenGL (+Y) or DirectX (−Y)측정 확인 numpy디코딩한 벡터가 단위 길이(최대 오차 0.0002)이고, OpenGL과 DirectX는 초록 채널만 다릅니다.
Packed mask / ORMUnity HDRP mask · URP metallic · ORM (glTF, Godot)측정 확인 Pillow패킹된 바이트 확인: ORM 프리셋, AO 10 / 러프니스 80 / 메탈릭 220 → (10, 80, 220, 255).
Engine importUnity · Unreal · Godot미검증어떤 엔진에서도 불러오지 않았습니다.

검증 근거

채널 분리가 네 채널 모두 바이트 동일(최대 차이 0), 투명 텍셀 2048개가 RGB 유지. 가장자리 번짐은 알파 0인 텍셀 448개만 바꾸고 알파 바이트는 하나도 건드리지 않음. OpenGL ↔ DirectX는 초록(255 − g)만 다름. 변환한 노멀은 단위 벡터.

한계

  • 정확한 채널 바이트는 PNG에서만 보장됩니다. JPEG·WebP는 브라우저가 디코딩하며 "바이트 동일 아님"으로 표시합니다.
  • 인터레이스 PNG와 16비트 출력은 지원하지 않습니다. 정확 경로는 3,355만 픽셀까지입니다.
  • 노멀맵의 규약은 픽셀로 알아낼 수 없고 변환만 할 수 있습니다.
  • Unity·Unreal·Godot에서 불러오지 않았습니다. 채널 순서는 각 문서와 엔진 소스에 근거합니다.

자주 묻는 질문

Unity는 스무스니스를 어느 채널에서 읽나요?

URP 메탈릭은 메탈릭 맵의 알파, HDRP 마스크 맵도 알파입니다(R 메탈릭·G AO·B 디테일 마스크). 두 순서 모두 Unity 문서에 근거하며 랩에 인용합니다.

Unity에서 불러와 봤나요?

아니요. 바이트는 확인했지만 여기서 Unity 가져오기는 하지 않았습니다.

무료인가요? 계정이 필요한가요?

이 페이지의 기능은 모두 무료이며 계정 없이 쓸 수 있습니다. 워터마크나 막혀 있는 내보내기가 없습니다.

스프라이트가 업로드되나요?

아니요. Studio는 이 브라우저 탭 안에서 디코딩·패킹·내보내기를 합니다. 프로젝트는 브라우저(IndexedDB)에 자동 저장되며 .nerulio 파일로 저장할 수 있습니다.

Aseprite나 엔진 플러그인을 설치해야 하나요?

아니요. .aseprite 파일은 브라우저에서 읽고 씁니다. 엔진별 번들에는 그 엔진에 필요한 것이 들어 있습니다(Godot는 가져오기 설정과 씬, Unity와 Godot 타일셋은 작은 편집기 스크립트).