3D 생성

3D는 2D에서 3D로 끌어올리는 레버리지(leverage)가 가장 강한 양식(modality)입니다. 2023년의 돌파구(breakthrough)는 3D 가우시안 스플래팅(3D Gaussian Splatting)이었습니다. 2024-2026년의 생성형(generative) 흐름은 그 위에 다시점 확산(multi-view diffusion)과 3D 재구성(3D reconstruction)을 얹어, 단일 프롬프트(prompt)나 사진 한 장에서 객체(object)와 장면(scene)을 만들어 내는 방향으로 이어집니다.

유형: Learn 언어: Python 선수 지식: Phase 4 (Vision), Phase 8 · 07 (Latent Diffusion) 예상 시간: 약 45분

문제

3D 콘텐츠(content)는 여러 이유로 까다롭습니다.

  • 표현 방식(Representation). 메쉬(mesh), 포인트 클라우드(point cloud), 복셀 그리드(voxel grid), 부호 거리장(signed distance field; SDF), 뉴럴 래디언스 필드(neural radiance field; NeRF), 3D 가우시안(3D Gaussian)이 있고 각각 장단점이 있습니다.
  • 데이터 부족(Data scarcity). ImageNet은 1,400만 장의 이미지를 보유하지만, 가장 큰 정제된 3D 데이터셋인 Objaverse-XL(2023)도 약 1,000만 개 객체에 그치며 대부분 품질이 낮습니다.
  • 메모리(Memory). 512³ 복셀 그리드는 1억 2,800만 복셀에 달하고, 쓸 만한 장면(scene) NeRF는 광선(ray)당 100만 개의 샘플이 필요합니다. 생성(generation)은 재구성(reconstruction)보다 훨씬 어렵습니다.
  • 감독 신호(Supervision). 2D 이미지의 경우 픽셀이 곧 감독 신호이지만, 3D는 보통 몇 개의 2D 시점(view)만으로 3D로 끌어올려야(lift) 합니다.

2026년의 스택(stack)은 이 두 문제를 분리합니다. 먼저 확산 모델(diffusion model)로 *2D 다시점 이미지(multi-view image)*를 생성하고, 그 다음 그 이미지들에 3D 표현(주로 가우시안 스플래팅)을 맞춰 넣습니다(fit).

사전 테스트

2문제 · 이 강의를 시작하기 전에 얼마나 알고 있는지 확인해보세요

1.2026년의 3D 생성 파이프라인이 3D를 직접 생성하는 대신, 다시점 확산(multi-view diffusion) 후 3D 재구성(reconstruction) 두 단계로 나누는 이유는 무엇인가요?

2.3D 가우시안 스플래팅(3DGS)이 NeRF 대비 실시간 렌더링에 적합한 이유는 무엇인가요?

0/2 답변 완료

개념

text / image -> 3D in 2026 prompt or image text, 1 photo, or 3-16 photos multi-view diffusion SV3D, CAT3D, MVDream, Zero123 8 consistent views 3D fit Gaussian splat or mesh extract 3D Gaussian Splatting (Kerbl 2023) ~1M Gaussians per scene, differentiable render, 100 fps direct text/image to mesh Meshy 4, Rodin Gen-1.5, Hunyuan3D 2.0 output: PBR mesh (albedo, roughness, metallic, normal) → direct import into Unity, Unreal, Blender 30s - 60s per asset on hosted endpoints 2022 → 2026 time per asset DreamFusion 2022: 1 hour; LRM 2023: 5s; TripoSR 2024: 1s; Meshy 4 2025: 30s with PBR NeRF → 3D-GS → direct generative mesh: quality up, time down 100x

표현 방식: 3D 가우시안 스플래팅(3D Gaussian Splatting, Kerbl et al., 2023)

장면을 약 100만 개의 3D 가우시안 구름(cloud)으로 표현합니다. 각 가우시안은 59개의 파라미터(parameter)를 가집니다. 위치(position) 3개, 공분산(covariance) 6개(또는 쿼터니언(quaternion) 4개 + 스케일(scale) 3개), 불투명도(opacity) 1개, 그리고 구면 조화(spherical-harmonics) 색상(차수 3에서 48개, 차수 0에서 3개)입니다.

