> For the complete documentation index, see [llms.txt](https://docs.decentraland.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.decentraland.org/creator/content-creator-ko/3d/textures.md).

# 텍스처

Decentraland에서 텍스처가 어떻게 작동하는지 알아보세요

텍스처는 원하는 장면의 외형과 느낌을 구현하는 3D 아트 파이프라인의 핵심 요소입니다. 이 섹션에서는 텍스처를 만드는 데 필요한 모든 것, 제약 사항, Blender의 노드, 그리고 최고의 성능을 내도록 최적화하는 방법까지 알아야 할 모든 내용을 확인할 수 있습니다!

{% hint style="info" %}
**💡 팁**: 다음을 설치하세요 [Decentraland Tools Blender 플러그인](https://extensions.blender.org/add-ons/decentraland-tools/). 여기에는 3D 모델, 착용 아이템, 이모트를 편집하고 내보내는 데 도움이 되는 여러 유용한 기능이 포함되어 있습니다.
{% endhint %}

## 제한 사항

### 텍스처 크기 제약

현재 Decentraland Explorer는 장면이 콘텐츠 서버에 업로드된 후 Asset Bundle Converter를 사용하여 최적화 목적으로 텍스처를 최대 1024px로 압축합니다. 에셋을 만들 때 이 제한을 반드시 고려하세요!

또 하나 중요한 점은 텍스처는 항상 2의 거듭제곱이어야 한다는 것입니다. 이 사양을 따르지 않는 텍스처는 장면 렌더링 시 문제를 일으킬 수 있습니다.

텍스처 크기는 다음 숫자와 일치하는 너비와 높이 값(픽셀 단위)을 사용해야 합니다:

```
1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024
```

> 이 수열은 2의 거듭제곱으로 이루어져 있습니다: `f(x) = 2 ^ x` . **1024는 텍스처 크기로 허용하는 최대값입니다.** 이는 다른 렌더링 엔진에서도 꽤 흔한 요구 사항이며, 그래픽 프로세서의 내부 최적화 때문에 존재합니다.

너비와 높이가 같은 숫자일 필요는 없지만, 둘 다 이 수열에 속해야 합니다.

**텍스처의 권장 크기는 1024x1024입니다**, 이는 국내 네트워크를 통해 전송하기에 가장 적절한 크기이며, 합리적인 로딩/품질 경험을 제공한다고 판단했습니다.

다른 유효한 크기 예시:

```
32x32px
64x32px
512x256px
512x512px
1024x1024px
```

한편, 파셀당 텍스처 수에도 제한이 있습니다:

```
log2(n+1) x 10 파셀당 텍스처 개수. 모델의 일부로 가져온 텍스처도 포함됩니다.
```

## UV 매핑

UV 매핑은 3D 모델의 면을 나중에 에셋에 다양한 맵을 추가하는 데 사용될 2D 좌표로 펼치는 과정입니다. 이는 제작 과정의 핵심 부분입니다. 모델을 올바르게 언래핑하는 것은 모델의 해상도를 최대한 활용하는 데 중요한 요소이며, 맵을 수정하기 쉽게 정리해 주기도 합니다.

UV 언래핑에 대해 더 알고 싶다면 Blender Foundation이 만든 이 멋진 영상을 보세요:

[![Video Preview](https://i.ytimg.com/vi/Y7M-B6xnaEM/maxresdefault.jpg)](https://youtu.be/Y7M-B6xnaEM?si=qMnWTMsXxC-vxZAH)

더 복잡한 모델의 UV 언래핑 방법을 설명하는 \[Blender Guru]\(<https://www.youtube.com/@blenderguru)가> 만든 또 다른 훌륭한 중급 수준 튜토리얼도 있습니다:

[![Video Preview](https://i.ytimg.com/vi/scPSP_U858k/maxresdefault.jpg)](https://youtu.be/scPSP_U858k?si=Uw0xHbv9jtqVstDS)

## 맵

다음에서 [머티리얼 섹션](https://docs.decentraland.org/creator/3d-modeling/materials/) 이전 섹션에서 Decentraland가 PBR 셰이더와 어떻게 작동하는지 설명했습니다. 이 섹션에서는 각 텍스처 맵이 셰이더와, 나중에 월드로 내보내질 3D 오브젝트의 외형과 느낌을 어떻게 바꾸는지 보여드리겠습니다.

## 디퓨즈 맵

이는 오브젝트 표면의 기본 색상입니다. 모델 전반에 균형 잡힌 색상 팔레트를 갖추는 것은 경험의 일관된 외형과 느낌을 만드는 데 핵심입니다.

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-082485ff5c6515c1ff70e8cdea3481ceb1f00daf%2F58-difusemap.png?alt=media)

필요할 때 사용할 수 있는 멋진 무료 팔레트 생성기입니다!

* **Coolors:** <https://coolors.co/>

아니면 멋진 영화들에서 얻을 수 있는 팔레트 영감도 있습니다:

* **Movies in Color:** <https://moviesincolor.com/>

## 메탈릭 맵

메탈릭 맵에서는 그레이스케일 맵이 오브젝트가 가진 메탈성의 정도를 나타내며, 흰색은 완전한 메탈릭, 검은색은 비메탈릭입니다. 다음 예시에서는 빛이 모델에 어떤 영향을 주고 환경과 어떻게 상호작용하는지 볼 수 있습니다.

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-940b5a7f16290e63bce2002acc9851492a95e280%2F64-metallic-map.png?alt=media)

*이미지에서 텍스처의 어두운 부분이 모델에 어떤 영향을 주는지 볼 수 있습니다. 어두운 줄무늬는 불투명하고, 흰색 줄무늬는 메탈릭 셰이더 속성에 따라 작동하며, 회색은 둘의 혼합입니다.*

## 러프니스 맵

러프니스 맵에서는 어두운 영역이 더 매끄러운 표면에, 밝은 영역이 더 거친 표면에 해당합니다. 이 그레이스케일 표현은 렌더링 엔진이 표면의 서로 다른 지점에서 빛이 어떻게 산란되거나 반사되어야 하는지를 결정하는 데 사용됩니다.

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-5b1c0831ee575f6d338e36bea0ad524cb11234f3%2F48-roughness.png?alt=media) ![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-6c2ac22efcec5853d4d0c74442c8875af3b74bb4%2F49-roughness.gif?alt=media)

## 투명 맵

### 알파 클립

Blender의 Alpha Clip은 텍스처와 함께 사용할 때, 텍스처의 알파 채널을 사용하여 재질의 어느 부분을 보이게 할지 결정하는 방식입니다. 알파 값이 지정된 임계값보다 높은 픽셀은 표시되고, 그보다 낮은 값은 버려져 텍스처의 투명도 정보를 바탕으로 잘라낸 효과를 만듭니다.

다음 예시에서는 알파 클립이 적용된 머티리얼을 사용했으며, 디퓨즈 컬러와 흑백 알파 텍스처 두 개를 사용해 색상을 알파 채널에 연결했습니다.

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-3dd720ef70aa23ce8f81586df52a17d23fc9ea45%2F33-alpha-clip-leave.jpeg?alt=media) ![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-ad0aa8f8c1af4f38fddb769be98d92b9692afb8f%2F33-alpha-clip-mask.jpeg?alt=media)

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-5e7675fecbf72c5c637b1dc5688349e0830e7777%2F33-alpha-blender.png?alt=media)

*그 결과 검은색으로 칠해진 영역은 버려지고 흰색 영역은 렌더링되는 것을 볼 수 있습니다*

### 알파 블렌드

*알파 블렌드* 영역별로 중간 값을 선택할 수 있습니다.

Blender의 Alpha Blend는 텍스처와 함께 사용할 때, 텍스처의 투명한 부분과 불투명한 부분을 알파 채널에 따라 혼합하는 방식입니다. 이를 통해 텍스처의 보이는 부분과 투과되는 부분을 부드럽게 결합하여 배경이나 장면의 다른 오브젝트와 자연스럽게 상호작용할 수 있습니다.

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-5d905cd398beddec84820f474e90cc9d8f0be614%2F33-alpha-blend.png?alt=media)

*Alpha Clip은 렌더 값이 0 또는 1(특정 임계값에서)인 반면 Alpha Blend는 0과 1 사이의 값을 보간합니다. 위 예시에서 alpha blend 머티리얼은 완전한 그라데이션 전환을 보여주고, alpha clip은 클립 임계값으로 설정된 텍스처의 일부를 제외합니다.*

{% hint style="warning" %}
**🔥최적화 팁🔥**

* 투명 텍스처(RGB+A)는 투명도를 위해 그레이스케일 값을 사용하는 것보다 항상 성능 면에서 더 비쌉니다.
* 투명도는 장면을 렌더링할 때 항상 비용이 큰 작업입니다. 투명도는 가능한 한 최소화하고, Alpha Blend는 꼭 필요할 때만 사용하세요. 그렇지 않다면 Alpha Blend보다 Alpha Clip을 사용하는 것이 좋습니다.
  {% endhint %}

## 발광 맵

발광 맵은 3D 장면에서 표면의 자체 조명이나 방출되는 빛을 제어하는 데 사용되는 텍스처 맵의 한 종류입니다. 이는 외부 광원과 무관하게 특정 3D 모델의 특정 부분이 얼마나 많은 빛(그리고 어떤 색의 빛)을 방출하는지를 결정하는 셰이더의 구성 요소입니다. 발광 맵은 물체나 재질이 스스로 빛을 내는 것처럼 보이게 하는 데 흔히 사용됩니다.

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-6feb4f69267949ee907f39fe867377396b8fa1f6%2F57-emissive-map.gif?alt=media)

*이 예시에서는 월드에서 발광이 어떻게 동작하는지 대략적으로 테스트하기 위해 글로우 후처리를 사용하는 환경에서, 발광 강도와 결합된 발광 맵의 사용을 볼 수 있습니다.*

## 노멀 맵

노멀 맵은 3D 그래픽에서 미세한 표면 디테일을 시뮬레이션하고, 모델의 기본 지오메트리를 실제로 변경하지 않고도 복잡한 형상이 있는 것처럼 보이게 만드는 텍스처의 한 종류입니다. 이는 범프, 홈, 기타 표면의 불규칙성을 추가해 저폴리 모델의 사실감을 높이는 데 흔히 사용됩니다. 또한 복잡한 지오메트리 대신 노멀 맵 레이어에서 많은 디테일을 제공할 수 있어 오브젝트 자체를 더 가볍게 유지할 수 있습니다.

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-a01cce23a0225aba58245fe46db1e03abc54252d%2F51-normal-map.png?alt=media) ![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-13d87ebefb8dbb8b4ddc2d72b2d6d3db7181872f%2F50-normal.gif?alt=media)

