Sdílet prostřednictvím


Konfigurace pro přesun a teleportaci avatara

Přehled

Aby se avatary Mesh mohly ve vašem prostředí úspěšně pohybovat a teleportovat, je důležité dodržovat určitá pravidla návrhu. Tento článek obsahuje informace o tom, jak nastavit plochy pro pohyb a teleportaci, tipy na věci, jako jsou limity pohybu avatarů a návrh uchycení, a podrobný oddíl o vrstvách.

Pokyny k pohybu avatara

Scéna by měla obsahovat kolidéry, na které se avatar může chodit a teleportovat. Obecně platí, že s nízkým poly mesh schytávačem, který těsně odpovídá geometrii vizuálu, dosáhne nejlepších výsledků. Box Colliders fungují skvěle pro triviální scénáře, ale mohou vést k určitým problémům, například způsobit, že avatar uvízne v rozích nebo porazit limity výšky kroku.

Omezení pohybu avatara sítě:

Maximální pochoditelný sklon: <45 stupňů
Maximální výška kroku: 0,3
Avatar kapsle poloměr: 0,3
Výška kapsle avatara: 2
Výška avatara: 1,8

Návrhy pro nejlepší výsledky:

  • Zarovnejte plochy kolizí s vizuálními plochami, po které bude avatar chodit. To je důležité, abyste se vyhnuli problémům s pozicí avatara vzhledem k povrchu vizuálu (aby se zabránilo plovoucím nebo oříznutým).

  • Zaoblené rohy vyhladí pohyb avatara a zabrání tomu, aby se avatar zasekl.

  • Pokud chcete blokovat pohyb avatara, použijte strmé sklony nebo výšku mnohem větší, než je maximální výška kroku.

    • Upravte tvar kolidátorů tak, aby se vytvořily povrchy, které jsou přirozeně obtížné nebo nemožné pro avatara procházet. Použijte například mesh collider s nepravidelným tvarem, který neposkytuje rovnou plochu nebo pochoditelný sklon pro avatara.

    • V některých případech může stačit kapslový uchytač nebo podobný zaoblený tvar na objektech nebo oblastech, po kterých by avatar neměl chodit. Tyto obrazce jsou neprochádnutelné, pokud je sklon dostatečně strmý a způsobí, že avatar zasune.

Vrstvy kolizí

Interagovatelné objekty jsou objekty GameObjects s nespouštějící s colliderem a odpovídající vizuální geometrií na jedné z vrstev kolidujícími s objekty. Avatary můžou chodit a umísťovat se na objekty s nespouštějícími kolidéry, takže mějte na paměti, kterou vrstvu používáte.

Pokud chcete mít přesné umístění avatara a teleportaci, musí být kolidéry scén na příslušných vrstvách. Avatar místního uživatele bude komunikovat se všemi kolidéry ve vrstvách, které tyto interakce podporují, a bude s nimi vyrážovat.

Když je avatar umístěn nebo teleportován, je důležité, aby se srazil s objektem "země" a byl konzistentně umístěn ve stejné výšce nad zemí (to se nazývá "uzemnění"). Pokud se nezjistí žádná země, avatar spadne. To je přijatelné, pokud je nad zemí (nedochází k žádnému padajícímu poškození!), ale pokud je avatar umístěn pod "zemovým" objektem, avatar nemusí zaregistrovat kolizi s tímto objektem, což způsobí, že spadne z prostředí a znovu se ohlásí. Pokud avatar pronikne do země při přemísťování, bude uzemněn.

Všechny avatary v relaci by měly být v konzistentní výšce. Pozice avatara se upraví, pokud se jeho výška změní mimo rozsah. Příklad:

  • Uživatel virtuální reality fyzicky přechází do a z pozice vsedě nebo vestoje. Pohyb HMD způsobí, že avatar ve scéně pronikne do země nebo stojí mnohem výše svisle než ostatní avatary.

  • Špatně nakonfigurovaný vizuální skript teleportuje avatara do pozice, do které se nevejdou nebo je svisle příliš nízký.

Dalším důvodem, proč je to důležité, je, že při aktualizaci fyziky avatara, pokud avatar není uzemněný, přejde na pozici v důsledku kolize jeho kapsle se zemí a vysunutí avatara do nové pozice. To má dopad zejména na uživatele HMD, protože takové nepřirozené pohyby mohou být nauzeudy.

