← BlogPhysical AI 기초· 2/5

OpenUSD 씬 컴포지션 — 레이어·레퍼런스·페이로드로 월드를 조립하기

USD가 단일 3D 파일이 아니라 '비파괴 레이어 합성 시스템'이라는 것 — 같은 자산을 여러 시나리오가 충돌 없이 재사용하는 원리(레이어·레퍼런스·페이로드·variant·LIVRPS).

약 2분
OpenUSDcompositionlayersLIVRPSscene

OpenUSD 씬 컴포지션

USD로 씬을 조립한다에서 환경·로봇을 reference로 끼운다고 했습니다. 그런데 USD의 진짜 힘은 더 깊은 곳에 있습니다 — USD는 하나의 3D 파일이 아니라 여러 레이어를 비파괴적으로 합성하는 시스템입니다. 픽사가 대규모 애니메이션을 여러 아티스트가 충돌 없이 협업하려고 만든 그 구조가, 로봇 시뮬에 딱 맞았습니다.

합성의 도구들 — Composition Arc

USD는 여러 "합성 경로(composition arc)"로 레이어를 쌓습니다.

  • sublayer — 레이어를 통째로 겹쳐 쌓기 (포토샵 레이어처럼).
  • reference — 다른 USD를 특정 위치에 끼워 넣기 (로봇·환경 자산).
  • payload — reference인데 무거운 부분을 필요할 때만 로드 (대용량 자산 지연 로딩).
  • variant — 한 prim의 여러 버전(예: 같은 차량의 색/사양 변형)을 전환.
  • override — 원본을 안 건드리고 위에서 값만 덮어쓰기.
도식 렌더링 중…

누가 이기나 — LIVRPS

여러 레이어가 같은 prim의 값을 다르게 정하면 충돌이 납니다. USD는 LIVRPS라는 강도 순서로 누가 이길지를 정합니다.

강함 →  Local · Inherits · Variants · References · Payloads · Specializes  → 약함

가장 가까운(Local) 레이어가 가장 셉니다. 그래서 베이스 자산은 그대로 두고, 시나리오별 override를 위에 얹으면 그 override가 이깁니다 — 원본을 절대 안 건드리면서요.

💡 비파괴가 핵심 가치 — 베이스 환경 USD는 한 번 잘 만들어 두고, 시나리오마다 "이 환경에서 저 선반만 빼고, 조명만 바꿔"를 override로 얹습니다. 원본은 불변, 변형은 무한 — 그래서 환경·로봇·센서·시나리오가 각각 독립적으로 진화하면서도 한 무대에서 합쳐집니다.

군단을 메모리에 — Instancing

같은 자산(예: 똑같은 컨테이너 1,000개)을 1,000번 복제하면 메모리가 터집니다. USD의 instancing은 동일한 prim을 원본 하나만 메모리에 두고 위치만 1,000개 두어, 군단급 장면도 가볍게 띄웁니다.

⚠️ 합성 순서를 모르면 디버깅이 어렵다 — "분명 이 값을 바꿨는데 안 먹는다"의 단골 원인은 LIVRPS에서 더 센 레이어가 이기고 있는 것입니다. 값이 안 먹으면 어느 합성 경로가 그 값을 더 세게 정하고 있는지부터 확인하세요.

한 줄 정리

📌 USD는 단일 파일이 아니라 레이어·레퍼런스·페이로드·variant·override를 비파괴로 합성하는 시스템이고, 충돌은 LIVRPS 강도 순서로 해결한다. 베이스 자산은 불변, 시나리오 변형은 override로 — instancing으로 군단급도 가볍게. 값이 안 먹으면 합성 순서부터 의심하라.