를 사용하여 머티리얼에 노멀 맵을 추가하려면 *셰이더 에디터*, 다음을 연결해야 합니다 ***노멀 맵*** 텍스처와 *Principled BSDF* 셰이더 사이에 노멀 맵 노드를 연결해야 합니다.

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-28db25db5fcad571186fdbe87a7749a75133540e%2F56-normal-map.png?alt=media)

{% hint style="warning" %}
**⚠️중요⚠️:** 텍스처를 알베도와 노멀로 동시에 사용하지 마세요. 장면 렌더링 시 문제를 일으킬 수 있습니다.
{% endhint %}

## 텍스처 최적화

텍스처 최적화 과정은 익스플로러에서 장면을 렌더링할 때 많은 이점을 제공할 뿐 아니라, 장면의 스타일을 일관되고 설계 과정에서 더 유연하게 유지하는 좋은 방법이기도 합니다. 다음과 같은 이점이 있습니다:

* 크기와 압축이 최적화된 텍스처를 사용하면 장면이 훨씬 더 부드럽고 빠르게 실행되어 다운로드가 빨라지고 렌더링도 쉬워집니다(특히 인터넷 연결이 느린 플레이어에게 유리합니다).
* 경험을 렌더링하는 데 필요한 메모리와 처리 능력을 줄여 플레이어에게 더 나은 사용자 경험을 제공합니다.
* 커뮤니티 콘텐츠 서버의 저장 공간을 절약합니다.
* 사용하는 **텍스처 아틀라스** 및/또는 **트림 시트** 는 장면 제작을 반복할 때 더 큰 유연성과 오브젝트 간 스타일 일관성을 제공합니다. 이러한 기법을 사용하면 각 모델마다 개별적으로 하지 않고도 텍스처를 쉽게 교체하거나 색상/패턴을 조정할 수 있습니다.
* 모델 간에 텍스처를 공유하면 장면당 텍스처 수를 줄일 수 있어 게임 내 드로우 콜을 크게 감소시킬 수 있습니다. glb(임베드된 텍스처 포함)를 사용하고 있다면, 다음 가이드라인에서 텍스처를 추출하는 데 사용할 추출 도구를 찾을 수 있으며, 모델이 동일한 텍스처를 사용하도록 재지정할 수 있습니다.

