共用方式為


設定虛擬人偶移動和遠端傳送

概觀

為了讓 Mesh 虛擬人偶成功在體驗中四處行動和傳送,請務必遵循特定設計指導方針。 本文包含如何設定移動和遠端移植表面的資訊、虛擬人偶移動限制和碰撞器設計等專案的秘訣,以及有關圖層的詳細區段。

虛擬人偶移動指引

場景應該有一個碰撞器,讓虛擬人偶能夠進行逐步解說和傳送。 一般而言,符合視覺幾何的低 Poly Mesh Collider 會產生最佳結果。 Box Colliders 適用於簡單案例,但可能會導致某些問題,例如造成虛擬人偶卡在角落或失敗步驟高度限制。

網格虛擬人偶移動限制:

可行程斜率上限: <45 度
最大步驟高度:0.3
虛擬人偶密封半徑:0.3
虛擬人偶密封高度:2
虛擬人偶高度:1.8

最佳結果的建議:

  • 將碰撞表面與虛擬人偶將逐步解說的視覺表面對齊。 這很重要,以避免虛擬人偶相對於視覺表面的位置發生問題 (,以避免浮動或裁剪) 。

  • 圓角有助於讓虛擬人偶移動順暢,並防止虛擬人偶卡住。

  • 若要封鎖虛擬人偶移動,請使用高於最大步驟高度的斜率或高度。

    • 修改碰撞器的形狀,以建立虛擬人偶周遊自然困難或不可能的表面。 例如,使用 Mesh Collider 搭配不規則的圖形,其不會提供平面或可引導式斜率,讓虛擬人偶能夠運作。

    • 在某些情況下,在對象或區域上,一或多個圓角圖案上,虛擬人偶應該無法進行逐步解說。 如果斜率夠高,而且會導致虛擬人偶滑出,這些圖形將無法移動。

碰撞層

可互動的物件是 GameObjects,其中一個物件碰撞層上有非觸發程式碰撞器和對應的視覺幾何。 虛擬人偶 可以逐步解說並放置在具有非觸發程式碰撞器的物件上,因此請留意正在使用哪一層。

若要有精確的虛擬人偶位置和遠端移植,場景碰撞器必須位於適當的圖層上。 本機用戶的虛擬人偶會與 (碰撞互動,並逐步解說) 支援這些互動之圖層上的任何碰撞器。

當虛擬人偶位於或遠端傳送時,請務必將虛擬人偶與“ground” 物件碰撞,並且一致地放在地面上方 (這稱為「基礎」) 。 如果未偵測到任何地面,則虛擬人偶將會下降。 如果上層 (沒有損毀!) ,但如果虛擬人偶放在「地面」物件下方,則虛擬人偶可能無法註冊與該對象的衝突,導致它脫離環境並重新產生。 如果虛擬人偶在重新定位期間滲透到地面,則會進行基礎處理。

會話中的所有虛擬人偶的高度都應該一致。 如果高度超出範圍,則會調整虛擬人偶位置。 例如:

  • VR 用戶實際上會從基座或月臺位置進入和離開。 HMD 移動會導致場景中的虛擬人偶進入地面或垂直高於其他虛擬人偶。

  • 設定不佳的視覺腳本會將虛擬人偶傳送到不相符或垂直太低的位置。

另一個很重要的原因是,當虛擬人偶物理更新時,如果虛擬人偶未進行地面,它就會因為其星座與地面碰撞而跳到位置,並將虛擬人偶變成新的位置。 這特別對 HMD 使用者造成影響,因為這類非自然的移動可能會造成影響。

階層虛擬人偶會與其互動,並可逐步執行:

0 - 預設值
2 - 忽略 Raycast
4 - 水 (只允許觸發碰撞器,無法進行)
14 - GroundCollision (可傳送)
18 - TriggerVolume (只允許觸發程式碰撞器,無法)
21 - IgnoreObjects
26 - 自定義26
27 - 自定義27
28 - 自定義28
29 - IgnoreRealtimeLight
30 - WallCollision

深入瞭解Mesh專案中的圖層

支援遠端傳送

若要讓場景支持遠端傳送,可移植表面 (例如,樓層或地面) 必須在 GroundCollision 層上具有碰撞器。 還有其他可逐步解說的圖層,但只有 GroundCollision 是可傳送的。 視覺幾何無法傳送,而且不應該位於 GroundCollision 層上;只有碰撞器可以位於該圖層上。 在傳送或尋找地面時,不適當的或不一致的分層和衝突可能會導致不想要的效果。

可傳送的介面必須符合下列條件:

  • 它必須有某種類型的非觸發程式碰撞器附加 (例如 Mesh Collider 或 Box Collider) 。
  • 圖層 必須設定為 GroundCollision

請小心低上限或通道;這些可能會影響虛擬人偶基礎和遠端傳送。 例如,虛擬人偶物理或電報弧可能會交集或與其上方的碰撞器互動。 可周遊區域的從地面到頂點的高度應該超過 2m 的虛擬人偶密封高度。 在虛擬人偶的頭部上方需要一小個空間緩衝區,特別是當頂板斜率而不是平面時。

定位物理會為所有參與者互動的碰撞器提供平滑的虛擬人偶移動,並防止滲透太小而無法發生虛擬人偶碰撞的區域。 不過,Rogue 地面碰撞或有問題的環境幾何,例如 wedge 圖形或非常窄的空間,可能會導致虛擬人偶或相機滲透物件或卡住。 請務必徹底測試所有可逐步執行和可傳送的表面。

