Configurazione per lo spostamento e il teletrasporto avatar
Panoramica
Per consentire agli avatar mesh di spostarsi e teletrasportarsi correttamente nell'esperienza, è importante seguire determinate linee guida di progettazione. Questo articolo contiene informazioni su come configurare superfici per il movimento e il teletrasporto, suggerimenti per elementi quali limiti di movimento avatar e progettazione collisori e una sezione dettagliata sui livelli.
Linee guida per lo spostamento avatar
Una scena deve avere Collider per l'avatar per camminare e teletrasportarsi su. In generale, un collisore a rete bassa mesh che si adatta perfettamente alla geometria visiva produrrà i risultati migliori. Box Colliders funziona perfettamente per scenari semplici, ma può causare alcuni problemi, ad esempio causare un blocco dell'avatar sugli angoli o sui limiti di altezza dei passaggi di sconfitta.
Limiti di spostamento avatar mesh:
Pendenza massima camminabile: <45 gradi
Altezza massima del passaggio: 0,3
Raggio della capsula Avatar: 0,3
Altezza capsula Avatar: 2
Altezza avatar: 1,8
Suggerimenti per ottenere risultati ottimali:
Allineare le superfici di collisione con le superfici visive su cui verrà eseguito l'avatar. Questo è importante per evitare problemi con la posizione dell'avatar rispetto alla superficie visiva (per evitare il spostamento o il ritaglio).
Gli angoli arrotondati aiutano a smussare il movimento dell'avatar e impedire all'avatar di rimanere bloccati.
Per bloccare il movimento avatar, usare pendii ripidi o un'altezza molto più grande dell'altezza massima del passo.
Modificare la forma dei collisori per creare superfici che sono naturalmente difficili o impossibili per l'avatar di attraversare. Ad esempio, usare un collisore mesh con una forma irregolare che non fornisce una superficie piatta o un coefficiente angolare che l'avatar deve stare in piedi.
In alcuni casi un Capsule Collider o una forma arrotondata simile su oggetti o aree su cui l'avatar non dovrebbe camminare può essere sufficiente. Queste forme non sono marciabili se il coefficiente angolare è abbastanza ripida e farà scivolare l'avatar.
Livelli di collisione
Gli oggetti interagendo sono GameObject con un collisore non trigger e la geometria visiva corrispondente su uno dei livelli di collisione dell'oggetto. Avatar possibile camminare e posizionarsi su oggetti con collisori non trigger, quindi tenere presente quale livello viene usato.
Per avere un posizionamento e un teletrasportamento dell'avatar accurati, i collisori della scena devono trovarsi sui livelli appropriati. L'avatar dell'utente locale interagisce con (si scontra con e cammina) con qualsiasi collisore sui livelli che supportano queste interazioni.
Quando l'avatar è posizionato o teletrasportato, è importante che l'avatar si scontra con un oggetto "terra" e sia posizionato costantemente alla stessa altezza sopra il terreno (questo è chiamato "terra"). Se non viene rilevato alcun terreno, l'avatar cadrà. Questo è accettabile se al di sopra del terreno (non c'è alcun danno in caduta!), ma se l'avatar è posizionato sotto l'oggetto "terra", l'avatar potrebbe non riuscire a registrare una collisione con tale oggetto, causando la caduta dall'ambiente e riaspawn. Se l'avatar penetra nel terreno durante il riposizionamento, verrà terra.
Tutti gli avatar in una sessione devono avere un'altezza coerente. La posizione dell'avatar viene regolata se l'altezza cambia fuori dall'intervallo. Ad esempio:
Un utente VR passa fisicamente da e verso una posizione seduta o in piedi. Il movimento HMD fa sì che l'avatar nella scena penetra nel terreno o sia in piedi molto più alto rispetto ad altri avatar.
Uno script visivo configurato in modo non adeguato teletrasporta l'avatar in una posizione che non si adatta o è verticalmente troppo bassa.
Un altro motivo è importante è che quando l'avatar si aggiorna, se l'avatar non è a terra, salterà in posizione a causa della sua capsula in collisione con il terreno e strappando l'avatar nella nuova posizione. Questo è particolarmente significativo per gli utenti HMD perché movimenti innaturali come questo possono essere nausea-inducenti.
Livelli con cui l'avatar interagisce e può camminare su:
0 - Impostazione predefinita
2 - Ignora Raycast
4 - Acqua (solo collisori trigger consentiti, non camminabile)
14 - GroundCollision (teleportabile)
18 - TriggerVolume (solo collisori trigger consentiti, non camminabili)
21 - IgnoreObjects
26 - Custom26
27 - Personalizzato27
28 - Custom28
29 - IgnoreRealtimeLight
30 - WallCollision
Altre informazioni sui livelli in un progetto Mesh.
Supporto del teletrasporto
Affinché una scena supporti il teletrasporto, le superfici teletrasportabili (ad esempio, il pavimento o il terreno) devono avere collisori sul livello GroundCollision . Ci sono altri livelli camminabili, ma solo GroundCollision è teletrasportabile. La geometria visiva non è teletrasportabile e non deve essere sul livello GroundCollision ; solo collisori possono trovarsi su quel livello. La sovrapposizione e la collisione non corretta o incoerente possono causare effetti indesiderati durante il teletrasportamento o la ricerca del terreno.
Una superficie teletrasportabile deve soddisfare le condizioni seguenti:
- Deve avere un tipo di collisore non trigger collegato (ad esempio, un collisore mesh o un collisore box).
- Il livello deve essere impostato su GroundCollision.
Prestare attenzione a soffitti bassi o tunnel; questi potrebbero potenzialmente influire sul terreno dell'avatar e sul teletrasporto. Ad esempio, la fisica dell'avatar o l'arco del teleporto possono intersecare o interagire con il collisore sopra di essi. L'altezza da terra a tetto per un'area attraversabile deve essere superiore all'altezza della capsula avatar di 2 m. C'è bisogno di un piccolo buffer di spazio sopra la testa dell'avatar, soprattutto se il tetto è inclinato invece di piano.
La fisica locomozione fornisce un movimento avatar uniforme con tutti i collisori interagendo e impedisce la penetrazione di aree troppo piccole per collisione avatar. Tuttavia, la collisione di terra non autorizzata o la geometria dell'ambiente problematico, ad esempio forme di wedge o spazi molto stretti, può potenzialmente causare l'avatar o la fotocamera penetrare oggetti o rimanere bloccati. È essenziale testare accuratamente tutte le superfici camminabili e teletrasportabili.
Livelli in dettaglio
Livelli oggetto
Quando un GameObject ha un collisore non trigger, si confronterà con altri oggetti se si tratta di uno dei livelli dell'oggetto.
0 - Impostazione predefinita
2 - Ignora Raycast
4 - Acqua (consentiti solo collisori trigger)
14 - GroundCollision
18 - TriggerVolume (consentiti solo collider trigger)
20 - ObjectCollision
26 - Custom26
27 - Personalizzato27
28 - Custom28
29 - IgnoreRealtimeLight
30 - WallCollision
31 - IgnoreParticipant
Il livello predefinito in Unity è (non sorprendentemente) denominato "Default", quindi potrebbe essere necessario usare un livello diverso se non si vuole interagire con altri oggetti. Ad esempio, IgnoreParticipant viene usato per gli oggetti che non devono interagire con l'avatar e IgnoreCollisions viene usato per gli oggetti che non devono interagire con nulla.
Alcuni livelli importanti
Default
Se non diversamente specificato, un collisore sarà sul livello predefinito . Si tratta di un livello camminabile e l'avatar verrà allineato correttamente a terra. Non è una destinazione di teletrasporta valida per l'utente locale. Questo livello interagisce e si scontra con altri oggetti.
GroundCollision
Solo i collisori sul livello GroundCollision sono destinazioni di teletrasporto valide per l'utente locale. In caso contrario, è identico al livello predefinito .
La geometria visiva non supportata con collisione non è raggiungibile a piedi e non blocca l'avatar, quindi si tratta di un obiettivo di teletrasporto non corretto e non deve essere sul livello GroundCollision .
WallCollision
Il livello WallCollision viene usato per indicare le pareti che l'avatar non deve penetrare per vincolare l'avatar all'interno di uno spazio riproducibile. Gli utenti VR possono spostare i propri avatar in modi arbitrari con il movimento HMD durante la locomozione della scala della stanza e possono attraversare fisicamente un muro virtuale. L'avatar verrà teletrasportato ai limiti dell'area di gioco dopo aver camminato una distanza impostata. Questo livello è altrimenti identico al livello predefinito .
Definizioni dei livelli
Di seguito è riportato un elenco di livelli definiti da ID e nome, inclusa la semantica di blocco e la descrizione:
Default
[Avatar/Object/Raycast Blocking]
Utilizzato per collisioni e illuminazione. Un avatar può camminare su di esso, ma non teletrasportarlo su di esso. Impostazione predefinita per la maggior parte delle proprietà. Gli oggetti nel livello predefinito ricevono la luce direzionale in tempo reale dall'ambiente.
TransparentFX
[Non blocca]
Gestione speciale nella pipeline di rendering di Unity per oggetti effetti trasparenti e speciali; garantisce un ordine di rendering corretto per la trasparenza.
IgnoreRaycast
[Avatar/Blocco oggetti]
Livello abilitato per la collisione che non blocca i raycast, ad esempio oggetti non interagendo o pareti invisibili che gli avatar non possono passare, ma gli oggetti di fisica possono passare attraverso (ad esempio, guide su cui gli oggetti possono essere gettati, ma gli avatar non possono saltare).
n/d
Acqua
[Non blocca]
In particolare per le superfici d'acqua. Può essere usato per interazioni specializzate di rendering e fisica con acqua. Non usare con collisori non trigger.
n/d
n/d
n/d
n/d
n/d
n/d
n/d
n/d
n/d
GroundCollision
[Avatar/Object/Raycast Blocking]
Utilizzato per superfici di collisione camminabili su cui è possibile teletrasportarsi. Nota: nelle versioni precedenti di Mesh Toolkit questo era il livello "NavMesh".
n/d
n/d
IgnoreCollisions
[Non blocca]
Non interagisce con nulla. Può ritagliarsi attraverso l'ambiente e altri oggetti.
TriggerVolume
[Non blocca]
Layer per gli oggetti che non devono essere interessati dalla fisica o dai raycast e non hanno un utilizzo speciale in caso contrario. Non usare su oggetti con collisori non trigger.
n/d
ObjectCollision
[Blocco oggetti]
Layer per conflitto con oggetti, ma non con l'avatar o i raycast.
IgnoreObjects
[Avatar/Raycast Blocking]
Layer per scontrarsi con avatar ma non con oggetti.
RaycastOnly
[Raycast Blocking]
Layer per gli oggetti che bloccano i raycast o possono essere selezionati, ma non influiscono sulla collisione tra avatar o oggetto.
n/d
n/d
n/d
Custom26
[Avatar/Object/Raycast Blocking]
Livello definito dall'utente.
Custom27
[Avatar/Object/Raycast Blocking]
Livello definito dall'utente.
Custom28
[Avatar/Object/Raycast Blocking]
Livello definito dall'utente.
IgnoreRealtimeLight
[Avatar/Object/Raycast Blocking]
Specificare quali oggetti art nell'ambiente non ricevono la luce direzionale in tempo reale, ad esempio la maggior parte degli oggetti statici (usare l'illuminazione al forno invece con la mappa luminosa).
WallCollision
[Avatar/Object/Raycast Blocking]
Collisione che impedisce il ritaglio attraverso una scena. Se un utente HMD attacca la testa attraverso il muro, viene riasparato a una posizione vicina nell'area riproducibile.
IgnoreParticipant
[Blocco Object/Raycast]
Oggetti che bloccano raycast e altri oggetti, ma non avatar.
Interazioni tra livelli e tabelle
Interazioni tra livelli
Tabella Livelli