## glTF 모델 간 공유 텍스처

장면을 최적화하는 현명하고 흔한 방법은 장면 전체의 모델 간에 텍스처와 머티리얼을 공유하는 것입니다. 이렇게 하면 드로우 콜이 크게 줄어들고 Decentraland 장면이 훨씬 더 부드럽게 실행됩니다.

다음 도구는 [**glTF 파이프라인**](https://github.com/AnalyticalGraphicsInc/gltf-pipeline)**,** 를 기반으로 하며 3D 모델을 더 가볍게 만들고 장면의 플레이어들이 더 빠르게 다운로드할 수 있게 해주는 몇 가지 최적화를 제공합니다.

**Mac:** [MAC GLB 추출기](https://github.com/decentraland/docs-creator/blob/main/images/3d-models-and-animations/glb-extractor/texture_extractor.sh)

**PC:** [PC GLB 추출기](https://github.com/decentraland/docs-creator/blob/main/images/3d-models-and-animations/glb-extractor/glb_texture_extract.bat)

.gltf 형식을 바이너리인 .glb로 변환하여 훨씬 적은 용량을 차지합니다. 또한 텍스처 파일을 3D 모델 외부에 배치하므로 여러 모델에 같은 텍스처를 사용할 수 있습니다.

> 📔 참고: .glb 형식은 기본적으로 항상 텍스처가 파일에 내장되어 있습니다. 엔진은 두 개의 내장 텍스처를 같은 것으로 인식할 수 없으며, 동일한 해시를 공유하는 외부 파일이어야 합니다.

### GLB 텍스처 추출기 사용 방법

이 예시 장면에서는 Blender에서 만든 간단한 SF 장면이 있습니다.

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-d575f4ffe6da295ae53b389c1750eb0840abd219%2F01-scene-base.png?alt=media)

이 장면에는 정적 모델을 위한 기본 환경이 포함되어 있지만, 나중에 코드로 이동시켜 플레이어와 상호작용할 수 있도록 별도로 내보내고 싶은 두 개의 다른 에셋, 즉 드로이드와 우주선도 있습니다. 이 경우 4개의 텍스처를 사용했습니다(바닥용 1개, 대부분의 에셋용 아틀라스 컬러 맵 1개, 발광 맵 1개, 패널용 UI SF 텍스처 1개).

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-b5ae85bb52a317d7d3b912719f7af6fa68b486b4%2F02-model-01.png?alt=media) ![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-66e7694ca025484b771513bd34eb2aa2a14e170e%2F03-model-02.png?alt=media)

이 모든 에셋을 models 폴더로 내보내면 환경 정적 장면, 우주선, 드로이드의 3개 모델이 있습니다.

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-69ff6c40205c8fd498908024c05d3264ce0de238%2F04-models-folder.png?alt=media)

