AI LabsNEXUS AI Labs
준비 중입니다
블로그 목록으로
Engineering12분 읽기 

Text to 3D — 문장 하나가 게임에 쓰는 3D가 되기까지

메시 라이브러리도, 다운로드도, 수작업 모델링도 없이 — 설명 한 줄이 브라우저에서 약 1분 만에 조명·텍스처·연출까지 끝난 3D 에셋이 됩니다. LLM이 spec을 쓰고 VLM이 채점하는 제로 에셋 프로시저럴 엔진의 구조와 전수 실측 수치를 공개합니다.

작성NEXUS AI Labs

Text to 3D — 문장 하나가 게임에 쓰는 3D가 되기까지 대표 이미지

게임 프로토타입을 만들 때 가장 먼저 부딪히는 벽은 코드가 아니라 에셋입니다. 가로등 하나, 벤치 하나가 필요할 때마다 에셋 스토어를 뒤지고, 라이선스를 확인하고, 다운로드한 메시의 스케일과 머티리얼을 맞추고, 폴리곤을 정리합니다. '문장으로 설명하면 3D가 나오면 좋겠다'는 생각은 누구나 합니다. 문제는 기존 Text-to-3D가 게임에 쓸 수 있는 3D를 주지 못했다는 것입니다.

디퓨전 기반 3D 생성 모델들은 인상적인 데모를 보여주지만, 결과물은 대부분 지저분한 토폴로지의 스캔 덩어리에 가깝습니다. 생성에 수 분에서 수십 분이 걸리고, 텍스처는 구워져 있어 수정이 어렵고, 조명은 아예 없습니다. 게임 엔진에 넣으려면 결국 리토폴로지와 재질 재작업이 필요합니다. 우리는 다른 접근을 택했습니다 — 메시를 생성하지 않고, spec을 생성합니다.

Text to 3D로 생성한 거리 씬 — 실시간 렌더링
프롬프트 한 줄로 생성된 거리 씬. 지오메트리·텍스처·조명·카메라 구도까지 전부 파라미터에서 만들어진다.

메시를 생성하지 않는다 — spec을 생성한다

Text to 3D의 LLM은 버텍스를 만지지 않습니다. 대신 압축 JSON DSL로 파라메트릭 spec을 작성합니다. 어떤 프리미티브를 어떻게 조합할지, 재질의 러프니스와 메탈릭 값, 화병 같은 회전체를 위한 lathe 프로파일, 건물을 층·창문 패턴으로 기술하는 건물 매크로, 그리고 씬을 어떤 각도에서 보여줄지의 카메라 구도까지 — 전부 선언적 데이터입니다. 실제 지오메트리와 이음새 없는 절차적 텍스처는 Three.js 빌더가 spec을 읽어 조립합니다.

스스로 교정하는 5단계 파이프라인

프롬프트 입력부터 완성된 에셋까지, 파이프라인은 다섯 단계를 지납니다. 각 단계는 실패를 다음 단계로 넘기지 않고 그 자리에서 교정합니다.

  1. 프롬프트 — '이끼 낀 석등이 있는 일본식 정원' 같은 자연어 한 줄.
  2. LLM 파라메트릭 spec — 프리미티브 조합, 재질, lathe 프로파일, 건물 매크로, 조명, 카메라 구도를 담은 압축 JSON DSL 생성.
  3. 검증·자동수리 — 전체 spec을 스키마로 검증. 위반 항목은 모델에 돌려보내 수리된 spec을 다시 받는다.
  4. 프로시저럴 빌드 — Three.js가 spec을 읽어 지오메트리를 조립하고, PBR 재질과 이음새 없는 절차적 텍스처를 입힌다.
  5. VLM 고도화 — VLM 아트디렉터가 렌더 결과를 채점하고 spec을 다시 써서 품질을 끌어올린다.
spec 개념 예시 — 에셋 하나가 평균 4.7KB JSONjson
{
  "name": "moss_stone_lantern",
  "parts": [
    { "kind": "lathe", "profile": [[0.4,0],[0.5,0.15],[0.3,0.9],[0.55,1.1]],
      "mat": { "base": "#8a8f84", "rough": 0.92, "moss": 0.35 } },
    { "kind": "box", "size": [0.7,0.25,0.7], "pos": [0,1.2,0],
      "mat": { "base": "#6f7468", "rough": 0.88 } }
  ],
  "lights": [{ "type": "point", "pos": [0,0.95,0], "color": "#ffb45e", "intensity": 2.1 }],
  "camera": { "orbit": [32,-14], "fov": 35, "framing": "hero" }
}