렌더링(rendering)은 투영(projection)과 알파 합성(alpha-compositing)으로 이뤄집니다. 빠르고(4090 기준 1080p에서 약 100 fps), 미분 가능(differentiable)하며, 실제 사진에 대해 경사 하강(gradient descent)으로 적합(fit)시킬 수 있습니다. 소비자용 GPU에서 한 장면을 5-30분 만에 맞춰 넣을 수 있습니다.

그 위에 2023-2024년에 등장한 두 가지 혁신이 있습니다.

  • 생성형 가우시안 스플랫(Generative Gaussian splats). LGM, LRM, InstantMesh 같은 모델은 한 장 또는 몇 장의 이미지에서 가우시안 구름을 직접 예측합니다.
  • 4D 가우시안 스플래팅(4D Gaussian Splatting). 동적 장면(dynamic scene)을 다루기 위해 가우시안에 프레임별 오프셋(per-frame offset)을 부여합니다.

다시점 확산(Multi-view diffusion)

사전 학습된 이미지 확산 모델(pretrained image diffusion model)을 미세 조정(fine-tune)해서, 텍스트 프롬프트나 단일 이미지에서 동일 객체의 일관된(consistent) 다중 시점을 생성합니다. Zero123(Liu et al., 2023), MVDream(Shi et al., 2023), SV3D(Stability, 2024), CAT3D(Google, 2024) 등이 여기에 해당합니다. 보통 객체 주변의 4-16개 시점을 만들고, 이를 가우시안 스플래팅이나 NeRF로 3D에 끌어올립니다.

텍스트-투-3D 파이프라인(Text-to-3D pipelines)

모델입력출력시간
DreamFusion (2022)textSDS 기반 NeRF자산당 약 1시간
Magic3Dtextmesh + texture약 40분
Shap-E (OpenAI, 2023)textimplicit 3D약 1분
SJC / ProlificDreamertextNeRF / mesh약 30분
LRM (Meta, 2023)imagetriplane약 5초
InstantMesh (2024)imagemesh약 10초
SV3D (Stability, 2024)imagenovel views약 2분
CAT3D (Google, 2024)1-64 images3D NeRF약 1분
TripoSR (2024)imagemesh약 1초
Meshy 4 (2025)text + imagePBR mesh약 30초
Rodin Gen-1.5 (2025)text + imagePBR mesh약 60초
Tencent Hunyuan3D 2.0 (2025)imagemesh약 30초

2025-2026년의 방향은 게임 엔진(game engine)에 바로 투입할 수 있는 PBR 재질(material)을 갖춘 직접 텍스트-투-메쉬(direct text-to-mesh) 모델입니다. 다만 일반 객체에 대해서는 다시점 확산을 중간 단계로 두는 방식이 여전히 가장 좋은 성능을 보입니다.

NeRF(참고용)

뉴럴 래디언스 필드(Neural Radiance Field, Mildenhall et al., 2020)는 작은 다층 퍼셉트론(MLP)이 (x, y, z, view direction)을 입력받아 (color, density)를 출력하는 모델입니다. 광선(ray)을 따라 적분해서 렌더링합니다. 메쉬 기반 새 시점 합성(novel-view synthesis)보다 품질이 좋지만 렌더링 속도는 100-1,000배 더 느립니다. 실시간 용도에서는 대부분 가우시안 스플래팅으로 대체되었지만, 연구 분야에서는 여전히 주류입니다.

직접 만들기

code/main.py는 장난감(toy) 수준의 2D "가우시안 스플래팅" 적합(fit)을 구현합니다. 합성된 목표 이미지(부드러운 그라데이션)를 2D 가우시안 스플랫의 합으로 표현하고, 위치·색상·공분산을 경사 하강으로 최적화해 목표에 맞춥니다. 여기서 두 가지 핵심 연산을 직접 확인할 수 있습니다. 정방향 렌더링(forward render, 스플랫 + 알파 합성)과 경사 하강을 통한 적합입니다.

Step 1: 2D 가우시안 스플랫

def gaussian_at(x, y, gaussian):
    px, py = gaussian["pos"]
    sigma = gaussian["sigma"]
    d2 = (x - px) ** 2 + (y - py) ** 2
    return math.exp(-d2 / (2 * sigma * sigma))