詳細圖層

物件層

當 GameObject 有非觸發程式碰撞器時,如果它位於其中一個物件層上,它就會與其他物件碰撞。

0 - 預設值
2 - 忽略 Raycast
4 - 水 (只允許觸發程式碰撞器)
14 - GroundCollision
18 - TriggerVolume (只允許觸發程式碰撞器)
20 - ObjectCollision
26 - 自定義26
27 - 自定義27
28 - 自定義28
29 - IgnoreRealtimeLight
30 - WallCollision
31 - IgnoreParticipant

Unity 中的預設層 (不會意外地) 名為 “Default”,因此如果您不想與其他物件互動,您可能需要使用不同的圖層。 例如, IgnoreParticipant 用於不應該與虛擬人偶互動的物件, 而 IgnoreCollisions 則用於不應該與任何對象互動的物件。

一些重要的圖層

預設值

如果未指定,則 Collider 將會位於 預設 層次上。 這是可逐步解說的圖層,且虛擬人偶會正確設定。 這不是本機使用者的有效遠端傳送目標。 此層與其他物件互動並衝突。

GroundCollision

只有 GroundCollision 層上的碰撞器是本機使用者的有效遠端傳送目標。 否則會與 預設 圖層相同。

無法透過碰撞支持視覺幾何,且無法封鎖虛擬人偶,因此它是不正確的遠端傳送目標,不應位於 GroundCollision 層。

WallCollision

WallCollision 層用來指出虛擬人偶不應該在可播放的空間內限制虛擬人偶的牆。 VR 使用者可以透過任意方式移動虛擬人偶,在會議室規模定位期間移動其虛擬人偶,而且可以實際逐步執行虛擬牆。 當虛擬人偶經過一段設定距離之後,就會將虛擬人偶傳回播放區域的界限。 此圖層與其他 預設 圖層相同。

層次定義

以下是識別碼和名稱所定義的圖層清單,包括封鎖語意和描述:

  1. Default

    [Avatar/Object/Raycast Blocking]

    用於碰撞和光源。 虛擬人偶可以逐步執行,但無法將其傳送到該虛擬人偶。 大部分屬性的預設值。 默認層上的物件會從環境接收即時方向光線。

  2. TransparentFX

    [未封鎖]

    Unity 轉譯管線中針對透明和特殊效果物件的特殊處理;可確保透明度的正確轉譯順序。

  3. IgnoreRaycast

    [Avatar/Object Blocking]

    已啟用衝突的圖層不會封鎖光線傳播,例如無法互動的物件或虛擬人偶無法傳遞的隱藏牆,但物理物件可以通過 (例如,可以擲回物件的滑軌,但虛擬人偶無法跳) 。

  4. n/a

  5. Water

    [未封鎖]

    特別是水面。 可用於與水的特製化轉譯和物理互動。 請勿搭配非觸發程式碰撞器使用。

  6. n/a

  7. n/a

  8. n/a

  9. n/a

  10. n/a

  11. n/a

  12. n/a

  13. n/a

  14. n/a

  15. GroundCollision

    [Avatar/Object/Raycast Blocking]

    用於可傳送到的可移動碰撞表面。 注意:在舊版的 Mesh Toolkit 中,這是 “NavMesh” 層。

  16. n/a

  17. n/a

  18. IgnoreCollisions

    [未封鎖]

    不會與任何項目互動。 可以透過環境和其他物件裁剪。

  19. TriggerVolume

    [未封鎖]

    不應受到物理或光線傳播影響之物件的圖層,否則不會有特殊用法。 請勿在具有非觸發程式碰撞器的物件上使用。

  20. n/a

  21. ObjectCollision

    [對象封鎖]

    要與物件碰撞,但不是虛擬人偶或光線傳播的圖層。

  22. IgnoreObjects

    [Avatar/Raycast Blocking]

    要與虛擬人偶相衝突但不是物件的圖層。

  23. RaycastOnly

    [Raycast Blocking]

    封鎖光線廣播或可選取之物件的圖層,但不會影響虛擬人偶或物件衝突。

  24. n/a

  25. n/a

  26. n/a

  27. Custom26

    [Avatar/Object/Raycast Blocking]

    使用者自定義定義層。

  28. Custom27

    [Avatar/Object/Raycast Blocking]

    使用者自定義定義層。

  29. Custom28

    [Avatar/Object/Raycast Blocking]

    使用者自定義定義層。

  30. IgnoreRealtimeLight

    [Avatar/Object/Raycast Blocking]

    指定環境中哪些藝術師物件不會收到即時方向光線,例如大部分靜態物件 (會改為使用聲場光源搭配光源) 。

  31. WallCollision

    [Avatar/Object/Raycast Blocking]

    衝突,可防止透過場景裁剪。 如果 HMD 使用者將頭部停留在牆上,則會被寄到可播放區域的鄰近位置。

  32. IgnoreParticipant

    [Object/Raycast Blocking]

    封鎖光線廣播和其他對象的物件,但不會封鎖虛擬人偶。

層次互動和數據表

分層互動

圖層衝突矩陣的螢幕快照。

層次數據表

下列 Layers 數據表中四個色彩代碼的說明。

數據表,顯示所有可用圖層的屬性。