Slide 1

Slide 1 text

NVIDIA Omniverse Kit Introduction SJ Chou [email protected] https://blog.toright.com

Slide 2

Slide 2 text

Outline ● Omniverse Kit ● Omniverse UI Framework ● Omniverse Extensions ● Omniverse Application ● Omniverse IoT Sample

Slide 3

Slide 3 text

Omniverse Kit

Slide 4

Slide 4 text

● Omniverse 最基礎的元件是 Extension (也稱為 Plugin) ● 透過許多 Extension 組成 Omniverse Application ● 目前 Library 的工具都是透過 Extension 組合起來的 Application ● 可以透過組合的方式來重用這些 Extension ● Core Extension 也提供了大量的 API 來操作與建構 Omniverse Omniverse Kit Stack

Slide 5

Slide 5 text

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 直接呼叫存取

Slide 6

Slide 6 text

Omniverse Kit For You 官方原生的 Omniverse Application 與 Extension

Slide 7

Slide 7 text

Omniverse Compose ● 早期稱為 Omniverse Create ● 整合大多數的 Extension 成為強大的建模工具 ● 包含 Isaac Sim 等等官方 Library 都是透過 Extension 組合

Slide 8

Slide 8 text

Omniverse Core Extensions RTX Render Content Browser Stage Window Property Window Tool bar

Slide 9

Slide 9 text

Omniverse UI Framework

Slide 10

Slide 10 text

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)

Slide 11

Slide 11 text

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 的功能

Slide 12

Slide 12 text

Omniverse Extensions

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

實現 Extensions 高度解耦與模組重用 ● 我們會發現 Omniverse Library 很多 App 都是類似的 UI 元件,是因為都是 透過一樣的 Extension 組合起來 ● Application Window 不是必須的,也 可以設計 Headless 的 Service Application ● 可以自行製作 Extension 並且載入到 現有的 Application

Slide 15

Slide 15 text

Omniverse Extensions 目錄結構 ● 在 Omniverse 所有東西都是 Extension ● 識別方式為 Name + Package Version ● 透過 Python, Share Library, C++ 與 Python APIs 等組成 ● 透過 Extension 相依關係讓模組可以高度重用 設定檔 Entry Point

Slide 16

Slide 16 text

Omniverse Core Extensions ● 開啟 Omniverse Compose > Window > Extensions 載入更多功能 ● 也可以載入自己設計的 Extesion ● 透過 Python Binding 可以即時開發與修改 Extension

Slide 17

Slide 17 text

Omniverse Application

Slide 18

Slide 18 text

Omniverse Applications ● 可將許多 Extensions 組成 Application ● 也可以實現 Headless Application (ex: Microsoft Service) ● 透過建立自己的 .kit File 建置專用 的 Omniverse Editor 定義 Application 相依的 Extension

Slide 19

Slide 19 text

打造自己專用的 Application ● 建立一個 Editor Application ● 建立一個 Extension 加入 .kit 中的 [dependencies] ● 透過 ./repo.sh build 編譯 ● 透過 ./repo.sh launch 啟動 ● 即時修改 Extension Hot-reload

Slide 20

Slide 20 text

Omniverse IoT Sample

Slide 21

Slide 21 text

IoS Example ● Customer Domain: IoT 資料收集的源頭 ● Connector: 傳送 IoT 資訊到 Live Session USD 元件 ● Nucleus: 管理 Live Session 整合場景、協同模擬 ● Consumer: 處理 Event 即時變更 Live Session 場景中的 Prim 來實現 Digi Twins

Slide 22

Slide 22 text

Read CSV Update Value to Session 1. 讀取 CSV 資料以 TS 進行 Group 2. 透過 Python 連線 Live Session (iot_session) 3. 更新 Prim 數值內容 (By Path)

Slide 23

Slide 23 text

Consumers (Extension) 1. Sync Prim 2. IoT Panel UI 3. Update USD

Slide 24

Slide 24 text

Thanks SJ Chou [email protected] https://blog.toright.com