本公開的各實施例總體上涉及計算機領域,具體地涉及基于多平臺的體驗生成。
背景技術:
混合現實(mr)可以被描述為真實世界和虛擬世界的合并,其中可以產生新的環境和可視化以提供物理對象和數字對象的實時的共存和交互。混合現實體驗將虛擬內容添加到用戶對真實世界的感知,將兩者合并成超過由增強現實或虛擬現實提供的體驗的單個無縫體驗。
附圖說明
通過在以下附圖中示出的示例來說明本公開的特征。在下面的附圖中,相同的附圖標記表示相同的元件,在附圖中:
圖1示出了根據本公開的示例的基于多平臺的體驗生成系統的架構;
圖2示出了根據本公開的示例的用于基于個人計算機(pc)的平臺的圖1的基于多平臺的體驗生成系統的各個體驗;
圖3示出了根據本公開的示例的用于基于混合現實的平臺的圖1的基于多平臺的體驗生成系統的各個體驗;
圖4示出了根據本公開的示例的用于基于圖1的基于多平臺的體驗生成系統的(特別是共享的和不共享的)體驗的共享以及固有屬性的共享的流程圖;
圖5示出了根據本公開的示例的用于實現圖1的基于多平臺的體驗生成系統的共享的多平臺體驗的框架;
圖6示出了根據本公開的示例的用于圖1的基于多平臺的體驗生成系統的動作鏈;
圖7示出了根據本公開的示例的用于在設備中實現圖1的基于多平臺的體驗生成系統的特征的架構;
圖8示出了根據本公開的示例的用于基于多平臺的體驗生成的方法的流程圖;
圖9示出了根據本公開的示例的用于基于多平臺的體驗生成的另一方法的流程圖;以及
圖10示出了根據本公開的示例的計算機系統。
具體實施方式
出于簡單和說明的目的,主要通過參考其示例來描述本公開。在以下描述中,闡述了許多具體細節以便提供對本公開的透徹理解。然而,應當理解,本公開可以被實踐而不限于這些具體細節。在其他情況下,沒有詳細描述一些方法和結構,以免不必要地模糊本公開。
在整個本公開中,術語“一(a)”和“一個(an)”旨在表示特定元件中的至少一個。如本文中使用的,術語“包括(includes)”表示包括但不限于,術語“包括(including)”表示包括但不限于。術語“基于”表示至少部分地基于。
關于混合現實,可以在真實世界設置中提供數字內容。例如,數字內容可以包括相對于真實世界對象的空間中的真實世界位置(例如,數字瓶可以位于現實世界貨架上)。混合現實可以提供相對于真實世界對象的關于數字內容的動作(例如,通過移動、改變形狀、改變其他屬性等進行修改)。
關于與數字內容的交互,多種不同類型的平臺可以被用于這樣的交互。例如,關于個人計算機(pc),用戶可以利用鍵盤和/或鼠標點擊操作例如以拖動從而相對于真實世界對象的數字顯示來移動數字內容。根據另一示例,在移動環境(例如,移動電話或另一這樣的設備)中,用戶可以使用觸摸屏、傾斜和其他這樣的操作來相對于真實世界對象的數字顯示操縱數字內容。根據另一示例,用戶可以利用混合現實眼鏡來相對于真實世界對象與數字內容交互。這些不同類型的平臺可以包括或缺少關于可以對數字內容執行的動作的不同類型的功能。例如,基于pc的平臺可以允許用戶使用鼠標點擊和復制功能從單個數字對象生成多個數字對象。根據另一示例,基于混合現實眼鏡的平臺可以允許用戶例如通過使用用戶的手來根據需要移動數字對象。因此,不同類型的平臺可以包括不同類型的能力和限制,其中第一平臺類型的特定功能的實現可能不可用,或者對于第二平臺類型可以以更高的復雜度實現。此外,第一類型的平臺(例如,基于pc的平臺)的用戶可以首先利用第一類型的平臺來實現關于數字對象的不同類型的功能,然后使用第二(或另外的平臺;例如,混合現實平臺)實現關于在第一類型的平臺上不可用的數字對象的其他類型的功能。
為了解決與可以與數字內容一起使用的不同類型的平臺相關聯的各種挑戰和限制,本文中公開了基于多平臺的體驗生成系統和用于基于多平臺的體驗生成的方法。本文中公開的系統和方法可以提供用于開發相同虛擬場景的不同體驗的集成框架。例如,基于用戶正在使用的設備的類型、正在使用的屏幕或輸入設備的類型或者哪個特定用戶正在執行動作,相同虛擬環境的用戶獲得的體驗可以不同。因此,本文中公開的系統和方法可以提供不同體驗在不同設備上的集成和實現。例如,當正在使用pc時,用戶可以通過在虛擬場景的計算機屏幕上的完全虛擬的二維(2d)視圖來接收基于鍵盤和鼠標的輸入體驗。根據另一示例,當正在使用混合現實設備(例如,增強現實眼鏡)(例如,與pc相比同時或在不同的時間)時,用戶(或不同用戶)可以接收基于姿勢的輸入體驗并且接收作為虛擬三維(3d)對象顯示在相同虛擬場景的真實世界標記之上的視覺。在這一點上,多個用戶——每個用戶具有他們自己的設備選擇及其體驗——可以共享他們的工作的各方面。例如,基于pc的用戶可以將項目添加到虛擬場景,而處于不同物理位置的基于混合現實的用戶可以獲取這些項目并且將項目放置在現實世界周圍。
對于本文中公開的系統和方法,不是通過一個特定平臺體驗虛擬環境,而是不同類型的平臺的每個用戶可以通過他們自己的特定平臺體驗虛擬環境,并且通過他們自己的平臺的能力來參與相同的虛擬環境。因此,本文中公開的系統和方法可以將處于不同類型的平臺上的多個用戶的交互與公共虛擬環境統一,并且使得用戶能夠基于他們的具體平臺的能力來彼此交互以及與公共虛擬環境交互。
為了統一在不同類型的平臺上的多個用戶與公共虛擬對象的交互,對于本文中公開的系統和方法,公共虛擬環境可以被定義為包括被用作用于操縱不同類型平臺的虛擬對象的基礎的錨點。本文中公開的系統和方法還可以通過以下方式來提供在不同類型的平臺上的多個用戶與公共虛擬對象的交互的統一:針對不同類型的平臺分析動作(例如,用于基于pc的平臺的鼠標點擊和拖動操作、用于基于混合現實眼鏡的平臺的抓取和移動操作等),并且以特定于每個用戶的平臺的方式實現動作。例如,可以分析用于基于pc的平臺的鼠標點擊和拖動操作,并且可以將鼠標點擊和拖動操作的結果實現為用于基于混合現實眼鏡的平臺的抓取和移動操作,反之亦然。因此,本文中公開的系統和方法可以通過以下方式來作為不同類型的平臺之間的中介:分析每個平臺上的各種操作,將每個平臺上的操作轉換成例如中間規范格式,并且以特定于每個平臺的方式在每個平臺上實現不同類型的分析的操作。
本文中公開的基于多平臺的體驗生成系統和基于多平臺的體驗生成的方法提供了與例如包括第一設備平臺類型的一個設備上的虛擬對象的固有屬性以及包括第二(且不同的)設備平臺類型的另一設備上的虛擬對象修改有關的技術問題的技術解決方案。本文中公開的系統和方法還提供了與例如包括與對虛擬對象的操作相關聯的不同平臺類型的不同設備之間的通信有關的技術問題的技術解決方案。本文中公開的系統和方法還提供了與例如包括不同平臺類型的設備上的虛擬對象的操作的控制有關的技術問題的技術解決方案。本文中公開的系統和方法還提供以下技術益處:減少了實現多平臺應用所需的機器可讀指令并且減少了不同平臺上的體驗之間的潛在故障點。例如,通過使用本文中公開的系統和方法的框架,可以減少關于不同類型的兩個平臺之間的通信的同步錯誤,因為平臺是從相同的機器可讀指令庫構建的。本文中公開的系統和方法可以以減少的錯誤可能性向開發者以及接收體驗的用戶提供技術益處。本文中公開的系統和方法還可以提供其他技術益處,包括改進現實性,補償減少的或最小的硬件能力,或利用增強的硬件能力。在這一點上,鑒于這些硬件特性,關于設備的硬件特性和改進現實性和/或促進用戶交互,在執行系統時,系統可以首先確定系統正在通過其或在其上被執行的設備。與設備有關的考慮可以包括(但不限于)屏幕類型(例如,平面屏幕、三維平面屏幕顯示器、立體平面屏幕、僅立體顯示器等)、屏幕分辨率、執行系統的相關聯的圖形卡和處理器的功率、以及任何附接的控制設備(例如,鼠標、鍵盤、操縱桿、控制器、棒等)。使用該信息,本文中公開的系統和方法可以根據由本文中公開的系統和方法的框架提供的一組內置規則以及由應用開發者提供并且被編寫以負責系統框架的類和方法的一組應用特定的定制書寫規則來改變用戶的體驗。這些方面可以提供對設備上的系統操作的調整,從而提供改進的用戶體驗。
根據示例,本文中公開了一種基于多平臺的體驗生成系統,其可以包括設備分析器,設備分析器由至少一個硬件處理器執行以確定提供與虛擬現實有關的服務(例如,虛擬現實本身、混合現實、增強現實、以及一般地與現實的修改有關的任何類型的服務)的連接的設備的集合。由至少一個硬件處理器執行的平臺分析器可以確定每個連接的設備的平臺類型。由至少一個硬件處理器執行的玩家系統輸入通信器可以接收對連接的設備的集合中的一個連接的設備上的虛擬對象的固有屬性(例如,位置、旋轉角度、材料、密度等以及一般地特定于虛擬對象的任何屬性)的修改(例如,位置、旋轉角度、內容等的改變)的指示。由至少一個硬件處理器執行的動作生成器可以基于對虛擬對象的固有屬性的修改的接收到的指示來生成對虛擬對象的主版本的修改。由至少一個硬件處理器執行的玩家系統輸出通信器可以基于連接的設備的集合中的另一連接的設備的平臺類型并且基于對虛擬對象的主版本的修改來生成對連接的設備的集合中的另一連接的設備上的虛擬對象的固有屬性的修改的指示。連接的設備的集合中的一個連接的設備上的虛擬對象可以與連接的設備的集合中的另一連接的設備上的虛擬對象大體上相同。
本文中公開的系統和方法可以包括各種應用、例如導航、模擬等、以及實際上可以應用混合現實、虛擬現實和/或增強現實的任何環境。通常,本文中公開的系統和方法可以包括與三維設計、機器修理和維護以及任何遠程協作工作有關的任何應用(例如,其中不同位置處的不同人員必須一起工作,諸如用于機器修理的協作引導)。對于本文中公開的系統和方法,可以根據需要添加各種定制操作。例如,如果機器零件要被著色以識別修理狀態,則本文中公開的系統和方法可以被定制為添加機器可讀指令以設置與機器零件的顏色陰影有關的規則。在這一點上,根據示例,可以向個人計算機上的遠程專家提供確定機器零件是否需要服務的權限(例如,基于維護計劃)。此外,可以添加虛擬機模型,其中虛擬機模型可以包括顏色作為將針對所有用戶改變的固有屬性(如本文中公開的)。因此,通過定制本文中公開的系統和方法,并且還包括定制的規則集(僅允許專家改變顏色)和顏色改變腳本,本文中公開的系統和方法可以提供協作功能。
圖1示出了根據本公開的示例的基于多平臺的體驗生成系統100(例如,如本文中公開的系統100)。參考圖1,系統100可以包括確定提供與虛擬現實有關的服務的連接的設備的集合104的設備分析器102(其中設備分析器可以由至少一個硬件處理器(例如,圖10的處理器1002)執行),或者,設備分析器可以被指定為設備硬件分析器)。與虛擬現實有關的服務的示例包括虛擬現實本身、混合現實、增強現實以及一般地與現實的修改有關的任何類型的服務。對于圖1的示例,連接的設備104可以被指定為到連接的設備(n)的連接的設備(a)。連接的設備104中的每個設備可以包括如本文中公開的虛擬對象,或者連接的設備104中的一些設備可以包括特定于特定體驗的虛擬對象。
平臺分析器106(其中平臺分析器可以由至少一個硬件處理器執行,或者,平臺分析器可以被指定為平臺硬件分析器)可以確定每個連接的設備104的平臺類型。平臺類型可以包括能力和功能,諸如輸入特性、輸出特性、處理功率和存儲容量特性。例如,基于pc的平臺類型可以包括基于鍵盤和鼠標的輸入特性,而移動電話平臺類型可以包括基于觸摸屏的輸入特性,并且混合現實平臺類型可以包括基于姿勢的輸入特性。基于pc的平臺類型和移動電話平臺類型可以包括基于屏幕的輸出特性,而混合現實平臺類型可以包括基于三維顯示的輸出特性。因此,通常,輸入特性可以包括觸摸屏、鍵盤、鼠標、操縱桿,輸出特性可以包括屏幕尺寸、以ghz為單位測量的處理功率以及處理器特性(例如,架構),并且存儲容量特性可以包括存儲類型以及容量。每個平臺類型可以是上述的組合。
玩家系統輸入通信器108(其中玩家系統輸入通信器可以由至少一個硬件處理器執行,或者,玩家系統輸入通信器可以被指定為玩家系統輸入硬件通信器)可以接收對連接的設備的集合104中的一個(例如,一個連接的設備)上的虛擬對象110的固有屬性(例如,位置、旋轉角度、材料、密度等以及一般地特定于虛擬對象的任何屬性)的修改(例如,位置、旋轉角度等的改變)的指示。對于圖1的示例,僅出于說明目的,將虛擬對象110示出為在連接的設備104(a)上,但是虛擬對象110可以在連接的設備104(a)到104(n)中的任何一個設備上。關于玩家系統輸入通信器108,平臺類型可以用于例如基于平臺類型的上述輸入特性來生成對虛擬對象110的固有屬性的修改的指示。例如,基于pc的平臺類型通常可以提供虛擬對象110在二維平面(或三維,如果可用)中的移動,而基于混合現實的平臺類型可以提供虛擬對象110在三維空間中的移動。
動作生成器112(其中,動作生成器可以由至少一個硬件處理器執行,或者動作生成器可以被指定為動作硬件生成器)可以基于對虛擬對象110的固有屬性的修改的接收到的指示來生成對虛擬對象114的主版本的修改。虛擬對象114的主版本可以包括虛擬對象114在虛擬空間中的位置和虛擬空間的定義。虛擬對象114的主版本可以關于其固有屬性(例如,位置、旋轉角度、材料、密度等以及一般地特定于虛擬對象114的主版本的任何屬性)來表征。虛擬對象114的主版本可以不同于連接的設備104中的虛擬對象的版本,因為連接的設備104中的虛擬對象的版本在被更新以包括對被包括在虛擬對象114的主版本中的固有屬性的修改之前可以不同于(例如,未更新)虛擬對象114的主版本。
玩家系統輸出通信器116(其中玩家系統輸出通信器可以由至少一個硬件處理器執行,或者,玩家系統輸出通信器可以被指定為玩家系統輸出硬件通信器)可以基于連接的設備的集合104中的另一個(例如,另一連接的設備)的平臺類型并且基于對虛擬對象114的主版本的修改來生成對連接的設備的集合104中的另一連接的設備上的虛擬對象118的固有屬性的修改的指示。連接的設備的集合104中的一個連接的設備上的虛擬對象110可以與連接的設備的集合104中的另一連接的設備上的虛擬對象118大致相同。關于“大致相同”的方面,連接的設備的集合104中的一個連接的設備上的虛擬對象110可以基于相應的連接的設備的能力來包括連接的設備的集合104中的另一連接的設備上的虛擬對象118的屬性。例如,如果連接的設備不能夠顯示虛擬對象的某個屬性(例如,某種顏色),在這種情況下,連接的設備的集合104中的一個連接的設備上的虛擬對象110可以包括所有的除了不能被顯示的屬性之外的連接的設備的集合104中的另一連接的設備上的虛擬對象118的屬性。對于圖1的示例,僅出于說明的目的,虛擬對象118被示出為在連接的設備104(n)上,但是虛擬對象118可以在連接的設備104(a)到104(n)中的任何一個上。
根據示例,玩家系統輸出通信器116可以基于連接的設備的集合104中的另一連接的設備的平臺類型并且基于對虛擬對象114的主版本的修改通過以下方式來生成對連接的設備的集合104中的另一連接的設備上的虛擬對象118的固有屬性的修改的指示:分析相對于全局錨點的對虛擬對象114的主版本的修改,以及基于連接的設備的集合104中的另一連接的設備的平臺類型并且基于相對于全局錨點的對虛擬對象114的主版本的修改,生成相對于連接的設備的集合104中的另一連接的設備上的全局錨點的對虛擬對象118的固有屬性的修改的指示。
根據示例,玩家系統輸出通信器116可以基于連接的設備的集合104中的另一連接的設備的平臺類型并且基于對虛擬對象114的主版本的修改通過以下方式來生成連接的設備的集合104中的另一連接的設備上的虛擬對象118的固有屬性的修改的指示:基于連接的設備的集合104中的另一連接的設備的平臺類型確定連接的設備的集合中的另一連接的設備執行對連接的設備的集合104中的另一連接的設備上的虛擬對象118的固有屬性的修改的能力,基于連接的設備的集合104中的另一連接的設備執行對連接的設備的集合104中的另一連接的設備上的虛擬對象118的固有屬性的修改的能力來更新對連接的設備的集合104中的一個連接的設備上的虛擬對象110的固有屬性的修改,以及基于對連接的設備的集合104中的一個連接的設備上的虛擬對象110的固有屬性的修改的更新并且基于對虛擬對象114的主版本的修改來生成對連接的設備的集合104中的另一連接的設備上的虛擬對象118的固有屬性的修改的指示。
用戶特定的屬性管理器120(其中用戶特定的屬性管理器可以由至少一個硬件處理器執行,或者,用戶特定的屬性管理器可以被指定為用戶特定的屬性硬件管理器)可以基于連接的設備的集合104中的另一連接的設備的平臺類型來協調與連接的設備的集合104中的另一連接的設備有關的用戶特定的屬性的管理。
根據示例,連接的設備的集合104中的一個連接的設備上的虛擬對象110的固有屬性可以包括連接的設備的集合104中的一個連接的設備上的虛擬對象110的位置(旋轉角度或任何其他類型的屬性),連接的設備的集合104中的另一連接的設備上的虛擬對象118的固有屬性可以包括連接的設備的集合104中的另一連接的設備上的虛擬對象118的相應移動。
根據示例,連接的設備的集合104中的一個連接的設備的平臺類型和連接的設備的集合104中的另一連接的設備的平臺類型可以選自:pc、混合現實系統、移動電話、虛擬現實眼鏡或與虛擬現實有關的任何其他類型的平臺,并且連接的設備的集合104中的一個連接的設備的平臺類型可以不同于連接的設備的集合104中的另一連接的設備的平臺類型。在這一點上,系統100可以基于用戶正在使用的設備來提供對請求對虛擬對象114的主版本的改變的不同輸入方法的處理。
根據示例,虛擬對象114的主版本可以相對于全局錨點在空間中被定位。根據示例,全局錨點可以包括例如用于pc平臺類型設備的虛擬結構(例如,虛擬二維平臺)。根據示例,全局錨點可以包括例如用于混合現實平臺類型設備的真實結構(例如,表格)。根據示例,連接的設備的集合104中的一個連接的設備上的虛擬對象110相對于連接的設備的集合104中的一個連接的設備上的全局錨點的坐標可以與連接的設備的集合104中的另一連接的設備上的虛擬對象118相對于連接的設備的集合104中的另一連接的設備上的全局錨點的坐標相同。
系統100可以通過實現完全開放模式或鎖定模式來提供對不同的連接的設備104之間的同時修改的處理。在完全開放模式下,任何連接的設備104可以隨時請求對其虛擬對象的改變。兩個連接的設備104可以嘗試同時改變相同的虛擬對象。這將導致虛擬對象114的主版本的改變,其反映這些請求到達存儲虛擬對象114的主版本的系統100的順序。在鎖定模式下,當特定的連接的設備104當前正在發送修改更新時,存儲虛擬對象114的主版本的系統100可以忽略修改虛擬對象114的主版本的請求。
如本文中公開的,設備可以不包括對由另一設備執行的虛擬對象執行修改的能力。在這一點上,不同的用戶可以根據他們使用的平臺而包括不同的控件和能力。例如,關于油氣設置——其中戴著混合現實眼鏡的現場工作人員正在試圖在基于pc的平臺由遠程專家的教導下修理鉆機,遠程專家可能想要看到來自現場工作者的相機饋送,但是現場工作者可能不想查看遠程專家的桌面。因此,只有遠程專家憑借其基于pc的平臺和角色可以被允許以打開視頻饋送。
圖2示出了根據本公開的示例的用于基于pc的平臺的系統100的各個體驗。
參考圖2,對于基于pc的平臺,系統100的用戶可以在pc用戶界面(ui)顯示器200上查看虛擬對象(例如,共享的虛擬對象)。對于圖2的示例,虛擬對象可以包括可移動對象202(例如,蘇打水罐),其可以通過使用例如鼠標點擊和拖動操作在各種方向(例如,圖2的取向中的x方向和y方向)上移動。可移動對象202可以例如錨定在由虛擬2d平面表示的全局錨點204中。對于基于pc的平臺,虛擬2d平面可以相對于虛擬原點被定位,并且可移動對象202可以相對于虛擬2d平面被顯示和移動。例如,可以相對于用于最初在基于pc的平臺中生成可移動對象202的布局的虛擬相機位置來定義虛擬原點。因此,在初始化基于pc的平臺時,對于圖2的示例,pcui顯示器200可以包括被顯示在虛擬2d平面的中央的可移動對象202(例如,蘇打水罐)。
圖3示出了根據本公開的示例的用于基于混合現實的平臺的系統100的各個體驗。
參考圖3,與圖2的基于pc的平臺相比,用于圖3的基于混合現實的平臺的可移動對象300可以連接到由真實世界表面(例如,表格)表示的全局錨點302。對于圖3的示例,可移動對象300可以布置在真實世界表面(例如,桌子)上,并且例如通過使用抓取和移動操作來移動。對于基于混合現實的平臺,全局錨點302可以相對于基于混合現實的平臺的用戶站立或坐著和觀看的原點被定位。因此,在初始化基于混合現實的平臺時,對于圖3的示例,混合現實ui顯示器304可以包括被顯示在全局錨點302(例如,由表格表示)的中央的可移動對象300(例如,蘇打水罐)。如果在基于混合現實的平臺的初始化期間,基于混合現實的平臺的用戶正在查看與全局錨點302(例如,由表格表示)不同的位置,則系統100可以重新校準(例如,通過基于與全局錨點302和沿著用戶視線的虛擬錨點的確定距離進行移位)混合現實ui顯示器304中的全局錨點302的坐標,以相對于全局錨點302適當地定位可移動對象300。
因此,全局錨點可以被描述為相對于其標記可移動對象的協定的坐標,而不考慮平臺類型。對于圖2和圖3的示例,如果基于混合現實的平臺用戶正在與用于基于pc的平臺的相機觀察相同的方向,則用于基于pc的平臺和基于混合現實的平臺的全局錨點可以包括基于pc的ui顯示器200中或基于混合現實的ui顯示器304(或另一類型的ui顯示器)中的相同的坐標,或者如果基于混合現實的平臺用戶正在與用于pc的相機觀察不同的方向,則上述二者可以包括不同的坐標。如果需要,調整(例如,通過重新校準)不同平臺類型的全局錨點的坐標的一次,可移動對象可以相對于相應設備的全局錨點被布置在相同坐標處。對于圖2和圖3的示例,可移動對象202和300可以相對于用于基于pc的ui顯示器200和基于混合現實的ui的全局錨點布置在相同的相對坐標(例如,0,0)處。關于圖2和圖3,盡管全局錨點針對基于pc的平臺和基于混合現實的平臺被描述為不同的全局錨點,以便于對全局錨點的描述,但是全局錨點實際上是取決于平臺類型(例如,對于圖2的示例的虛擬2d平面和對于圖3的示例的表格表面)被不同地定位和/或定義的單個全局錨點。
對于圖2和圖3的示例,對于在不同平臺類型之間共享的對象(例如,虛擬對象),這樣的虛擬對象可以被突出顯示為被共享。此外,對于沒有被共享的對象(例如,圖3的真實表格),這樣的真實對象可以在混合現實ui顯示器中被識別,而沒有被標記為被共享。
圖4示出根據本公開的示例的用于基于多平臺的體驗生成系統100的共享體驗、特別是共享的內容和不共享的內容以及共享固有屬性的流程圖。
對于圖4的示例,描述了基于混合現實的平臺與基于pc的平臺之間的體驗共享。在400,基于混合現實的平臺的用戶可以使用相對于全局錨點(由表格來表示)的抓取姿勢拖動虛擬對象(例如,可移動對象402)。在404,系統100可以從基于混合現實的平臺接收移動數據(即,位置變化、旋轉角度等),其中移動數據可以包括可移動對象402的固有屬性的變化的指示。固有屬性可以被描述為在所有平臺類型上相同的屬性。對于圖4的示例,移動數據可以包括由動作生成器112用來改變可移動對象406相對于全局錨點(其可以被指定為系統100的主全局錨點)的位置的指示。動作生成器112可以更新可移動對象406相對于全局錨點(即,主全局錨點)的固有屬性(例如,位置),并且進一步更新所有連接的用戶。此外,動作生成器112可以保留可移動對象406的所有固有屬性的主列表。在408,假設連接的用戶包括基于pc的平臺用戶,則基于pc的平臺用戶可以看到虛擬對象(例如,可移動對象410)相對于全局錨點(由虛擬平面表示)移動到新的位置。
動作生成器112可以協調用戶特定的屬性的管理。參考圖4,在404,系統100可以從基于混合現實的平臺接收移動數據,其中移動數據可以提示(例如,顯式地或隱式地)動作生成器112協調對相關聯的用戶特定的屬性的管理。例如,關于運動,對于基于混合現實的平臺,可以針對正在執行抓取和移動操作的基于混合現實的平臺用戶突出顯示可移動對象402,而沒有針對其他平臺類型突出顯示可移動對象(例如,可移動對象410)。
關于如本文中參考圖4所公開的固有屬性的共享,固有屬性可被描述為在所有平臺類型上相同的屬性。關于位置數據的共享,可以顯示對象(例如,可移動對象402、406或410)相對于全局錨點(表格、主或虛擬平面)的位置。全局錨點可以被適當地獨立地定位在每個設備上。對于圖4的示例,在基于pc的平臺上,全局錨點(例如,虛擬平面)可以定位在用于基于pc的ui顯示器的屏幕的中心上,并且在基于混合現實的平臺上,全局錨點(例如,表格表面)可以定位現實世界對象,諸如桌子或架子(或以其他方式由其表示)。如本文關于圖4所公開的,動作生成器112可以使用全局錨點來更新可移動對象相對于全局錨點的固有屬性(例如,位置),并且進一步更新所有連接的用戶。
圖5示出了根據本公開的示例的用于實現基于多平臺的體驗生成系統100的共享的多平臺體驗的框架。
參考圖5,對于用于實現共享的多平臺體驗的框架,對于系統100和/或對于連接的設備104,如500所示,用戶可以被表示為玩家對象,其具有放置在虛擬世界中的相機。玩家對象可以包括跨越所有平臺公共的一些控件,但是可以基于與玩家對象相關聯的顯示的細節來補充他們的控件。例如,在基于混合現實的平臺上用手指指向可以執行與基于pc的平臺上的鼠標點擊相同的動作。因此,如502所示,“玩家”、“系統通信器”和“玩家控制器”可以表示可以附接到玩家對象的邏輯層。“玩家”層可以包括由玩家正在使用的諸如名稱和顯示類型(例如,基于pc的、基于混合現實的、基于移動設備的等)等數據。“玩家控制器”層可以提供關于玩家如何與虛擬對象接口的指令。例如,根據顯示類型,可以啟用不同的控件(例如,基于pc的玩家控件、基于混合現實設備的玩家控件、基于虛擬現實眼鏡的玩家控件等)。此外,“系統通信器”層(在設備上)可以提供玩家與系統100之間的通信。
如504所示,對于系統100和/或連接的設備104,可以在真實世界中表示虛擬對象。虛擬對象可以包括不同的行為、表示的動作,這取決于它們代表什么。動作的示例可以包括移動、旋轉、改變大小、改變顏色、針對不同的虛擬對象切換虛擬對象、產品特定的動作(例如,打開罐頭)等。動作可以包括某些共同的元素,但是基于平臺類型或玩家可以包括不同的控件或不同的效果。如506所示,“虛擬對象”、“可保存”和“可動作”可以表示可附接到虛擬對象的邏輯層。“虛擬對象”層可以包括虛擬對象的諸如名稱、對象類型和材料等數據。根據動作,可以改變“虛擬對象”層的部件。“可節省”層可以提供以特定格式保存虛擬對象。在“可動作的”下,例如在“可動作的pc”、“可動作的mr設備”、“可動作的虛擬現實眼鏡”等下,基于平臺類型或玩家可以包括不同的控件或不同的效果。例如,對于基于pc的平臺,移動(例如,改變位置、旋轉角度等)由“可動作pc”塊實現的虛擬對象這一動作可以包括選擇虛擬對象并且通過鼠標選擇/拖動操作來移動虛擬對象。對于基于虛擬現實眼鏡的平臺,移動由“可動作虛擬現實眼鏡”塊實現的虛擬對象這一動作可以包括通過注視虛擬對象來移動虛擬對象以及基于眼睛移動來移動虛擬對象。
動作生成器112可以實現不同平臺的不同ui顯示器之間共享內容以及實現多平臺體驗。例如,平臺類型可以包括被設計為滿足平臺的需要的特定ui布局。動作生成器112可以結合各種“玩家控制器”層操作以提供關于玩家如何與虛擬對象接口的指令。動作生成器112可以實現拖放操作,其中拖放操作可以用于導入要使用的任何類型的虛擬對象。如果需要定制動作,則這樣的操作可以基于現有動作的模板。動作生成器112可以消除對用于針對特定顯示器(例如,基于pc的顯示器、基于混合現實的顯示器等)進行調整的改變寫入特定機器可讀指令的需要。動作生成器112可以消除編寫用于跟蹤對象的固有屬性的特定機器可讀指令的需要(例如,如本文中參考圖4關于可移動對象406的固有屬性所公開的)、統一地在多個設備上運轉的玩家相機(例如,如本文中參考圖4關于全局錨點所公開的)、以及實現聯網能力以包括多個不同設備來共享場景(例如,如本文中參考圖4關于基于混合現實的平臺和基于pc的平臺所公開的)。此外,動作生成器112可以為每個顯示環境中的每個動作實現定制行為。
圖6示出了根據本公開的示例的用于基于多平臺的體驗生成系統100的動作鏈。
參考圖6,動作鏈的示例可以包括使用特定設備類型(表示為“玩家a設備”)的玩家a和使用不同設備類型(表示為“玩家b設備”)的玩家b。雖然圖6的示例用玩家a設備和玩家b設備來示出,但是動作鏈可以包括多個玩家。此外,盡管圖6的示例示出了玩家a設備執行為玩家b設備傳送和更新的動作,但是動作鏈的方向可以在任何玩家設備之間執行。對于圖6的示例,當玩家a對虛擬對象執行動作時,動作可以開始。由玩家控制器層檢測到的玩家a的動作可以觸發經由玩家a設備上的系統通信器從玩家a設備到玩家系統輸入通信器108的通信。玩家a設備可以對虛擬對象執行動作(例如,經由玩家a設備上的可動作層)。玩家系統輸入通信器108還可以對系統100執行動作以維持虛擬對象的當前狀態(例如,主版本)。在這一點上,在系統100處對虛擬對象的動作的執行(例如,經由動作生成器112)可以觸發與其他連接的玩家(例如,圖6的示例的玩家b設備)的通信以適當地更新連接的玩家設備上的虛擬對象的固有變量。因此,所有其他玩家、諸如示例場景中的玩家b設備可以從玩家系統輸出通信器116接收信息,以將其虛擬對象更新為與在玩家a設備上執行的改變同步。對于玩家b設備,玩家系統輸出通信器116可以與玩家b設備的系統通信器通信。因此,在系統100處對虛擬對象執行的動作可以經由在玩家b設備上的動作生成器112(其可以包括可動作層)在玩家b設備上執行以更新玩家b設備上的虛擬對象從而與在玩家a設備上執行的改變同步。
圖7示出了根據本公開的示例的用于在設備(例如,連接的設備104中的一個)中實現系統100的特征的架構。
參考圖7,“顯示信息”層700可以確定系統100的設備的顯示類型。由“顯示信息”層確定的顯示類型可以被饋送到玩家層702和ui層704。玩家層702可以保持關于用戶(例如,如本文中公開的玩家對象)的信息,諸如姓名、位置、標題等。ui層704可以提供顯示器對由玩家使用的設備平臺的細節的適應。與ui層相關聯的“玩家控制器”層706可以執行與ui顯示器上的信息和/或虛擬對象的顯示有關的各種功能,而與玩家層相關聯的“玩家控制器”層708可以執行與虛擬對象的移動有關的功能。在這一點上,“玩家控制器”層可以被包括在處理所有輸入(例如,鍵盤、按鈕、鼠標、姿勢、語音等)的控制層710中。“系統通信器”層712可以提供玩家與系統100之間的通信。“虛擬對象”層714可以包括虛擬對象的諸如名稱、對象類型和材料等數據。根據動作,可以改變“虛擬對象”層的組成。“可節省”層716可以提供以特定格式保存虛擬對象。“可抓取”層718和“可選擇”層720可以分別提供要給在場景中移動的對象和要相對于對象顯示的數據。可以分別提供“加載會話”、“開始會話”和“加入會話”層用于從存儲器加載場景,開始新的會話并且加入正在進行的會話。在722,當通過在700處使用“顯示信息”層檢查來創建虛擬對象時,可以添加顯示特定的行為。
如本文中描述的,系統100的元件可以是存儲在非瞬態計算機可讀介質上的機器可讀指令。另外或替代地,系統100的元件可以是硬件或者機器可讀指令和硬件的組合。
圖8和圖9分別示出根據示例的用于基于多平臺的體驗生成的方法800和900的流程圖。方法800和900可以通過示例而非限制的方式在上面參考圖1至圖7描述的系統100上實現。方法800和900可以在其他系統中實踐。
參考圖1至圖8、特別是圖8,在框802,方法800可以包括確定(例如,通過平臺分析器106)提供與虛擬現實有關的服務的多個連接的設備104中的每個連接的設備的平臺類型。
在框804,方法800可以包括(例如,由玩家系統輸入通信器108)接收對多個連接的設備104中的一個連接的設備上的虛擬對象(例如,虛擬對象110)的固有屬性的修改的指示。
在框806,方法800可以包括基于對虛擬對象的固有屬性的修改的接收到的指示來生成(例如,通過動作生成器112)對虛擬對象114的主版本的修改。
在框808,方法800可以包括基于多個連接的設備104中的另一連接的設備的平臺類型并且基于對虛擬對象114的主版本的修改通過以下方式來生成(例如,由玩家系統輸出通信器116)對多個連接的設備104中的另一連接的設備上的虛擬對象118的固有屬性的修改的指示:分析相對于全局錨點的虛擬對象114的主版本的修改,以及基于多個連接的設備104中的另一連接的設備的平臺類型并且基于相對于全局錨點的對虛擬對象114的主版本的修改來生成相對于多個連接的設備104中的另一連接的設備上的全局錨點的對虛擬對象118的固有屬性的修改的指示。
根據示例,對于方法800,多個連接的設備104中的一個連接的設備上的虛擬對象110的固有屬性可以包括多個連接的設備104中的一個連接的設備上的虛擬對象110的位置或旋轉角度(例如,相對于二維或三維坐標系),并且多個連接的設備104中的另一連接的設備上的虛擬對象118的固有屬性可以包括多個連接的設備中的另一連接的設備上的虛擬對象的相應的移動或旋轉。
根據示例,對于方法800,多個連接的設備104中的一個連接的設備的平臺類型和多個連接的設備104中的另一連接的設備的平臺類型可以選自個人計算機(pc)、混合現實系統、移動電話和虛擬現實眼鏡,并且多個連接的設備104中的一個連接的設備的平臺類型可以不同于多個連接的設備104中的另一連接的設備的平臺類型。
根據示例,方法800還可以包括相對于虛擬對象114的主版本的全局錨點在空間中定位虛擬對象114的主版本,其中多個連接的設備104中的一個連接的設備上的虛擬對象110相對于多個連接的設備104中的一個連接的設備上的全局錨點的坐標可以與多個連接的設備104中的另一連接的設備上的虛擬對象118相對于多個連接的設備104中的另一連接的設備上的全局錨點的坐標相同。
根據示例,對于方法800,基于多個連接的設備104中的另一連接的設備的平臺類型并且基于對虛擬對象114的主版本的修改來生成對多個連接的設備104中的另一連接的設備上的虛擬對象118的固有屬性的修改的指示還可以包括基于多個連接的設備104中的另一連接的設備的平臺類型來確定多個連接的設備104中的另一連接的設備執行對多個連接的設備中的另一連接的設備上的虛擬對象118的固有屬性的修改的能力,基于多個連接的設備104中的另一連接的設備執行對多個連接的設備104中的另一連接的設備上的虛擬對象118的固有屬性的修改的能力來更新對多個連接的設備104中的一個連接的設備上的虛擬對象110的固有屬性的修改,以及基于對多個連接的設備104中的一個連接的設備上的虛擬對象110的固有屬性的修改的更新并且基于對虛擬對象114的主版本的修改來生成對多個連接的設備104中的另一連接的設備上的虛擬對象118的固有屬性的修改的指示。
參考圖1至圖7和9、特別是圖9,在框902,方法900可以包括確定(例如,通過平臺分析器106)提供與虛擬現實有關的服務的多個連接的設備104中的每個連接的設備的平臺類型。
在框904,方法900可以包括(例如,由玩家系統輸入通信器108)接收對多個連接的設備中的一個連接的設備上的虛擬對象(例如,虛擬對象110)的固有屬性的修改的指示。
在框906,方法900可以包括基于對虛擬對象的固有屬性的修改的接收到的指示來生成(例如,通過動作生成器112)對虛擬對象114的主版本的修改。
在框908,方法900可以包括基于多個連接的設備104中的另一連接的設備的平臺類型并且基于對虛擬對象的主版本的修改通過以下方式來生成(例如,由玩家系統輸出通信器116)對多個連接的設備104中的另一連接的設備上的虛擬對象118的固有屬性的修改的指示:關于全局錨點在空間中定位虛擬對象114的主版本,分析相對于全局錨點的對虛擬對象114的主版本的修改,并且基于多個連接的設備104中的另一連接的設備的平臺類型并且基于相對于全局錨點的對虛擬對象114的主版本的修改來生成相對于多個連接的設備104中的另一連接的設備上的全局錨點的對虛擬對象118的固有屬性的修改的指示。多個連接的設備104中的一個連接的設備上的虛擬對象110相對于多個連接的設備104中的一個連接的設備上的全局錨點的坐標可以與多個連接的設備104中的另一連接的設備上的虛擬對象118相對于多個連接的設備104中的另一連接的設備上的全局錨點的坐標相同。
根據示例,方法900還可以包括基于多個連接的設備104中的另一連接的設備的平臺類型來協調與多個連接的設備104中的另一連接的設備有關的用戶特定的屬性的管理。
根據示例,對于方法900,用戶特定的屬性可以包括:當多個連接的設備104中的一個連接的設備上的虛擬對象110沒有被突出顯示時,突出顯示多個連接的設備104中的另一連接的設備上的虛擬對象118。
根據示例,對于方法900,用戶特定的屬性可以包括:當多個連接的設備104中的一個連接的設備上的虛擬對象110被突出顯示時,不突出顯示多個連接的設備104中的另一連接的設備上的虛擬對象118。
圖10示出了可以與本文中描述的示例一起使用的計算機系統1000。計算機系統可以表示包括可以在服務器或另一計算機系統中的部件的通用平臺。計算機系統1000可以用作系統100的平臺。計算機系統1000可以通過處理器(例如,單個或多個處理器)或其他硬件處理電路來執行本文中描述的方法、功能和其它處理。這些方法、功能和其他處理可以實施為存儲在計算機可讀介質上的機器可讀指令,計算機可讀介質可以是非瞬態的,諸如硬件存儲設備(例如,ram(隨機存取存儲器)、rom(只讀存儲器)、eprom(可擦除可編程rom)、eeprom(電可擦除可編程rom)、硬盤驅動器和閃存)。
計算機系統1000可以包括處理器1002,處理器1002可以實現或執行本文中所描述的方法、功能和其他處理中的一些或全部的機器可讀指令。來自處理器1002的命令和數據可以通過通信總線1004來傳送。計算機系統還可以包括主存儲器1006和輔助數據存儲裝置1008,主存儲器1006諸如隨機存取存儲器(ram),用于處理器1002的機器可讀指令和數據可以駐留在主存儲器1006中,輔助數據存儲裝置1008可以是非易失性的并且存儲機器可讀指令和數據。存儲器和數據存儲裝置是計算機可讀介質的示例。存儲器1006可以包括基于多平臺的體驗生成器1020,基于多平臺的體驗生成器1020包括在運行時期間駐留在存儲器1006中并由處理器1002執行的機器可讀指令。基于多平臺的體驗生成器1020可以包括參考圖1至圖7所示的基于多平臺的體驗生成系統100的元件。
計算機系統1000可以包括i/o設備1010,諸如鍵盤、鼠標、顯示器等。計算機系統可以包括用于連接到網絡的網絡接口1012。可以在計算機系統中添加或替換其他已知的電子部件。
本文中已經描述和示出的是示例以及其一些變型。本文中使用的術語、描述和附圖僅以說明的方式闡述,而不表示限制。在本主題的精神和范圍內的許多變化是可能的,本主題的精神和范圍旨在由所附權利要求及其等同物限定,在所附權利要求中除非另有說明,否則所有術語是指其最廣泛的合理意義。