이 구조의 부수 효과가 강력합니다. 에셋이 곧 데이터이기 때문에 — 평균 4.7KB의 JSON — diff가 가능하고, 버전 관리가 가능하고, 갤러리에서 남의 에셋을 복사해 spec을 고쳐 리믹스할 수 있습니다. 100MB짜리 바이너리 메시로는 불가능한 워크플로입니다.

Text to 3D 라이브 갤러리 — 생성된 에셋 공유
라이브 갤러리. 생성한 모든 에셋이 자동 공유되고, spec JSON은 복사 즉시 재사용·리믹스할 수 있다.

VLM 아트디렉터 — 렌더를 채점하고 spec을 다시 쓴다

스키마 검증은 spec이 유효한지만 보장합니다. 보기 좋은지는 별개의 문제입니다. 그래서 파이프라인의 마지막에 VLM 아트디렉터가 있습니다. 빌드된 씬의 렌더 이미지를 VLM에게 보여주고 구도·재질·조명·실루엣을 채점하게 한 뒤, 낮은 항목에 대한 수정 지시를 spec 재작성으로 반영합니다. 테스트 씬 기준으로 매 패스마다 score 4에서 5로의 향상을 확인했습니다. 사람이 '조금 더 어둡게, 카메라를 왼쪽으로' 라고 말하는 역할을 VLM이 대신하는 셈입니다.

숫자로 말하기 — 전부 실측값이다

생성 AI 제품의 수치는 보통 최상 사례입니다. 아래 수치는 다릅니다 — 라이브러리의 46개 에셋을 전수 측정했고, 렌더링 수치는 포스트 프로세싱 스택(GTAO·Bloom·비네트 그레인 그레이드)을 전부 켠 상태에서 측정했습니다.

56초
오브젝트 평균 생성 시간 (46개 전수 실측)
102초
씬 평균 생성 시간
60 FPS
117파트 최대 씬 — 프레임당 256,683 삼각형
145ms
최대 씬 GLB 익스포트 (3.2MB)
Text to 3D로 생성한 오피스 씬 — 시네마틱 렌더링
기본이 시네마틱 — GTAO·Bloom·그레인 그레이드가 켜진 채 브라우저에서 60 FPS로 돌아간다.

게임 엔진으로 — 클릭 한 번의 GLB

브라우저 안에서만 예쁜 3D는 반쪽짜리입니다. Text to 3D는 클릭 한 번으로 GLB(binary glTF)를 내보냅니다. 절차적 텍스처는 PNG로 임베드되고, 조명은 KHR_lights_punctual 확장으로 광원까지 함께 담깁니다. 117파트 최대 씬 기준 145ms에 3.2MB — Blender, Unity, Unreal, three.js 어디서든 바로 열립니다. '생성은 됐는데 가져올 수가 없다'는 Text-to-3D의 고질적 문제를 포맷 표준으로 해결했습니다.

한계와 앞으로

솔직하게 적습니다. 파라메트릭 프리미티브 조합은 건축물·소품·가구 같은 인공물에 강하지만, 캐릭터나 동물 같은 유기적 형상은 아직 어렵습니다. 절차적 텍스처는 이음새가 없는 대신 사진 수준의 디테일에는 못 미칩니다. 그리고 spec이 커질수록 LLM의 공간 추론이 흔들려, 초대형 씬에서는 파트 배치가 어색해지는 경우가 있습니다.

다음 목표는 두 가지입니다. 첫째, 파트 계층 애니메이션 — spec에 리깅 정보를 추가해 문이 열리고 바람개비가 도는 씬. 둘째, 멀티 에셋 컴포지션 — 갤러리의 기존 에셋들을 재료로 더 큰 씬을 조립하는 LLM 플래너.

3D의 병목은 모델링 기술이 아니라 시작하는 데 드는 시간입니다. Text to 3D의 목표는 그 시간을 문장 하나로 줄이는 것입니다.

NEXUS AI Labs

설치도 다운로드도 없습니다. 브라우저에서 프롬프트 한 줄이면 약 1분 뒤 조명까지 담긴 GLB가 손에 들어옵니다. 갤러리에서 다른 사람들이 만든 에셋의 spec을 열어보는 것부터 시작해보세요.

더 읽어보기