하지만 문제가 있습니다. .glb 파일에는 텍스처가 내장되어 있으므로, 텍스처를 재사용하는 서로 다른 에셋을 내보내면 폴더에 새 에셋이 추가될 때마다 텍스처가 중복됩니다. 중복 텍스처를 피하려면 이 유용한 도구를 사용할 수 있습니다.

{% hint style="warning" %}
⚠️ 중요 참고: 도구를 사용하기 전에, 혹시 모를 문제에 대비해 모델을 백업하세요!!!
{% endhint %}

**Mac에서**

모든 에셋을 models 폴더로 내보낸 후 스크립트 파일을 그 폴더로 드래그하면 됩니다.

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-23acc844e0c391e705ae38b4d8faf68f098ed761%2F05-texture-extractor.png?alt=media)

1 - 폴더를 터미널로 드래그하여 터미널에서 폴더를 엽니다.

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-79d1c0f266230d5034fd344431403779bb20d08e%2F06-move-to-terminal.png?alt=media)

2 - texture-extractor.sh를 터미널로 드래그합니다.

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-f7e370bb546859650efe900f42039f1a90fc14df%2F06-terminal.png?alt=media)

3 - 명령을 실행합니다. 모든 에셋을 처리하는 데 몇 초가 걸릴 수 있습니다. 그런 다음 다음과 같은 결과를 볼 수 있습니다:

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-599d9f4378fa9d37c84a049eaefc0862ccfca295%2F07-run-terminal.png?alt=media)

