Chacmool:Chrome Canary 中的擴增實境

Chris Wilson
Chris Wilson

在準備 Google I/O 時,我們想強調擴增實境 (AR) 在網路上的令人興奮的可能性。Chacmool 是我們建立的教育性網頁體驗示範,用來展示網頁式 AR 如何輕鬆協助使用者體驗 AR 體驗。網路可讓 AR 隨處可用,方便使用者隨時隨地體驗。

我們現在已在 Chrome Canary 中啟用此示範,適用於搭載 Android O 以上版本的 ARCore 相容 Android 裝置。您也需要安裝 ARCore。這項工作依賴新的 WebXR 提案 (WebXR 命中測試 API),因此我們將其標示為「待測試」,並打算在 Canary 中保留,以便與 Immersive Web 社群群組的其他成員共同測試及改良新的 API 提案。事實上,您必須在 chrome://flags: #webxr#webxr-hit-test 中啟用兩個標記,才能存取這個示範。啟用這兩項功能並重新啟動 Canary 後,您可以查看 Chacmool 示範。

Chacmool AR 體驗以教育為主,利用 AR 的沉浸式和互動性質,協助使用者瞭解古代 Chacmool 雕塑。使用者可以在現實中放置真人大小的雕像,並在移動時從不同角度和距離觀看雕像。AR 的沉浸式特性可讓使用者自由探索、發現和操作內容,就像在現實世界中一樣。在 AR 中觀看物體,與在平面 2D 螢幕上觀看物體相比,我們可以透過非常直覺的互動模式,從許多不同的角度和距離觀看物體,進而深入瞭解我們正在觀看的物體,例如在物體周圍走動,並在物體附近或遠處觀看。此外,在這個體驗中,您會看到直接放置在雕塑品上的註解。這樣一來,使用者就能直接連結文字描述內容,以及這些特徵在雕塑品中的位置。

這個示範內容的建構時間約為一個月,並利用 WebXR 團隊第一個以網頁為基礎的 AR 示範內容 WebAR-Article 中的部分元件。雕塑品資訊來自 Google 藝術與文化頁面,3D 模型則由 Google 藝術與文化的合作夥伴 CyArk 提供。為了讓 3D 模型可用於網頁,我們使用 Meshlab 和 Mesh Mixer 來修復模型,並減少其網格數量,以縮減檔案大小。接著,我們使用了 Draco 這個用於壓縮及解壓縮 3D 幾何圖形網格和點雲的程式庫,將模型的檔案大小從 44.3 MB 縮減到僅 225 KB。最後,我們會使用網頁工作者在背景執行緒上載入模型,讓網頁在模型載入及解壓縮時保持互動性,這項作業通常會導致卡頓,並防止網頁捲動。

我們在電腦上進行開發,並將應用程式部署到手機上,因此我們強烈建議您使用 Chrome 的遠端偵錯工具來檢查體驗,這樣一來,您就能在程式碼變更之間建立快速迭代週期,Chrome 中也提供出色的開發人員工具,可用於偵錯及檢查效能。

AR/VR 體驗的最佳做法

大部分設計和工程規範都適用於製作以原生 AR 體驗為目標的設計。如要進一步瞭解一般最佳做法,請參閱我們最近發布的擴增實境設計指南

特別是設計以網頁為基礎的擴增實境體驗時,建議您在使用擴增實境時,盡量使用整個螢幕 (也就是全螢幕,類似於行動裝置上的影片播放器全螢幕模式)。這樣一來,使用者就不會捲動檢視畫面,或因網頁上的其他元素而分心。進入 AR 模式的轉換過程應流暢無縫,在進入 AR 新手上路前,先顯示相機畫面 (例如繪製十字準星)。關於網頁版 AR,您必須注意的是,與原生 AR 不同,開發人員目前無法存取相機影格、照明估算、錨點或平面,因此設計人員和開發人員在設計網頁版 AR 體驗時,務必考量這些限制。

此外,由於使用者體驗會透過各種裝置存取網頁,因此請務必將效能最佳化,以打造最佳使用者體驗。因此,請保持多邊形數量偏低、盡量減少燈光數量、盡可能預先計算陰影,並盡量減少繪圖呼叫。在 AR 中顯示文字時,請使用新式 (即以已簽署的距離場為基礎) 的文字算繪技術,確保文字在所有距離和角度下都清晰易讀。放置註解時,請將使用者的目光視為另一項輸入內容,並只在相關情況下顯示註解 (也就是在使用者將焦點放在感興趣的區域時,顯示以距離為依據的註解)。

最後,由於這類內容是網頁內容,因此請務必套用一般網頁最佳設計做法。請確保網站可在各式裝置 (桌機、平板電腦、手機、頭戴式裝置等) 上提供良好的體驗。支援漸進式增強功能,就表示也要為不支援 AR 的裝置設計 (例如在非 AR 裝置上顯示 3D 模型檢視器)。

如果您有興趣自行開發以網頁為基礎的 AR 體驗,請參閱這篇相關文章,進一步瞭解如何開始自行在網頁上建構 AR 體驗。(您也可以查看 Chacmool 示範的來源)。WebXR Device API 目前正在積極開發中,我們非常歡迎您提供意見回饋,以便確保 API 可支援所有類型的應用程式和用途,因此請前往 GitHub 加入討論