Vrstvy, se kterými avatar komunikuje a může procházet:

0 – Výchozí
2 – Ignorovat Raycast
4 - Voda (povoleny pouze spoušť, nechodí)
14 - GroundCollision (teleportable)
18 – TriggerVolume (povolené pouze kolidéry triggerů, nejdou procházet)
21 – IgnoreObjects
26. Vlastní26
27. Vlastní27
28 – Vlastní28
29 – IgnoreRealtimeLight
30 . WallCollision

Přečtěte si další informace o vrstvách v projektu Mesh.

Podpora teleportace

Aby scéna podporovala teleportaci, musí mít teleportovatelné povrchy (například podlahu nebo zem) kolidéry na vrstvě GroundCollision . K dispozici jsou i jiné pochozí vrstvy, ale teleportovatelná je pouze GroundCollision . Vizuální geometrie není teleportovatelná a neměla by být ve vrstvě GroundCollision ; Na této vrstvě mohou být pouze kolidéry. Nesprávné nebo nekonzistentní vrstvení a kolize mohou způsobit nežádoucí účinky při teleportování nebo hledání země.

Teleportovatelný povrch musí splňovat následující podmínky:

  • Musí mít připojený nějaký typ neaktivujícího uchytáče (například Mesh Collider nebo Box Collider).
  • Jeho vrstva musí být nastavena na GroundCollision.

Buďte opatrní při nízkých stropech nebo tunelech; to může potenciálně ovlivnit uzemnění avatara a teleportaci. Například fyzika avatara nebo teleportový oblouk se může protínat nebo interagovat s uchycením nad nimi. Výška od země po střechu pro procházitelnou oblast by měla být větší než 2 m výška kapsle avatara. Nad hlavou avatara musí být malý rezerva prostoru, zejména pokud je střecha šikmá místo plochá.

Fyzika lokomoce poskytuje plynulý pohyb avatarů se všemi účastníky interagovatelné kolidéry a zabraňuje průniku do oblastí, které jsou příliš malé pro kolizi avatara. Neautorické kolize země nebo problematická geometrie prostředí, jako jsou klínové tvary nebo velmi úzké prostory, však mohou potenciálně způsobit, že avatar nebo fotoaparát proniknou do objektů nebo se zasekne. Je nezbytné důkladně otestovat všechny pochoditelné a teleportovatelné povrchy.

Podrobné vrstvy

Vrstvy objektů

Pokud má Objekt GameObject neaktivovaný s collider, bude kolizi s jinými objekty, pokud je na jedné z vrstev objektů.

0 – Výchozí
2 – Ignorovat Raycast
4 – Voda (povoleny pouze spouštěcí kolidéry)
14. Zemněnákolí
18 – TriggerVolume (povolené pouze skolíry triggerů)
20 – ObjectCollision
26. Vlastní26
27. Vlastní27
28 – Vlastní28
29 – IgnoreRealtimeLight
30 . WallCollision
31 – Ignorovatparticipant

Výchozí vrstva v Unity se (nečekaně) nazývá "Výchozí", takže pokud nechcete interagovat s jinými objekty, možná budete muset použít jinou vrstvu. Například IgnoreParticipant se používá pro objekty, které by neměly interagovat s avatarem, a IgnoreCollisions se používá pro objekty, které by neměly s ničím interagovat.

Některé důležité vrstvy

Default

Pokud není zadáno jinak, bude uchycený uchycený na výchozí vrstvě. Jedná se o pochostupnou vrstvu a avatar bude správně uzemněn. Není to platný cíl teleportu pro místního uživatele. Tato vrstva komunikuje a koliduje s jinými objekty.

GroundCollision

Pouze kolidátory na vrstvě GroundCollision jsou platnými teleportovacími cíli pro místního uživatele. Jinak je shodná s výchozí vrstvou.

Vizuální geometrie, která není s kolizí, se nedá procházet a neblokuje avatara, takže se jedná o nesprávný teleportovaný cíl a neměl by být ve vrstvě GroundCollision .

WallCollision

Vrstva WallCollision slouží k označení zdí, do které by avatar neměl proniknout, aby se avatar omezil do hratelného prostoru. Uživatelé virtuální reality můžou přesouvat své avatary libovolným způsobem pomocí HMD pohybu během lokomotion roomscale a mohou fyzicky procházet virtuální zeď. Avatar bude teleportován zpět na hranice hrací oblasti poté, co ujde nastavenou vzdálenost. Tato vrstva je jinak shodná s výchozí vrstvou.

