3D 에셋 파이프라인: 텍스트 프롬프트에서 게임용 GLB까지 (단계별)
나만의 3D 에셋 파이프라인 만들기
AI로 만든 3D 모델이 거치는 전체 경로: 프롬프트, 메시, 리토폴로지, UV, 텍스처, 압축 GLB — 그리고 잘못된 에셋이 게임에 들어오는 것을 막는 점검 지점.
3D 에셋 파이프라인은 모델이 글로 쓴 설명에서 게임이 불러올 수 있는 파일로 이동하는 순서 있는 경로입니다. 설명하고, 메시를 생성하고, 리토폴로지하고, UV를 펼쳐 텍스처를 입히고, 점검하고, 압축된 GLB로 내보냅니다. Neta Studio에서는 그 경로가 3D 게임 빌더가 브라우저의 Three.js에 넘기는 GLB로 끝나므로, 모든 단계는 데스크톱 뷰포트에서 그럴듯해 보이는 것이 아니라 브라우저가 견딜 수 있는 결과물을 만들어야 합니다.
대부분의 파이프라인은 요란하게 실패하지 않습니다. 조용히 실패합니다. 편집기에서 올바르게 보이던 모델이 레벨에 들어오면 마흔 배나 커지고, 몸통에서는 선명하던 텍스처가 부츠에서는 뭉개집니다. UV 아일랜드가 서로 다른 밀도로 패킹되었기 때문입니다. 아래에 설명하는 점검 지점은 값싼 것들입니다. 와이어프레임 확인, 비다양체 선택, 경계 상자 측정. 각각 1분이면 끝나고, 에셋이 장면 안에 들어간 뒤라면 오후 한나절을 잡아먹는 결함 유형을 하나씩 잡아냅니다.
빠른 답변: 3D 에셋 파이프라인이란 무엇인가
3D 에셋 파이프라인은 설명을 게임 엔진이나 브라우저가 불러올 수 있는 파일로 바꾸는 순서 있는 단계 집합입니다. 여섯 단계가 있습니다. 대상을 글로 설명하고, 메시를 생성하고, 토폴로지가 쓸 수 없을 때 리토폴로지하고, UV를 펼쳐 표면에 텍스처를 입히고, 와이어프레임과 노멀과 머티리얼 슬롯을 점검한 뒤, 압축된 GLB로 내보냅니다. 텍스처가 있는 대상이라면 이 목록에서 선택 사항은 없으며, 각 단계에는 다음으로 넘어가기 전에 확인할 수 있는 관문이 하나씩 있습니다.
순서가 중요한 이유는 단계들이 체크리스트가 아니라 의존 관계이기 때문입니다. 리토폴로지는 정점 인덱스를 다시 쓰므로 그 전에 만든 UV 맵이나 베이크한 텍스처는 버려집니다. 텍스처는 UV를 기준으로 제작되므로 텍스처링 후에 UV를 펼치면 텍스처를 다시 해야 합니다. 압축은 손실 압축이며 마지막에 실행되므로, 압축이 남기는 아티팩트는 세 단계 전에 잡았어야 할 결함과 구별되지 않습니다. 단계를 순서 없이 실행하면 시간만 낭비하는 것이 아니라, 점검을 통과하고도 장면에서 깨지는 파일이 나옵니다.
각 단계를 계약을 가진 생산자로 생각하세요. 2단계는 3단계에 미터 단위의 단일 메시와 알려진 삼각형 수를 넘겨야 합니다. 4단계는 5단계에 아일랜드가 하나의 텍스처 세트를 공유하는 모델을 넘겨야 합니다. 6단계는 런타임에 크기 예산 이내의 파일과, 렌더러가 기대하는 것에 일대일로 대응하는 머티리얼을 넘겨야 합니다. 나중에 에셋이 이상하게 동작할 때, 한 번도 문서화되지 않은 계약이 보통 깨진 계약입니다.
여섯 단계 한눈에 보기
각 단계에는 산출물 하나와 특징적인 실패 하나가 있습니다. 쓸모 있는 것은 실패 열입니다. 에셋을 다음으로 넘기기 전에 각 단계 끝의 관문이 무엇을 확인해야 하는지 알려 주기 때문입니다.
| 단계 | 산출물 | 가장 흔한 실패 |
|---|---|---|
| 1. 설명 | 실루엣, 재질, 크기, 자세, 스타일을 고정하는 프롬프트 | 모호한 프롬프트는 임의 크기의 뒤엉킨 다중 부품 객체를 반환 |
| 2. 메시 생성 | 보통 수만 개의 삼각형으로 이루어진 고밀도 삼각 메시 | 열린 껍질, 내부 면, 측면에서 쓸 만한 실루엣 없음 |
| 3. 리토폴로지 | 선택한 삼각형 예산에 맞춘 깔끔한 메시 | UV를 펼친 뒤 리토폴로지를 수행해 UV를 버림 |
| 4. UV 펼치기와 텍스처 | 0–1 범위에 패킹된 UV 아일랜드와 알베도/거칠기 세트 | 고르지 않은 텍셀 밀도, 눈에 보이는 곡면을 가로지르는 이음새 |
| 5. 점검 | 확인된 노멀, 머티리얼 슬롯, 와이어프레임 | 내보낸 뒤에야 발견되는 뒤집힌 노멀과 빈 머티리얼 슬롯 |
| 6. GLB 내보내기 | 텍스처가 포함된 압축 .glb | 스키닝 메시에 기하 압축을 적용해 가중치가 사라짐 |
1단계: 대상 설명하기
생성 프롬프트는 소원이 아니라 사양서입니다. 다섯 항목이 일을 합니다. 실루엣, 재질, 크기, 자세, 스타일. 실루엣을 나타내는 단어는 메시가 어떤 윤곽을 중심으로 만들어질지 결정합니다. 재질을 나타내는 단어는 알베도와 거칠기를 결정합니다. 크기를 나타내는 단어는 비례를 고정합니다. '큰'이 아니라 '높이 1.8미터'라고 쓰세요. 생성기는 그것이 탁자 장식품인지 건물인지 알 다른 방법이 없습니다. 자세를 나타내는 단어는 리깅할 대상에 중요합니다. 중립적인 A 포즈나 곧은 자세는 골격을 맞출 수 있는 메시를 만들지만, 동작 포즈는 팔다리를 다시 리깅하기 어려운 형태로 고정합니다.
매번 추가할 만한 두 가지 조항이 더 있습니다. 부품 수를 밝히세요. 단일 객체인지, 몸체와 받침대가 분리되는지. 뒤엉킨 형상은 생성된 에셋을 애니메이션하거나 부품별 머티리얼을 주지 못하는 가장 흔한 이유입니다. 그리고 빼야 할 것을 밝히세요. 받침대 없음, 배경 없음, 지면 없음. 생성기는 빈 공간을 그럴듯해 보이는 형상으로 채우며, 요청하지 않은 모든 추가 표면은 나중에 지워야 할 표면입니다.
- 약한 프롬프트"돌 등불" — 크기도, 재질도, 자세도, 부품 수도 없습니다. 생성기가 당신 대신 스타일과 크기를 고르고, 당신은 불을 담는 칸에 빛나는 수정이 들어 있고 바닥에 받침대가 붙은 높이 9미터의 판타지 등불을 받게 되어 제거하는 데 20분을 쓰게 됩니다.
- 강한 프롬프트"단일 돌 등불, 높이 1.8미터, 육각 지붕, 이음새에 지의류가 낀 풍화된 회색 화강암, 곧게 선 수직 자세, 불을 담는 칸은 비어 있음, 절제된 사실적 스타일, 객체 하나, 받침대 없음, 원점에 중심 정렬" — 모든 조항이 생성기에게서 빼앗은 결정 하나에 대응합니다. 크기는 고정되고, 재질은 고정되고, 자세는 중립이며, 부품 수는 하나입니다.
2단계: 메시 생성하기
메시 생성은 텍스트에서 메시로, 또는 이미지에서 메시로 이루어집니다. 이미지 입력은 이미 원하는 비례를 담은 참조를 제공할 수 있어 실루엣을 더 촘촘하게 통제할 수 있습니다. 텍스트 입력은 형태가 관습적인 대상에 더 빠릅니다. 어느 쪽이든 돌아오는 것은 출하용 에셋이 아니라 원재료입니다. 생성된 메시는 보통 필요한 것보다 훨씬 밀도가 높고, 삼각형 흐름이 불규칙하며, 표면을 UV용으로 어떻게 자를지 전혀 고려하지 않았습니다.
무엇을 하기 전에 세 가지를 확인하세요. 메시가 닫혀 있는지, 크기가 합리적인지, 삼각형 수가 만들고 있는 장면에서 감당할 수 있는 수준인지. 세 번째 답이 '아니오'이고 대상이 절대 변형되지 않는다면, 실루엣을 유지한 채 콜랩스 모드로 디시메이트 모디파이어를 적용하는 것이 정당한 답입니다. 리토폴로지의 대체물은 아니지만, 정적인 소품에는 종종 올바른 맞바꿈입니다.
01
수밀 점검: Blender에서 편집 모드 → 특성으로 모두 선택 → 비다양체. 기대값은 0입니다. 지붕 아래나 팔다리를 따라 난 구멍은 생성기가 열린 껍질을 만들었다는 뜻입니다. 그림자가 잘못 지고, 불리언이나 고체화, 3D 프린팅이 불가능합니다.
02
중복 및 내부 형상: 0.0001미터에서 거리 기준 병합을 한 뒤 삼각형 수를 다시 읽으세요. 내부 면은 생성 후에도 놀랄 만큼 자주 남아 일반 렌더에서 어두운 얼룩으로 나타납니다.
03
크기: 뷰포트가 아니라 N 패널에서 경계 상자를 읽으세요. 0.4미터여야 할 소품이 4미터로 측정되면 배치하는 사람이 축소할 것이고, 충돌 부피도 같은 배수만큼 틀어집니다.
04
삼각형 예산: 소품은 대략 500–3,000개, 주인공 객체는 5,000–15,000개, 배경 장식물은 500개 미만. 20만 삼각형의 원본 메시는 생성기에서는 정상이지만 출하용 에셋에서는 정상이 아닙니다.
3단계: 메시가 엉성할 때 리토폴로지하기
깔끔한 사각면 토폴로지는 표면이 내보낸 뒤에도 일을 해야 할 때 중요합니다. 변형되는 모든 것, 곧 캐릭터, 천, 깃발, 잎사귀가 그렇습니다. 에지 루프가 팔꿈치가 구부러지는지 무너지는지를 결정하기 때문입니다. 세분화할 계획일 때, 고밀도 디테일을 노멀 맵에 베이크할 계획일 때(고르게 분포한 사각면과 안정적인 UV 배치가 필요합니다), 나중에 다른 사람이 실루엣을 편집할 때, 같은 객체의 예측 가능한 저밀도 버전이 필요할 때도 중요합니다.
멀리서 보이는 정적인 소품, 실루엣이 이미 올바른 하드서피스 객체, 결국 약 1,000개 삼각형 미만이 될 대상에는 중요하지 않습니다. 그런 경우 올바른 노멀과 깔끔한 윤곽을 가진 감소시킨 메시가 정답이며, 사각면 흐름에 한 시간을 쓰는 것은 렌더에서 결코 되찾지 못할 한 시간입니다.
순서는 고정되어 있습니다. 먼저 리메시하거나 감소시킨 뒤 UV를 펼칩니다. Blender의 UV 펼치기 안내는 이음새를 자르기 시작할 때 메시가 최종본이라고 가정하며, 그 가정이 핵심입니다. 리토폴로지는 정점 인덱스와 에지 흐름을 바꾸므로 그 전에 만든 UV 맵은 의미 있는 형태로 더 이상 존재하지 않고, 그것을 기준으로 칠한 모든 텍스처는 어긋납니다. 리메시를 하고 적용한 뒤 UV 펼치기 문서를 따르세요. 1미터 객체에 0.01–0.02미터 복셀 리메시를 적용하고 목표 면 수까지 쿼드리플로를 실행하는 것이 표준 경로이고, 디시메이트 콜랩스는 정적 형상의 빠른 경로입니다.
4단계: UV 펼치기와 텍스처링
UV 펼치기는 표면을 아일랜드로 자르고, 각각을 가능한 한 적은 왜곡으로 평면화한 뒤 0–1 UV 사각형에 패킹합니다. 스마트 UV 프로젝트는 하드서피스 객체에 몇 초 만에 견딜 만한 기준선을 줍니다. 캐릭터와 눈에 보이는 곡면이 있는 대상은 손으로 이음새를 배치할 가치가 있습니다. 팔다리 안쪽을 따라, 등을 따라, 귀 뒤쪽으로 — 카메라가 정면에서 보게 될 형태의 한가운데를 가로지르지는 않도록 하세요.
텍셀 밀도는 모델이 일관되게 보이는지를 결정하는 숫자입니다. 세계 단위당 텍스처 해상도입니다. 1024×1024 맵을 1제곱미터에 펼치면 대략 제곱미터당 1,024픽셀입니다. 캐릭터의 머리가 제곱미터당 1,024픽셀을 받고 부츠가 300픽셀을 받으면, 같은 프레임에서 부츠가 눈에 띄게 흐릿해지며 아무리 선명하게 해도 고쳐지지 않습니다. 밀도를 한 번 정한 뒤 모든 아일랜드를 그에 맞게 조정하고, 아일랜드 간 차이를 대략 10–20% 이내로 유지하세요.
패킹에는 효율만큼 여백이 필요합니다. 1024에서는 4픽셀, 2048에서는 8픽셀의 패딩을 남겨 밉매핑과 양선형 필터링이 이웃 아일랜드를 이음새로 끌어오지 않게 하세요. 웹 빌드에서는 UV를 0–1 안에 엄격히 유지하세요. 유디엠 타일은 일부 내보내기 도구가 지원하지만 대부분의 브라우저 로더는 지원하지 않으며, 두 번째 텍스처 세트는 두 번째 드로우 콜을 발생시킵니다. 모델의 일부가 절대 보이지 않는다면 면을 삭제하기보다 그 UV 공간을 보이는 부분에 쓰세요. 사라진 면은 나중에 진단하기가 밀도만 약간 낮은 숨은 영역보다 어렵습니다.
5단계: 내보내기 전 점검
점검은 각각 특정 결함 유형을 찾는 세 번의 별도 통과입니다. 이 순서로 하세요. 노멀 문제가 머티리얼 문제를 가리고, 머티리얼 문제가 와이어프레임 문제를 가리기 때문입니다.
와이어프레임
와이어프레임으로 전환해 삼각형 분포를 읽으세요. 찾아야 할 것은 길고 가는 조각입니다. 음영이 나쁘고 변형은 더 나쁩니다. 또 다각형도 찾으세요. glTF 내보내기가 스스로 삼각화하며 때로는 당신이 고르지 않은 방향으로 삼각화합니다. 밀도가 잘못된 곳에 몰려 있는 것도 찾으세요. 평평한 벽이 6,000개 삼각형을 지고 곡면 지붕이 200개를 지는 경우입니다. 밀도는 생성기가 면을 내보낸 순서가 아니라 곡률과 변형을 따라야 합니다.
노멀
바깥쪽으로 재계산한 뒤, 뒷면 컬링을 켜고 단일 방향광 아래에서 모델을 보세요. 뒤집힌 면은 검은 얼룩으로 보이거나 완전히 사라집니다. 경화 에지도 확인하세요. 자동 스무스 각도는 하드서피스 객체에 약 30도, 유기적 대상에 60도가 적합하며, 사용자 정의 분할 노멀은 형식 변환에 의해 조용히 망가지는 첫 번째 대상입니다. 내보낸 뒤에만 모델이 검게 보인다면 기하 압축 없이 다시 내보내 압축기 문제인지 메시 문제인지 확인하세요.
머티리얼 슬롯
슬롯 수를 세세요. 생성된 메시는 흔히 여섯 개로 도착하며, 그중 두 개는 비어 있고 두 개는 같은 이미지의 중복 사본을 가리킵니다. 머티리얼마다 드로우 콜이 하나이므로 대상이 허락하는 곳에서는 하나의 텍스처를 가진 하나의 머티리얼로 합치고, 빈 슬롯을 삭제하고, 알파 모드를 확인하세요. 혼합 모드는 정렬을 강제하고 채우기 비율을 소모하며, 마스크 모드는 더 저렴하고 잎사귀와 난간에는 보통 정답입니다. 양면 플래그도 확인하세요. 켜 두면 시각적 이득 없이 음영 처리 표면이 두 배가 됩니다.
6단계: 압축된 GLB 내보내기
브라우저 빌드라면 내보낸 뒤가 아니라 내보내기 전에 크기 예산을 정하세요. 소품 하나는 약 1메가바이트 미만, 주인공 캐릭터는 2–4메가바이트, 장면 전체는 중급 노트북에서 눈에 띄는 지연 없이 로드되기를 기대한다면 대략 15–20메가바이트 미만이어야 합니다. 그 예산을 텍스처가 지배합니다. 배경 객체는 512픽셀, 소품은 1024픽셀, 카메라가 가까이 가는 대상에만 2048픽셀을 쓰세요.
압축은 두 가지 다른 일을 하며, 둘을 분리해 생각할 가치가 있습니다. 기하 압축 — 드라코 또는 메시옵트 — 는 정점 위치와 노멀, UV를 고정된 비트 수로 양자화하고 버퍼를 재정렬합니다. 드라코는 보통 더 작은 파일을 만들고, 메시옵트는 더 빠르게 디코드하므로 모바일에서 중요합니다. 둘 다 정밀도 수준에서 손실이 있으며, 메시가 처음부터 깨끗하지 않았다면 스키닝 가중치와 모프 타깃을 교란할 수 있습니다. KTX2/베이시스를 통한 텍스처 압축은 원시 픽셀 값으로 디코드하지 않고 이미지를 그래픽 메모리에서 압축된 상태로 유지하지만, 로더가 지원해야 하는 확장이 필요합니다. glTF 핵심 사양은 PNG와 JPEG만 보장합니다.
완료라고 부르기 전에 항상 내보낸 파일을 GLB 뷰어에서 열거나 3D 게임 빌더로 가져오세요. 내보내기 도구는 노멀이 뒤집히고, 머티리얼 슬롯이 하나로 합쳐지고, 부모에 변환이 적용되고 메시에는 적용되지 않아 크기가 어긋나는 곳입니다. 에셋을 만든 도구에서 테스트하는 것은 아무것도 증명하지 못합니다. 실제로 출하할 로더에서 테스트하는 것이 모든 것을 증명합니다.
파이프라인이 끊어지는 곳과 알아채는 방법
아래 증상은 대부분의 문제를 포괄합니다. 여섯 가지 중 네 가지는 한 번의 점검 통과로 보이며, 내보낸 GLB를 제대로 테스트한다면 어느 것도 원본 파일을 열 필요가 없습니다.
3D 에셋 파이프라인 실패가 두 단계에 몰리는 이유
생성과 내보내기가 대부분의 결함을 만들며, 그 이유는 정반대입니다. 생성은 제약이 없습니다. 모델은 무엇이 되어야 하는지 들은 적이 없으므로 크기와 부품 수, 내부 형상을 지어냅니다. 내보내기는 파괴적입니다. 데이터가 처음으로 양자화되고 재정렬되어 하나의 파일로 패킹되는 지점이므로, 메시의 모든 잠재 문제가 한꺼번에 드러납니다. 3단계부터 5단계는 결함을 파괴적인 사슬 끝에서 여전히 선명하게 볼 수 있는 곳으로 옮기기 위해 존재합니다.
| 증상 | 원인 | 해결 |
|---|---|---|
| 장면에서 모델이 완전히 검게 보이거나 보이지 않음 | 뒤집히거나 누락된 정점 노멀, 때로는 내보낼 때 생김 | 내보내기 전에 바깥쪽으로 재계산하고, 압축 없이 다시 내보내 원인을 분리 |
| 레벨에서 객체가 너무 크거나 너무 작음 | 단위 불일치 — 센티미터로 제작하고 미터를 기대하거나 스케일을 적용하지 않음 | 경계 상자를 측정하고 스케일을 적용하며 내보내기 전에 장면 단위를 미터로 설정 |
| 몸통은 선명한데 부츠는 흐림 | UV 아일랜드 간 텍셀 밀도 불균형 | 세계 공간 밀도 기준으로 다시 패킹하고 아일랜드 차이를 20% 이내로 |
| GLB가 수십 메가바이트이고 탭이 멈춤 | 압축되지 않은 형상과 4096픽셀 PNG 텍스처 | 1024/2048로 낮추고 드라코 또는 메시옵트를 적용하며 사용하지 않는 머티리얼과 숨은 면 제거 |
| 애니메이션할 때 팔꿈치에서 메시가 찢어짐 | 리깅 후에 리토폴로지를 하거나 이음새를 따라 정점이 용접되지 않음 | 리깅 전에 리토폴로지하고 거리 기준 병합 후 스킨 가중치 재확인 |
| UV 이음새를 따라 밝은 선이나 빛번짐 | 아일랜드 가장자리에 패딩이 없어 밉맵이 이웃 아일랜드를 샘플링 | 1024에서 4–8픽셀 여백을 두고 여백을 포함해 베이크하며 아일랜드를 0–1 안에 유지 |
그것이 속한 세계로 걸어 들어가기
스프라이트는 설 곳이 없는 캐릭터입니다. 마지막 단계는 다른 누구도 제공하지 않는 것입니다. 방금 만든 시트를 가져다 누군가 걸어 다닐 수 있는 세계에 넣으세요. 작은 섬, 행성, 비 내리는 거리 모퉁이. 이 사이트의 모든 세계는 하나의 글로 쓴 설명에서 만들어져 플레이할 수 있는 페이지로 게시되었습니다.
FAQ
3D 에셋 파이프라인이란 무엇인가? +
설명을 불러올 수 있는 파일로 바꾸는 순서 있는 단계 집합입니다. 설명하고, 메시를 생성하고, 리토폴로지하고, UV를 펼쳐 텍스처를 입히고, 점검하고, 압축된 GLB로 내보냅니다. 순서는 의존 관계로 고정됩니다. 리토폴로지는 UV를 파괴하고, 텍스처는 UV에 의존하며, 압축은 앞서 생긴 결함을 가립니다.
왜 FBX나 OBJ 대신 GLB인가? +
GLB는 glTF 사양으로 정의된 단일 이진 컨테이너입니다. 형상, 머티리얼, 텍스처, 스키닝이 한 파일에 담겨 Three.js와 대부분의 엔진이 변환기 없이 읽습니다. OBJ는 머티리얼이나 애니메이션 데이터를 담지 못하고, FBX는 독점 소프트웨어 개발 키트가 필요합니다. 브라우저 빌드에서 GLB는 사슬에 두 번째 도구를 요구하지 않는 유일한 형식입니다.
리토폴로지가 필요한가? +
표면이 내보낸 뒤에도 일을 해야 할 때만 필요합니다. 변형, 세분화, 고밀도 디테일을 노멀 맵으로 베이크하는 경우입니다. 실루엣이 올바른 정적 소품은 감소시킨 상태로 출하할 수 있습니다. 리토폴로지는 UV 펼치기 전에, 리깅 전에 하세요. 절대 그 뒤에 하지 마세요.
삼각형은 몇 개부터 너무 많은가? +
단일 숫자가 아니라 화면 점유율과 인스턴스 수로 예산을 잡으세요. 소품에는 대략 500–3,000삼각형, 주인공 객체에는 5,000–15,000개, 배경 장식물에는 500개 미만이 적합합니다. 화면의 작은 부분을 차지하며 쉰 번 나타나는 객체는 삼각형이 아니라 픽셀로 예산을 잡아야 합니다.
UV 펼치기를 건너뛸 수 있나? +
대상이 단색을 쓰거나 UV가 필요 없는 절차적 셰이더를 쓸 때만 가능합니다. 그리고 그 셰이더는 내보내기에서 살아남지 못합니다. glTF는 노드 그래프가 아니라 베이크된 물리 기반 텍스처를 담기 때문입니다. 칠하거나 베이크한 알베도가 있는 대상은 실제 UV 배치가 필요하므로 텍스처링 전에 UV를 펼치세요.
GLB는 어디서 테스트해야 하나? +
실제로 출하할 로더에서 테스트하세요. 3D 게임 빌더로 가져오거나 독립형 glTF 뷰어에서 열고 네 가지를 확인하세요. 알려진 기준에 대한 크기, 단일 조명 아래의 노멀, 머티리얼과 알파 모드가 살아남았는지, 캐시를 끈 상태의 네트워크상 파일 크기.
3D 게임 빌더로 돌아가기
완성된 3D 세계와 게임, 장면 31개가 한 페이지에 있습니다. 모두 플레이할 수 있습니다.