Step 2: 스플랫의 합으로 렌더링

def render(image_size, gaussians):
    img = [[0.0] * image_size for _ in range(image_size)]
    for g in gaussians:
        for y in range(image_size):
            for x in range(image_size):
                img[y][x] += g["color"] * gaussian_at(x, y, g)
    return img

실제 3D 가우시안 스플래팅은 가우시안을 깊이(depth) 순서로 정렬한 뒤 알파 합성을 순서대로 수행합니다. 우리 2D 장난감 버전은 단순히 더하기만 합니다.

Step 3: 경사 하강으로 적합

for step in range(steps):
    pred = render(size, gaussians)
    loss = mse(pred, target)
    gradients = compute_grads(pred, target, gaussians)
    update(gaussians, gradients, lr)

빠지기 쉬운 함정(Pitfalls)

  • 시점 불일치(View inconsistency). 4개의 시점을 서로 독립적으로 생성해서 객체 구조에 대해 의견이 어긋나면 3D 적합 결과가 흐릿(blurry)해집니다. 해결책은 공유 어텐션(shared attention)을 사용하는 다시점 확산입니다.
  • 뒷면 환각(Back-side hallucination). 단일 이미지에서 3D로 만들 때는 보이지 않는 뒷면을 모델이 지어내야(invent) 합니다. 품질 편차가 매우 큽니다.
  • 가우시안 스플랫 폭발(Gaussian splat explosion). 제약 없이 학습하면 스플랫이 1,000만 개까지 늘어나 과적합(overfit)됩니다. 3D-GS 원 논문의 밀도화(densification) + 가지치기(pruning) 휴리스틱(heuristic)이 필수입니다.
  • 위상(topology) 문제. 음함수 표현(implicit field, SDF)에서 뽑아낸 메쉬는 구멍(hole)이나 자기 교차(self-intersection)가 있는 경우가 많습니다. 배포 전에 리메셔(remesher)(예: Blender의 voxel remesh)를 한 번 돌려야 합니다.
  • 학습 데이터 라이선스(license). Objaverse는 라이선스가 섞여 있고, 상업적 사용 가능 여부는 모델마다 다릅니다.

사용해보기

작업2026년 추천
사진에서 장면 재구성가우시안 스플래팅 (3DGS, Gsplat, Scaniverse)
게임용 텍스트-투-3D 객체Meshy 4 또는 Rodin Gen-1.5 (PBR 출력)
이미지-투-3DHunyuan3D 2.0, TripoSR, InstantMesh
소수 이미지에서 새 시점 합성CAT3D, SV3D
동적 장면 재구성4D Gaussian Splatting
아바타 / 옷 입은 사람Gaussian Avatar, HUGS
연구 / SOTA지난 주에 나온 최신 모델

게임이나 이커머스(e-commerce) 파이프라인에 프로덕션 3D를 배포한다면, Meshy 4나 Rodin Gen-1.5가 출력하는 PBR 메쉬가 Unity / Unreal에 그대로 들어갈 수 있어 유리합니다.

산출물 만들기

outputs/skill-3d-pipeline.md로 저장합니다. 이 스킬(skill)은 3D 작업 브리프(입력: text / 이미지 한 장 / 이미지 여러 장, 출력: mesh / splat / NeRF, 용도: render / game / VR)를 받아서 다음을 출력합니다. 파이프라인(다시점 확산 + 적합, 또는 직접 메쉬 모델), 베이스 모델(base model), 반복(iteration) 예산, 위상(topology) 후처리, 필요한 재질 채널(material channel).

연습문제

  1. 쉬움. code/main.py를 가우시안 개수 4, 16, 64로 각각 실행합니다. 목표(target) 대비 최종 MSE를 보고합니다.
  2. 중간. 컬러 가우시안(RGB)으로 확장합니다. 재구성 결과가 목표의 색상 패턴과 일치하는지 확인합니다.
  3. 어려움. gsplat 또는 Nerfstudio를 사용해 50장 사진 촬영물로 실제 객체를 재구성합니다. 적합 시간(fit time)과 보류(held-out) 시점에서의 최종 SSIM을 보고합니다.

핵심 용어