4 - models 폴더로 가면 "out"이라는 새 폴더가 생기고, 추출된 텍스처가 포함된 새 에셋을 볼 수 있습니다.

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-f1d505887c8a5d4a2aa6773e0da76ca852bffa6a%2F08-out-folder.png?alt=media)

5 - 모든 에셋을 새 것으로 교체하세요! 완료되면 "texture-extractor.sh"와 비어 있는 "out" 폴더도 삭제하세요.

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-df02204ffa5207d1385b235de809f66f8ef9129e%2F09-replace-assets.png?alt=media)

**Windows에서**

모든 에셋을 models 폴더로 내보낸 후 스크립트 파일을 그 안으로 드래그하면 됩니다.

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-4990daa279b27670ced263e8f16487a978da7229%2F10-windows-01.png?alt=media)

1 - 파일을 추출하려면 glb\_texture\_extract.bat를 더블 클릭하세요. Windows가 인식할 수 없는 앱이라고 경고하면 다음으로 이동하세요: **자세한 정보** 그리고 나서 **그래도 실행**.

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-550a0241a9125dccf5192e0813dbb64fcd94a0ba%2F11-windows-02.png?alt=media) ![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-c069eba1ab8124f6c0ec5a695000fbb1621535de%2F12-windows-03.png?alt=media)

2 - 스크립트가 out이라는 폴더를 생성하며, 그 안에서 추출된 텍스처가 포함된 모든 새 .glb 파일을 찾을 수 있습니다.

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-853904a4678b2554c8c3e612d6cea23db7b42735%2F13-windows-03.png?alt=media)

5 - 모든 에셋을 새 것으로 교체하세요. 완료되면 "texture-extractor.bat" 스크립트와 비어 있는 "out" 폴더를 삭제하세요.

모든 단계를 따르면 이제 장면이 훨씬 더 빨라지고 에셋이 같은 텍스처를 공유하게 됩니다! 여러 에셋과 큰 장면을 다룰 때는 개선 효과가 꽤 뚜렷합니다. 이 도구를 사용하면 상당한 양의 메가바이트 정보를 절약할 수 있습니다!

{% hint style="warning" %}
⚠️ 이 단계를 완료한 후에는 모든 텍스처가 가이드라인을 따르는지 확인하는 것이 매우 중요합니다. 텍스처가 가이드라인을 따르지 않거나 너무 무거우면, 배포 전에 더 가볍게 최적화하세요. 성능이 중요한 장면에 권장되는 텍스처 크기는 1024x1024입니다. 또한 해상도도 확인하세요. 72 DPI를 초과하는 이미지는 성능에 영향을 주며 이미지가 더 좋아 보이게 만들지도 않습니다.
{% endhint %}

## 텍스처 아틀라스/트림 시트

텍스처 아틀라스는 여러 개의 작은 이미지를 하나로 묶어 담은 단일 이미지 파일입니다. 메시에 하나의 텍스처를 두는 대신 여러 메시가 더 큰 텍스처를 공유합니다.

에셋을 만들기 전에 텍스처 아틀라스를 만들 수 있으며, 이는 에셋이 텍스처 아틀라스에 맞춰 UV 언래핑된다는 뜻입니다. 텍스처를 만들 때 어느 정도 초기 계획이 필요합니다.

또는 에셋이 완성된 후 페인팅 소프트웨어에서 텍스처를 병합하여 텍스처 아틀라스를 만들 수도 있습니다. 하지만 이 경우 UV 아일랜드도 텍스처에 맞게 재배치해야 합니다.

