Upgrade to Pro — share decks privately, control downloads, hide ads and more …

NVIDIA Omniverse Kit Introduction

SJ Chou
August 08, 2024

NVIDIA Omniverse Kit Introduction

Outline
1. Omniverse Kit
2. Omniverse UI Framework
3. Omniverse Extensions
4. Omniverse Application
5. Omniverse IoT Sample

SJ Chou

August 08, 2024
Tweet

More Decks by SJ Chou

Other Decks in Technology

Transcript

  1. Outline • Omniverse Kit • Omniverse UI Framework • Omniverse

    Extensions • Omniverse Application • Omniverse IoT Sample
  2. • Omniverse 最基礎的元件是 Extension (也稱為 Plugin) • 透過許多 Extension 組成

    Omniverse Application • 目前 Library 的工具都是透過 Extension 組合起來的 Application • 可以透過組合的方式來重用這些 Extension • Core Extension 也提供了大量的 API 來操作與建構 Omniverse Omniverse Kit Stack
  3. Omniverse Kit Components 主要提供以下元件功能 • USD/Hydra (Omni.USD) 提供豐富的 OpenUSD Python

    API (底層C++) 來操作 USD • Omniverse (Omniverse Client Library) 與 Omniverse Nucleus Servers 連線實現 USD/SDF 的操作與渲染,實現 Python Bindings 與連 線管理等等 • Carbonite Omniverse 底層框架的管理,包含 Plugin, Audio, File, Image, Thread, Task, Localization, Image 等等。Plugin 透過 pybind11 整合 C++ 實現高效的 Scripting Language Runtime • Omniverse RTX Renderer 建立可以高效 Renderer 的介面,透過 Hydra Engine 實現多顯示晶片整合渲染的能力 • Scripting 不須重新編譯透過 Python 動態執行與呼叫 API • UI Toolkit (omni.ui) 透過 C++ 撰寫的 Dear ImGui 實現 UI 元件,並且可以透過 Python API 直接呼叫存取
  4. OMNI UI Features • Modern, Fast and Lightweight UI Framework

    • Foundation of the Omniverse Kit User Interface • Declarative Syntax and Dynamic Layouts • Fully Styleable similar to HTML using “Stylesheet-like” workflow • Support for XR (VR & AR) rendering • Full C++ and Python Support • Support Linux & Window • DX12/Vulkan Accelerated Backend • Other platforms (Mac, ARM, etc. in planning)
  5. Omniverse UI Stack 由底層到高層的堆疊架構 1. DX12 / Vulkan (Accelerated Backend)

    2. carb.graphics 3. Dear ImGui (GUI Library) 4. Omni UI C++ Library 5. Omni UI Python Binding 高層應用可以直接透過 Python 高效 使用 Omniverse 的功能
  6. Kit Extension Features • Basic building block of Kit Applications

    • Almost everything is an extension • Named and versioned package loaded as runtime • Extension can depend on other extensions • Hot reloaded at runtime
  7. 實現 Extensions 高度解耦與模組重用 • 我們會發現 Omniverse Library 很多 App 都是類似的

    UI 元件,是因為都是 透過一樣的 Extension 組合起來 • Application Window 不是必須的,也 可以設計 Headless 的 Service Application • 可以自行製作 Extension 並且載入到 現有的 Application
  8. Omniverse Extensions 目錄結構 • 在 Omniverse 所有東西都是 Extension • 識別方式為

    Name + Package Version • 透過 Python, Share Library, C++ 與 Python APIs 等組成 • 透過 Extension 相依關係讓模組可以高度重用 設定檔 Entry Point
  9. Omniverse Core Extensions • 開啟 Omniverse Compose > Window >

    Extensions 載入更多功能 • 也可以載入自己設計的 Extesion • 透過 Python Binding 可以即時開發與修改 Extension
  10. Omniverse Applications • 可將許多 Extensions 組成 Application • 也可以實現 Headless

    Application (ex: Microsoft Service) • 透過建立自己的 .kit File 建置專用 的 Omniverse Editor 定義 Application 相依的 Extension
  11. 打造自己專用的 Application • 建立一個 Editor Application • 建立一個 Extension 加入

    .kit 中的 [dependencies] • 透過 ./repo.sh build 編譯 • 透過 ./repo.sh launch 啟動 • 即時修改 Extension Hot-reload
  12. IoS Example • Customer Domain: IoT 資料收集的源頭 • Connector: 傳送

    IoT 資訊到 Live Session USD 元件 • Nucleus: 管理 Live Session 整合場景、協同模擬 • Consumer: 處理 Event 即時變更 Live Session 場景中的 Prim 來實現 Digi Twins
  13. Read CSV Update Value to Session 1. 讀取 CSV 資料以

    TS 進行 Group 2. 透過 Python 連線 Live Session (iot_session) 3. 更新 Prim 數值內容 (By Path)