Definice vrstev

Následuje seznam vrstev definovaných id a názvem, včetně blokující sémantiky a popisu:

  1. Default

    [Avatar/Object/Raycast Blocking]

    Používá se pro kolize a osvětlení. Avatar po něm může chodit, ale nemůže se na něj teleportovat. Výchozí nastavení pro většinu pomůcek. Objekty ve výchozí vrstvě přijímají směrové světlo v reálném čase z prostředí.

  2. TransparentFX

    [Neblokuje se]

    Speciální zpracování v kanálu vykreslování Unity pro průhledné a speciální efekty objekty; zajišťuje správné pořadí vykreslování z hlediska průhlednosti.

  3. IgnoreRaycast

    [Avatar/Object Blocking]

    Vrstva s podporou kolizí, která neblokuje raycasty, jako jsou neinterabilní objekty nebo neviditelné zdi, které avatary nemohou projít, ale fyzikální objekty mohou projít (například zábradlí, že objekty mohou být přehozeny, ale avatary nemohou přeskakovat).

  4. Není k dispozici

  5. Vody

    [Neblokuje se]

    Speciálně pro vodní plochy. Lze použít pro specializované vykreslování a fyzikální interakce s vodou. Nepoužívejte s nekolidovacími kolidátory bez triggeru.

  6. Není k dispozici

  7. Není k dispozici

  8. Není k dispozici

  9. Není k dispozici

  10. Není k dispozici

  11. Není k dispozici

  12. Není k dispozici

  13. Není k dispozici

  14. Není k dispozici

  15. GroundCollision

    [Avatar/Object/Raycast Blocking]

    Používá se pro pochozí povrchy kolizí, na které lze teleportovat. Poznámka: V dřívějších verzích sady mesh toolkit se jednalo o vrstvu NavMesh.

  16. Není k dispozici

  17. Není k dispozici

  18. IgnoreCollisions

    [Neblokuje se]

    Neinteraguje s ničím. Může vystřihovovat prostředím a dalšími objekty.

  19. TriggerVolume

    [Neblokuje se]

    Vrstva pro objekty, které by neměly být ovlivněny fyzikou nebo paprskovým vysíláním a jinak nemají žádné zvláštní použití. Nepoužívejte u objektů s nekolidovacími kolidéry, které nejsou triggerem.

  20. Není k dispozici

  21. ObjectCollision

    [Blokování objektu]

    Vrstva, která se srazí s objekty, ale ne avatar nebo raycasty.

  22. IgnoreObjects

    [Avatar/Raycast Blocking]

    Vrstva, která se má srazit s avatarem, ale ne s objekty.

  23. RaycastOnly

    [Blokování raycastu]

    Vrstva pro objekty, které blokují raycasty nebo mohou být vybrány, ale nemají vliv na kolizi avatara nebo objektu.

  24. Není k dispozici

  25. Není k dispozici

  26. Není k dispozici

  27. Vlastní26

    [Avatar/Object/Raycast Blocking]

    Uživatelsky definovaná vrstva.

  28. Vlastní27

    [Avatar/Object/Raycast Blocking]

    Uživatelsky definovaná vrstva.

  29. Vlastní28

    [Avatar/Object/Raycast Blocking]

    Uživatelsky definovaná vrstva.

  30. IgnoreRealtimeLight

    [Avatar/Object/Raycast Blocking]

    Určete, které objekty umění v prostředí NEDOSTÁVAJÍ směrové světlo v reálném čase, například většina statických objektů (místo toho použijte zapečené osvětlení pomocí lightmapy).

  31. WallCollision

    [Avatar/Object/Raycast Blocking]

    Kolize, která brání oříznutí scény. Pokud uživatel HMD strčí hlavu přes zeď, je převlečen do blízkého umístění v hratelné oblasti.

  32. Ignorovatparticipant

    [Object/Raycast Blocking]

    Objekty, které blokují raycasty a jiné objekty, ale ne avatary.

Interakce vrstev a tabulka

Interakce vrstev

Snímek obrazovky s maticí kolizí vrstev

Tabulka vrstev

Vysvětlení čtyř barevných kódů v následující tabulce Vrstvy

Tabulka zobrazující atributy všech dostupných vrstev.