용어흔한 설명실제 의미
3D 가우시안 스플래팅(3D Gaussian Splatting)"3DGS"장면을 3D 가우시안 구름으로 표현하고, 미분 가능한 알파 합성으로 렌더링한다.
NeRF(Neural Radiance Field)"뉴럴 래디언스 필드"3D 한 점에서 색상과 밀도를 출력하는 MLP. 광선 적분으로 렌더링한다.
트라이플레인(Triplane)"세 개의 2-D 평면"3D를 세 개의 축 정렬 2-D 특징 그리드(feature grid)로 분해. 부피 표현보다 가볍다.
SDS(Score Distillation Sampling)"스코어 디스틸레이션 샘플링"2D 확산 모델의 스코어(score)를 의사 경사(pseudo-gradient)로 사용해 3D 모델을 학습한다.
다시점 확산(Multi-view diffusion)"한 번에 여러 시점"일관된 카메라 시점의 배치를 출력하는 확산 모델.
PBR(Physically-Based Rendering)"물리 기반 렌더링"알베도(albedo), 거칠기(roughness), 금속성(metallic), 노멀(normal) 채널을 가진 재질.
밀도화(Densification)"스플랫 늘리기"경사가 큰 영역에서 스플랫을 분할(split) 또는 복제(clone)하는 3DGS 학습 휴리스틱.

Production note: 3D에는 아직 공통 기반(substrate)이 없다

이미지(latent diffusion + DiT)와 영상(spatiotemporal DiT)과 달리, 3D에는 2026년에도 단일한 지배적 런타임(runtime)이 없습니다. 프로덕션 의사 결정은 표현 방식에 따라 갈라집니다.

  • NeRF / triplane. 추론은 광선 행진(ray-marching)과 샘플마다의 MLP 정방향(forward) 계산으로 이뤄집니다. 512² 렌더에 수백만 회의 MLP 정방향이 필요하므로, 광선 샘플을 공격적으로 배치(batch)해야 합니다. SDPA / xformers 가속이 그대로 적용됩니다.
  • 다시점 확산 + LRM 재구성. 2단계 파이프라인입니다. 1단계(다시점 DiT)는 Lesson 07과 같은 확산 서버입니다. 2단계(LRM 트랜스포머)는 시점들을 받아 한 번에 정방향을 수행하는 일회성 모델입니다. 전체 지연(latency) 프로파일은 "확산 + 일회성"이므로 단계별로 서빙 기본 요소(serving primitive)를 골라야 합니다.
  • SDS / DreamFusion. 추론이 아니라 자산별 최적화입니다. 요청 처리기(request handler)가 아니라 배치 작업(job)으로 운영합니다.

대부분의 2026년 제품에서 정답은 "요청 시 다시점 확산 모델을 돌리고, 3DGS로의 재구성은 비동기(asynchronously)로 진행하며, 실시간 보기는 3DGS로 제공"하는 방식입니다. 이렇게 하면 작업이 GPU 추론 서버(빠름)와 오프라인 최적화기(느림) 사이에 깔끔하게 분리됩니다.

더 읽을거리

실습 코드

이 강의의 실습 코드 1개

main
Code

산출물

이 강의에서 생성된 프롬프트, 스킬, 코드 산출물 1개

3d-pipeline

Choose a 3D generation or reconstruction pipeline given input type, output format, and use case.

Skill

확인 문제

3문제 · 모두 맞추면 완료 표시가 가능합니다

1.단일 이미지에서 3D 객체를 생성할 때, 모델은 보이지 않는 뒷면을 지어내야(hallucinate) 합니다. 주요 품질 문제와 이를 완화하는 아키텍처 접근법은 무엇인가요?

2.제약 없이 3D 가우시안 스플래팅을 학습한 뒤, 스플랫 수가 1,000만 개까지 폭발하고 모델이 과적합됩니다. 표준적인 완화 방법은 무엇인가요?

3.게임 엔진 파이프라인에 3D 생성을 배포할 때, 원시 가우시안 스플랫 출력 대신 Meshy 4나 Rodin Gen-1.5 같은 모델이 선호되는 이유는 무엇인가요?

0/3 답변 완료

추가 문제 풀기

AI가 강의 내용을 바탕으로 새로운 문제를 생성합니다