아래 이미지는 하나의 텍스처 세트를 사용하는 여러 3D 오브젝트를 보여줍니다:

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-9f156c42d55defe8f368ba8b5989ce694868fae9%2F37-atlas-texture.png?alt=media) ![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-9d0189a956bccdbf9a4218e4f09910501899cd47%2F38-uv-atlas.png?alt=media)

아틀라스를 만드는 또 다른 방법은 트림 시트를 사용하는 것입니다. 트림 시트는 대형 스튜디오와 게임 업계에서 시각적 일관성과 효율적인 아트 파이프라인을 보장하기 위해 사용하는 3D 모델링 및 게임 개발의 일반적인 기법입니다. 트림 시트는 모델의 서로 다른 부분에 적용할 수 있는 여러 작은 디테일이나 요소를 포함한 하나의 이미지 또는 텍스처를 사용하는 방식입니다. 이 기법은 큰 장면을 만들 때 매우 유용하며, 아트 파이프라인의 첫 단계에서 고려되어야 합니다.

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-c54001f41883c274490680f8eb40bac5272efb69%2F39-trim-sheets.png?alt=media)

*디퓨즈 텍스처, 노멀, 발광을 사용하는 트림 시트 콜라주 예시입니다.*

훌륭한 [튜토리얼](https://www.artstation.com/blogs/jennifermcgarry/yd4Q/jenns-guide-to-trim-sheets) 크기가 [Jennifer McGarry](https://www.artstation.com/jennifermcgarry/blog) 가 Blender를 사용한 트림 시트 활용법을 설명합니다!

## 텍스처 명명

**텍스처를 올바르게 이름 짓는 것은 매우 중요합니다.** 텍스처를 올바르게 이름 짓는 것은 다음과 같은 이점이 있습니다:

* 아트 파이프라인을 더 효율적이고 유연하며 체계적으로 만들고, 필요한 경우 대상 지정과 수정도 쉽게 해줍니다.
* texture extractor나 다른 도구를 사용할 때 같은 이름의 텍스처가 겹치는 것을 방지합니다.
* Asset Bundle을 사용할 때 텍스처 중복 문제를 방지합니다.
* 장면을 분석할 때 문제 지점을 더 효율적으로 파악할 수 있습니다.

**텍스처를 올바르게 이름 짓는 방법:**

* **에셋 이름** 텍스처가 무엇인지 명확하게 나타내야 합니다.
* 텍스처 이름은 다음 접두사로 시작해야 합니다 `T_`.
* 텍스처 이름은 텍스처 유형을 정의하는 다음 접미사로 끝나야 합니다:
  * `_D` - **디퓨즈/컬러 맵**
  * `_A` - **알파 텍스처**
  * `_MT` - **금속성**
  * `_R` - **거칠기**
  * `_N` **- 노멀 맵**
  * `_E` - **발광**

예: 벽용 벽돌 텍스처의 디퓨즈 맵이라면 이름은 `T_BrickWall_D` 가 적절할 수 있습니다. 같은 에셋의 노멀 맵이라면 이름은 `T_BrickWall_N`

**예:**

* 🟢 **권장** 텍스처 이름을 다음으로 시작 `T_Parquet_D`, `T_Floor_R`, `T_Pipes_MT`,
* 🔴 **피해야 할 것은** 텍스처 이름을 다음으로 시작 `Image_`, `sprite_`,`Untitled`

## 선택 도구

에셋 제작 시 작업을 더 빠르고 효율적으로 해주는 애드온과 외부 도구가 많이 있으며, 그중 일부는 무료이고 일부는 유료입니다. 몇 가지를 소개하면:

### UV 도구

* **UV Packer (무료)**:<https://www.uv-packer.com/blender/>
* **Zen UV:** <https://blendermarket.com/products/zen-uv>
* **Uvpackmaster 3:** <https://blendermarket.com/products/uvpackmaster>

### 이미지 압축 도구

텍스처를 더 가볍게 만들기 위해 사용할 수 있는 온라인 이미지 압축 도구가 여러 개 있습니다. 몇 가지를 소개하면:

* **CompressPNG:** <https://compresspng.com/>
* **TinyPNG:** <https://tinypng.com/>
* **FreeConvert:** <https://www.freeconvert.com/>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.decentraland.org/creator/content-creator-ko/3d/textures.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
