Fusion 與元宇宙的應用範例 (1) 導入介紹

系統架構縱覽 及 WebGL 建構

Steven Hu
Photon Taiwan
6 min readAug 30, 2023

--

很高興能在這裡與大家分享一個關於遊戲開發的範例。這次我們的主題是 “Fusion Metaverse , 一個微型元宇宙世界的 Fusion 開發範例”. 此系列文章將帶您進入一個以 Fusion SDK 為核心的元宇宙遊戲範例,讓您看見如何建立一個充滿互動性的虛擬世界。

此系列文章將會探討以下主題👇:

  1. 遊戲範例的縱覽
    WebGL 的建構
  2. 活動中心 Hub 的功能與設計
    遊戲中的共同元素
  3. Picazoo 場景的創新互動
    音樂場景 Music 的音樂同步與燈光控制
    藝術畫廊 Art Gallery 的動態藝術展示

不論是遊戲開發者、虛擬世界的愛好者,或是對新科技感到好奇的人,這個範例都會為您帶來新的啟發!🌟 趕快來一起探索虛擬世界的魅力吧!

遊戲範例的縱覽

Fusion Metaverse 是一個展示如何開發簡單元宇宙的範例。透過應用程式,它展示了音樂、藝術和遊戲等多個用例。玩家可以自由地通過 ”傳送門” 從一個場景移動到另一個場景,並且,也可以只與一些朋友一起享受 私人的 不同的 獨立空間。

範例可在此連結取得:
(加入 Photon Industries Circle Member 即可取得原始程式碼)
https://doc.photonengine.com/zh-tw/fusion/current/industries-samples/metaverse/fusion-metaverse-overview

對了, 我們也有為這個主題做了個直播介紹喔, 所以也可以到 Photon Taiwan 的 Youtube Channel 看看影片, 裡面有不少的動態展示喔 !

以下是一些關於此專案的資訊:

1. 技術資訊

  • 使用 Fusion 中的 Shared Mode 共享模式的網路拓撲。
  • 支援 PC、Mac 和 Meta Quest 的構建, 以及 WebGL 的方式進行測試。
  • 開發使用 Unity 2021.3.23f1、Fusion 1.1.7、Photon Voice 2.52。
  • 支援兩種角色解決方案(自製簡單角色和 Ready Player Me 1.9.0 角色)。

2. 如何開始

  • 在 PhotonEngine Dashboard 中創建 Fusion AppId 和 Voice AppId,並將其粘貼到實時設置的相應字段中。
  • 加載 AvatarSelection 場景並按 Play。

3. 輸入處理

  • 桌面:使用 WASD 或 ZQSD 行走,使用 QE 或 AE 旋轉。
  • 滑鼠:左鍵點擊顯示指針,右鍵按住並移動滑鼠旋轉視點。
  • Meta Quest:按 A、B、X、Y 或任何搖桿顯示指針,釋放後將在任何接受的目標上傳送。

4. 架構概述

  • Metaverse 範例依賴於 VR 共享頁面中描述的相同代碼基礎,尤其是用於同步操縦桿。
  • 除此之外,樣本還包括一些 FusionXRShared 的擴展,以處理像同步光線、運動驗證、觸摸、傳送平滑或凝視系統等可重用功能。

Metaverse WebGL Build

Fusion Metaverse WebGL Build 是一個專門針對 WebGL 目標進行構建的實際範例。由於 Unity 在 WebGL 構建方面的一些限制,因此需要特別注意一些細節才能正確工作。

以下是一些主要元素和功能的詳細介紹:

1. 異步代碼:Task.Delay

  • 在 WebGL 構建中,某些 asnyc/await 方法可能無法按預期工作,導致問題。例如,System.Threading.Tasks.Task.Delay 方法在 WebGL 構建中不起作用。
  • 為了解決這個限制,Metaverse 示例提供了一個與 WebGL 兼容的 AsyncTask.Task 方法。它依賴於 Task.Yield,這是 WebGL 構建的兼容方法。

2. AudioSource 和 Lip Synchronization

  • 在當前的 Unity 版本中,對於 WebGL 構建,Audiosource 組件不會觸發同級組件上的 OnAudioFilterRead回調。
  • 因此,使用此回調的數據計算語音音量的 VoiceDetection 組件無法正確工作。相反,在 WebGL 上下文中,VoiceDetection 使用 PhotonVoice 回調來訪問原始音頻數據。

3. TextMeshPro Materials

  • 在某些情況下,如果場景包含使用完全相同字體材料的 TextMeshProTextMeshProUGUI 組件,則 TextMeshPro 文本可能不可見。
  • 要解決此問題,必須複製與字體關聯的材料。然後,確保場景中的 TextMeshProTextMeshProUGUI 組件不使用相同的材料預設。

小結

Metaverse WebGL Build 中的相關程式碼展示了如何針對 WebGL 目標進行構建,並解決了一些特定的 Unity 技術挑戰。從異步代碼的處理到音頻同步和畫面著色的調整都做了改進的設計,確保在 WebGL 環境中的正常運作。

這個部分不僅展示了 Fusion Metaverse 範例的技術能力, 還提供了一個實際的 WebGL 構建開發示例,提供給各位參考。

深入思考與問題

這裡提供一些值得探究的思考方向

  1. 多元宇宙的概念與實現: Fusion Metaverse 如何通過不同的場景和互動元素來展示元宇宙的概念? 這些元素如何共同創造一個沉浸式的虛擬世界?
  2. 技術挑戰與解決方案: 在開發 Metaverse 範例時,可能會遇到哪些技術挑戰? Fusion 如何提供解決方案來克服這些挑戰?
  3. 元宇宙的未來應用: Fusion Metaverse 範例展示了音樂、藝術和遊戲的用例。未來還有哪些可能的應用場景? 這些應用如何影響虛擬世界的發展和人們的互動方式?

總結

以上的內容提供了 Fusion Metaverse 元宇宙範例的概述和一些技術提要及 WebGL 建構需注意的地方。接下來將會逐一深入探討 Metaverse 的各個特定部分,包括中心樞 Hub、共同元素 Common、Picazoo、音樂場景 Music和藝術畫廊 Art Gallery。

有開發上的疑問嗎? 直接到 粉絲團 發訊息 (private message) 來討論吧 !
https://www.facebook.com/photoncloudtw/

學習順利,下篇見!

--

--