Pollux Logo

Omniverse Kit으로 App 빌드하고 배포하기

NVIDIA Omniverse는 강력한 실시간 시뮬레이션 플랫폼으로, 커스텀 Extension과 App을 통해 다양한 기능을 확장할 수 있는 환경을 제공합니다. 특히 Omniverse Kit은 독립 실행형 애플리케이션을 만들고, 이를 배포할 수 있는 강력한 프레임워크를 제공합니다.

패키징 프로세스는 전달 및 배포를 위해 프로젝트 자산을 구성하고 구조화합니다. 포장 단계의 세부 사항은 원하는 배포 방법에 따라 다릅니다. 패키지는 프로젝트를 구성하는 모든 파일의 모음입니다. 필요한 파일과 폴더가 포함된 아카이브를 생성하여 패키지를 수동으로 조합하는 것이 가능하지만 Omniverse는 Repo 패키지 도구를 통해 더욱 효율적인 대안을 편리하게 제공합니다. 이 도구는 모든 필수 구성 파일이 있고 빌드 폴더가 정확하게 구성되었는지 확인합니다.

이번 글에서는 Omniverse Kit을 활용하여 커스텀 Extension이 포함된 App을 빌드하고, 이를 Omniverse Launcher에 등록해 배포하는 전체 과정을 정리합니다.

실제 예제에서는 POLLUX에서 OpenModelica 데이터를 연동한 Custom Extension을 App에 포함하고, 이를 Kit 앱으로 패키징 및 배포합니다.

개발자 가이드

Omniverse Kit 기반 앱 개발과 배포는 공식 개발자 가이드 문서를 통해 자세히 확인할 수 있습니다.

패키징은 App의 모든 구성 파일을 하나의 구조화된 프로젝트로 압축하는 과정으로, Omniverse는 이를 위해 repo package 명령어 기반의 효율적인 툴을 제공합니다.

이 툴은 모든 필수 구성 파일이 존재하는지, 빌드 디렉토리가 정상 구성되어 있는지를 자동으로 검사합니다.

Custom Extension 빌드 준비

이번 프로젝트에서는 POLLUX에서 OpenModelica 데이터를 Omniverse Extension으로 연동한 Custom Extension을 App에 포함해 빌드합니다.

이를 위해 다음과 같은 환경을 구성합니다.

Omniverse Kit 설치

먼저 Omniverse Launcher에서 Kit을 검색하여 설치합니다.

Image

이후 Kit 앱 템플릿을 기반으로 앱을 생성할 수 있습니다.

간단한 App 개발: Kit App Template 활용

Omniverse에서 제공하는 공식 템플릿을 활용하여 기본 앱 구조를 생성할 수 있습니다.

템플릿을 clone한 후, 빌드 명령어를 실행하면 기본 앱이 생성됩니다.

Image

Kit 파일 생성

source/apps 경로에 my_company.my_app.kit 파일을 생성하고, 필요한 내용을 아래와 같이 작성합니다. 이 파일은 앱 실행 시 참조되는 핵심 설정 파일입니다.

Image

앱 실행

생성한 Kit 파일을 기반으로 Omniverse Kit 앱을 실행합니다.

  • Windows:
.\_build\windows-x86_64\release\my_name.my_app.bat
  • Linux:
./_build/linux-x86_64/release/my_name.my_app.sh

VScode에서 Custom Extension 등록

source/apps 경로 내에서 앱 설정 파일에 사용할 커스텀 Extension의 Git 주소를 등록합니다.

예: POLLUX Extension 레포지토리 경로를 추가

Image

Custom Name and Readme

Image

Omniverse UI에서 Extension 추가

앱 실행 후, Omniverse Kit의 Extension UI 화면을 열어 위에서 등록한 커스텀 Extension을 검색하고 설치합니다.

Image

Custom Extension 적용 결과

정상적으로 Extension이 추가되면, POLLUX에서 개발한 Extension이 앱 내에서 실행 가능한 상태로 적용됩니다.

Image

실행 화면에서는 UI 위젯과 커스텀 기능이 활성화되어 Extension이 통합된 모습을 확인할 수 있습니다.

App 패키징

앱과 Extension이 정상 작동하는 것을 확인했다면, repo package 명령어를 통해 앱을 .zip 파일로 패키징할 수 있습니다.

repo package --launcherImage

.zip 파일은 Omniverse Launcher에 등록하여 배포하는 데 사용됩니다.

에러 수정: Launcher 등록 실패 시

패키징한 .zip 파일을 Omniverse Launcher에 등록하려 할 때 인코딩 오류 등으로 실패하는 경우가 있습니다.

Image

UnicodeDecodeError는 일반적으로 UTF-8로 저장된 파일을 CP949 등 시스템 기본 인코딩으로 읽을 때 발생합니다.

해결 방법:

package_app/main.py 파일에서 파일을 읽는 부분을 아래와 같이 명시적 인코딩으로 수정합니다.

ImageImage

다양한 패키징 옵션

ImageImage

패키지 설치

완성된 .zip 파일을 다음과 같은 명령어로 설치할 수 있습니다:

Image

기본 App 설치 확인

설치가 완료되면 Omniverse Launcher 내에 새로운 앱이 등록되어 실행 가능한 상태가 됩니다.

Image

Launcher UI 수정

source/launcher/description.toml 파일을 수정하여 앱의 이름, 설명, 요구 사양 등을 설정할 수 있습니다.

ImageImage

이는 Omniverse Exchange에 표시되는 메타데이터에 반영됩니다.

Launcher 이미지 수정

앱 아이콘 이미지를 수정할 수 있습니다.

기존이미지와 같은 title과 px 사이즈를 맞춰주세요.

기존 이미지와 동일한 제목, 크기(px), 비율을 유지해야 합니다.

최종 결과: POLLUX App 등록 완료

Omniverse Launcher에 커스텀 앱이 정상적으로 등록된 것을 확인할 수 있습니다.

Image

POLLUX Extension이 통합된 형태의 앱이 별도 실행 항목으로 표시되며, 클릭 시 독립적인 Kit 기반 앱으로 실행됩니다.

마무리

Omniverse Kit을 활용하면 단순한 Extension 개발을 넘어서, 독립 실행형 App으로의 확장 및 배포까지 가능해집니다.

특히 커스텀 Extension을 통합한 앱을 패키징하고, Omniverse Launcher에 등록함으로써 팀 단위 배포, 고객용 전용 앱 제작, 내부 도구화 등의 활용이 가능해집니다.

이 글 공유하기:

Copyright 2025. POLLUX All rights reserved.