> 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\&token=20f8725b-9a28-48bc-a475-7cdda1e25af0)

필요하다면 쓸 만한 멋진 무료 팔레트 생성기를 소개합니다!

* **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\&token=1de2c1cf-69c8-458a-a716-0656cf499b3f)

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

## 러프니스 맵

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

![](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\&token=5422fad3-2349-49f0-abf7-d09504c86586) ![](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\&token=152f9d13-15d8-42ca-8f50-b49437632ae1)

## 투명 맵

### 알파 클립

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\&token=861a7b16-a83e-41a4-8c2f-61b82d87c938) ![](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\&token=1680a605-073b-4651-b07b-20a702469951)

![](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\&token=6e8da099-aa47-40b8-9296-4c06af958e1d)

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

### 알파 블렌드

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

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\&token=ed88d410-bd1c-45cb-b5f3-bfba018a7597)

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

{% 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\&token=3d5bfa7b-563c-4e09-b8b1-c2b23954368e)

*이 예시에서는 글로우 후처리를 사용하는 환경에서 발광 맵과 발광 세기를 함께 사용하여, 월드에서 발광이 어떻게 동작하는지 대략적으로 테스트하는 모습을 볼 수 있습니다.*

## 노멀 맵

노멀 맵은 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\&token=8c00afdd-46d9-4c70-9ce6-5c4cd899fa49) ![](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\&token=ed3eb3fa-ce46-43ed-aa87-fc7e2e865bf9)

에 재질에 노멀 맵을 추가하려면 *셰이더 에디터*, 다음을 연결해야 합니다 ***노멀 맵*** 텍스처와 *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\&token=cc411143-767c-4501-a131-54a1f30d7317)

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

## 텍스처 최적화

텍스처 최적화 과정은 Explorer에서 씬을 렌더링할 때 많은 이점을 가져다주며, 제작 과정에서 씬의 스타일을 일관되고 더 유연하게 유지하는 좋은 방법이기도 합니다. 이러한 이점에는 다음이 포함됩니다:

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

## glTF 모델 간 공유 텍스처

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

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

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

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

.gltf 형식을 이진 형식인 .glb로 변환해 훨씬 적은 공간을 차지합니다. 또한 텍스처 파일을 3D 모델 밖으로 분리해 여러 모델에서 같은 텍스처를 사용할 수 있게 합니다.

> 📔 참고: .glb 형식은 기본적으로 항상 텍스처가 파일에 포함됩니다. 엔진은 임베드된 두 텍스처를 같은 것으로 인식할 수 없으며, 동일한 해시를 공유하는 외부 파일이어야 합니다.

### GLB Texture Extractor 사용 방법

이 예시 씬에는 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\&token=b428ad11-ff8a-46f8-808c-2c32cb9b8fda)

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

![](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\&token=54b6e2c8-1bad-4726-93db-5f850ca9344f) ![](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\&token=e1bb9700-57df-4343-931b-d2ba207ae0c0)

모든 에셋을 모델 폴더로 내보낸 뒤에는 환경 정적 씬, 우주선, 드로이드의 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\&token=9ba0d479-6b3d-4242-a3f2-c8adda7312de)

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

{% hint style="warning" %}
⚠️ 중요 참고: 도구를 사용하기 전에 만일을 대비해 모델을 백업하세요. 무언가 잘못될 수도 있으니까요!!!
{% endhint %}

**Mac에서**

모든 에셋을 모델 폴더로 내보낸 다음 스크립트 파일을 그 안으로 드래그할 수 있습니다.

![](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\&token=5c617c68-663a-4b24-a820-9535adabee59)

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\&token=a8c0b06c-4c56-4e57-a2d0-879156fc8a29)

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\&token=b87e4e2a-1186-47c9-bcf5-74ddb3390066)

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\&token=3f68da6a-798a-4dc4-8f3e-8bb4cd3dc0d0)

4 - 모델 폴더로 이동하면 "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\&token=628443a9-08d0-4603-95bc-4c2665077589)

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\&token=3fa6dbd7-c26a-4de8-bf70-20318ad857e8)

**Windows에서**

모든 에셋을 모델 폴더로 내보낸 다음 스크립트 파일을 그 안으로 드래그할 수 있습니다.

![](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\&token=a15ce8b4-9318-43b6-9a20-ce2c90898b90)

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\&token=e1ccc106-c39d-4636-b460-335089f24bd0) ![](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\&token=e0c3e415-2e6e-414f-ac90-1b9aff209457)

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\&token=94f6e635-ec1a-47c6-a42d-36239b33dc35)

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\&token=45e355e0-613e-437b-aeea-b50112319d6d) ![](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\&token=a67045f4-cf2d-448b-a9a5-20269828b1d6)

아틀라스를 구현하는 또 다른 방법은 트림 시트를 사용하는 것입니다. 이는 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\&token=3c864897-4117-40e0-b9ed-eb6d660f6078)

*확산 텍스처, 노멀, 발광을 사용하는 트림 시트의 콜라주 예시.*

멋진 [튜토리얼](https://www.artstation.com/blogs/jennifermcgarry/yd4Q/jenns-guide-to-trim-sheets) 의 [Jennifer McGarry](https://www.artstation.com/jennifermcgarry/blog) Blender를 사용한 트림 시트의 활용법을 설명하는

## 텍스처 명명

**텍스처를 올바르게 이름 짓는 것은 매우 중요합니다.** 텍스처에 올바른 이름을 붙이면:

* 아트 파이프라인을 더 효율적이고 유연하며 체계적으로 만들고, 필요할 경우 쉽게 타깃 지정하고 수정할 수 있습니다.
* 텍스처 추출기나 다른 도구를 사용할 때 같은 이름의 텍스처가 겹치는 것을 방지합니다.
* 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`

## 선택 도구

에셋을 만들 때 작업을 쉽게 해 주는 많은 애드온과 외부 도구가 있으며, 파이프라인을 더 빠르고 효율적으로 만들어 줍니다. 그중 몇 가지를 들면:

### UVTools

* **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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
