iT邦幫忙

2025 iThome 鐵人賽

DAY 22
0
Modern Web

WebXR未來新視界:Babylon.js打造Web的VR/AR/XR體驗系列 第 22

Babylon.js GUI : 那些在XR世界中的2D畫面

  • 分享至 

  • xImage
  •  

為什麼要用Babylon.js GUI

前面提到當進入XR的時候,就會已經進到裡面,瀏覽器會將渲染權交給畫3D的部分,DOM曾會被隱藏,就暫時無法看到或用到那些 HTML DOM 元素。這時有兩種選擇:一種是用dom-overlay 來讓一個標準的 HTML 元素覆蓋3D 內容的上方;另一種則是用Babylon.js GUI,在XR的世界建立3D世界所使用的介面。

當要做表單輸入的話,若會有很多元件像原生滾動條或下拉選單等,這些東西要在3D層去畫相對來說繁雜很多,所以dom-overlay是一個相較於Babylon.js GUI更好的選擇。但因為跟XR世界的整合度會稍差,且瀏覽器要同時渲染3D 層和 DOM 覆蓋層,可能引入額外延遲或閃爍。所以如果是跟應用本身相關的資訊,只需要按鈕、文字和滑桿,會更推薦使用整合較好的Babylon.js GUI。

Babylon.js GUI 是一個被強調的優點,因為其他 WebXR/3D 框架並沒有類似的「單一、官方、高度整合」的 GUI 解決方案。相較於全部都用Mesh來創建 3D 平面,Babylon.js GUI 有個很強的Single Draw Call性能優勢。也就是當創建N個按鈕原本要N個Mesh,而如果是用Babylon.js GUI ,Babylon.js GUI 只需告訴 GPU 繪製一次那張巨大的 AdvancedDynamicTexture。N次變1次,對於強調性能的WebXR來說超棒的吧!更別說Babylon.js GUI 針對文字渲染做了專門優化,確保文字無論在螢幕上還是在 3D 平面上,都保持最高的清晰度。

https://ithelp.ithome.com.tw/upload/images/20251002/20103990Fg58SF1Jmz.png

認識Babylon.js GUI

Babylon.js GUI 是一個巨大的 2D 貼圖 (Texture),跟網頁UI的DOM樹有很大的差別,為了更好的理解,以下來個概念對照來幫助理解:

Babylon.js 概念 類似網頁UI的概念 說明與職責
AdvancedDynamicTexture <body> 或主容器 <div> 根容器。 這是所有 UI 元素繪製的畫布(那張巨大的貼圖)。必須從這裡開始創建所有 UI。
Control 基本DOM元素 基本 UI 元素。 所有按鈕、文字、圖片都是繼承自 Control
Container CSS的 Flex /Grid 佈局管理器。 用於組織子 Control。常見的有 StackPanel (Flex-direction: column/row) 和 Grid (類似 CSS Grid)。
Horizontal/Vertical Alignment CSS的 align-items / justify-content 控制元素在父容器中的對齊方式 (LEFT, RIGHT, CENTER)。

Babylon.js GUI 系統主要由 AdvancedDynamicTexture 及其下的 Control 組件構成。並且因為在3D世界中這塊界面,勢必會因為與使用者之間的距離等情況會有放大縮小的情況,所以考量到要響應式,大多會以百分比來當作單位。佈局上有類似CSS的 Flex /Grid ,但每個**Control**元素都需要手動設定並不會像網頁那麼聰明的全部排列好。

最常會用到的 GUI 元件和它的功能:

TextBlock :顯示文字。 用於分數、標題或訊息。可以設定字體大小、顏色和自動換行。

Button:標準按鈕。 最常用於交互,需訂閱其 onPointerClickObservable

Image:顯示圖片。 通常用於圖標、背景或按鈕上的圖形。

Slider:類似scrollbar。 用於調整音量、鏡頭距離或光照強度。

StackPanel:類似css的flex。 將子元素按垂直或水平方向堆疊排列。

更多關於BJS GUI的文件和範例


上一篇
[Day21] Babylon.js WebXR 攝影機和控制器
系列文
WebXR未來新視界:Babylon.js打造Web的VR/AR/XR體驗22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言