유니티 개발 관련

USD (universal scene description) 개념잡기

DualQuaternion 2022. 9. 22. 15:03

https://developer.nvidia.com/usd#usd

 

Pixar Universal Scene Description (USD)

Discover, develop, and distribute custom applications for 3D worlds with NVIDIA Omniverse at GTC. Register free > What is Universal Scene Description? Universal Scene Description (USD) is an easily extensible, open-source 3D scene description and file form

developer.nvidia.com

엔비디아 홈페이지 자료 위주로 USD의 개념을 잡아보자.

 

1. USD가 뭐지?

 

USD는 쉽게 확장가능한 오픈소스 3D 씬 명세이자 파일 포맷으로, 다양한 툴들간의 교환 및 콘텐츠 저작을 위해 픽사에서 개발되었다. 능력과 호환성이 강력하여 비주얼 이펙트 커뮤니티만이 아니고 건축, 디자인, 로보틱스, 제조 등 다양한 분야에 활용되고 있다.

 

2. 엔비디아의 USD 

USD은 실시간 협력 플랫폼인 NVIDIA 옴니버스의 기반으로, 다양한 콘텐츠 저작 툴을 서로 연결해주고, 엔비디아의 실시간 레이트레이싱에도 연결되어있다.

 

엔비디아는 새로운 툴을 개발하고, 기술들을 엮고, 샘플과 튜토리얼을 제공하는 방식으로 USD를 확장해가고 있다.  

 

https://youtu.be/H0_NZDSqR3Y

위 영상은 옴니버스 플랫폼 상에서 RTX의 능력을 표현하기 위한 쇼케이스다. 이 쇼케이스는 옴니버스 상에서 다양한 아티스트와 엔지니어가 협업하여 만들어낸 결과물로, VFX 이상의 퀄리티를 가지는 USD 에셋을 완전히 물리적으로 시뮬레이션 되는 게임 레벨로 섞어냈다. 이 쇼 케이스는 Quadro RTX 8000 싱글 상에서 실시간에 작동한다. 

 

3. 프리빌트 라이브러리와 툴

엔비디아에서는 USD 프리 빌트 라이브러리와 툴을 제공해준다.

 

USD 라이브러리는 픽사에서 제공해주는 소스코드의 형태로만 이용가능하고, USD를 빌드하는 것은 꽤 어려울 수 있다. 엔비디아에서는 프리빌트 라이브러리를 USD Toolset과 함께 동봉하여 제공한다. 이 패키지는 사용자가 USD의 장점을 취하며 새로운 툴을 개발하는 것을 도와줄 것이다. 

 

윈도우용을 받아서 압축을 풀어주니 

위 이미지처럼 나온다.

 

bin 폴더의 내용이다.

 

https://graphics.pixar.com/usd/release/toolset.html

픽사에서 제공해주는 toolset들이 들어있는 것을 확인할 수 있다.

 

실행파일의 형태가 아니고, 파이썬 패키지 형태도 제공해주고 있다. USD의 읽기 및 쓰기 기능만 필요하다거나, 파이썬 API를 써보고 싶은 경우에 pip install로 간단하게 설치할 수 있다.

 

액티비젼에서는 USD 파일 포맷을 위한 강력한 윈도우 셸 확장을 공개했다. 이는 Hydra 실시간 프리뷰, 섬네일 지원, 컨텍스트 메뉴 등을 지원한다.

 

4. 튜토리얼 보기. 

몇몇 장면을 캡쳐해서 가져와보겠다. 우선 픽사가 왜 USD를 만들었는지에 대해 설명해준다. USD는 오픈소스이고, 다른 산업에 적용될 수 있다.

 

쥬피터 노트북을 이용한 간단한 예제도 소개되고, 엔비디아 옴니버스를 이용한 USD 에셋 구조 데모도 소개해준다. 

 

원래 다양한 데이터 포맷이 있었는데, 결국 통합이 어려웠다. Brave 프로젝트 전에는 수많은 파일 포맷과 데이터 표현을 사용했다. 좀 더 자세히는 한 샷을 만들거나, 애니메이션 스플라인을 레이어링 하거나, 리깅, 시뮬레이션 하는 작업들 모두 각자의 파일 포맷과 API로 구성되어있었다.

 

따라서 다양한 툴들이 그 파일들을 편집하는데 사용되었고, 결과적으로 올인원으로 데이터를 에디트하거나 결과를 확인하기가 어려웠다.

 

그러니 부서간 데이터 이용 또한 어려웠다. 많은 타 산업계에서도 유사한 이슈가 있었다. 

 

Presto 애니메이션 시스템은 Brave 프로젝트를 위해서 다양한 부서의 협업이 가능한 툴이 될 수 있도록 개발되었다. 

애니메이션, 캐릭터, 레이아웃, 시뮬레이션 모두가 하나의 씬 데이터 타입 내에서 편집이 가능해졌다. 수많은 사람들이 저작한 파일들이 모여서 하나의 싱글 샷을 구성하게 되었다.

 

Tidscene이라는 파일 포맷과 런타임 API 또한 같은 시간대에 개발되었다. 바이너리 데이터의 고속 스트리밍이 가능했고, 다른 어플리케이션의 내부에서 작동할 수 있었기 때문에 데이터 교환에 있어서 매우 훌륭했다.

USD는 이전에 개발된 파일 포맷과 런타임 API의 가장 좋은 부분만 모았다. 

 

고속의 바이너리 스트리밍, 넓은 데이터 저장공간.

 

다양한 툴과 협업할 수도 있고 데이터 교환을 위한 백본을 형성할 수도 있다. 

 

USD 파일들을 동시에 구성하고 레이어링 하고 참조할 수 있는 효율적인 수단.

 

30여년 픽사의 소프트웨어 개발의 결과물.

 

 

HYDRA는 USD를 이용하여 이미지를 렌더링하는 아키텍쳐이다.

 

RTX 레이 트레이싱, OpenGL, 그 외의 렌더링 백본을 지원한다.

 

Presto의 인터랙티브 디스플레이와 옴니버스 내의 실시간 레이트레이싱을 위해서 사용되었다. 

 

오픈소스로 공개해줘서 널리 쓰이고 있따.

 

마야에도 USD 플러그인이 있다.

 

sideFX라는 프로그램도 USD를 지원한다.

 

언리얼 엔진도 지원한다.

 

애플도 지원하고..

 

다음으로 간편 데모다. 

 

클라우드 상에서 간단하게 맛볼 수 있다고 하니 따라해보자. 음 그런데 접속을 해도 링크를 못찾겠다. 그냥 영상으로 보고 넘어가자.

이런식으로 씬을 만드는 모양이다. 우측과 같은 코드가 USD로  익스포트 하면 좌측과 같이 나온다는 것으로 해석된다. 

우측 코드를 보면,  사실상 잘 이해는 안되지만 주석을 보고 넘어가자 ㅋㅋㅋ

 

아무튼 USD는 옴니버스의 코어다. 모든 객체들이 USD 레이어 상에서 정의된다고 한다. 

 

그래 이정도는 할 수 있겠다.

 

요게 바로 다음씬 ㅋㅋㅋㅋㅋㅋㅋㅋ

 

이건 어떻게 하는거지......

 

ㅠㅠ