Come prevenire la "vista subacquea" nei giochi


19

In molti giochi in cui il giocatore può andare sott'acqua, sembra che quando guardi la parte superiore dello schermo nell'aria, e la metà inferiore dello schermo è nell'acqua, è quasi come se l'acqua non esistesse e il il giocatore sta ... volando lentamente con i suoni dell'acqua?

inserisci qui la descrizione dell'immagine

C'è un modo logico per risolvere questo? Un algoritmo? Non sembra che sia ancora stata trovata alcuna soluzione poiché molti giochi hanno ancora questo. Non voglio fare lo stesso errore.


4
I giochi moderni hanno shader diversi per sopra e sott'acqua. Al giorno d'oggi non sembra proprio così. Credo che Crysis abbia un rendering subacqueo piuttosto avanzato: youtube.com/watch?v=yXxEZJdFjeM
MartinTeeVarga

9
@ sm4: immagino che anche questo gioco abbia questa funzione. Ma il problema è che la fotocamera non è sotto l'acqua, è in alto e puoi vedere in basso a causa del quasi ritaglio.
Kikaimaru,

@Kikaimaru Capisco, non ho capito completamente la domanda. Tuttavia, Crysis non sembra avere questo problema.
MartinTeeVarga,

2
Oh, ma in che altro modo dovrei vedere se ci sono perle sul fondo del fiume? (Elder Scrolls Oblivion): D
Singular1ty

1
Forse potresti controllare se il personaggio "testa" è sott'acqua anziché la videocamera e non permettere alla videocamera di andare sott'acqua a meno che il personaggio non sia anche sott'acqua
Luke B.

Risposte:


16

Che ne dici di non permettere questa situazione?

Non so come stai realizzando il tuo gioco, ma se rilevi che la vista sarà in parte sott'acqua, puoi forzare la videocamera ad essere sopra l'acqua e solo quando l'intera vista sarà sotto l'acqua, puoi passare al vista subacquea.

A seconda di come lo fai, ciò potrebbe significare che c'è un ulteriore ritardo dal momento in cui inizi a immergerti e quando vedi effettivamente la scena da sotto la superficie. Questa potrebbe effettivamente essere una buona cosa dal punto di vista UX, quindi sentiti libero di sperimentare.

In una nota separata ma correlata, mi chiedo perché la maggior parte delle scene subacquee siano rese cristalline ... Se mai ti immergi la testa, noterai che i tuoi occhi non sono progettati per la vista subacquea, e quindi tutto sembra sfocato. Dovresti indossare gli occhiali per vedere chiaramente sott'acqua.

Inoltre, le cose sembrano (e ascoltano) molto diverse sott'acqua rispetto all'acqua. L'acqua assorbe la luce molto più velocemente dell'aria, quindi più luce viaggia, meno luce arriverà ai tuoi occhi. Ciò significa che più in profondità vai, più le cose diventano più blu (la luce rossa ha meno energia e quindi viene assorbita più facilmente della luce blu). In effetti, a soli 12 metri sott'acqua, il sangue sembra nero, non rosso.

Devo ancora vedere un gioco non specializzato che cerca persino di ottenere gli ambienti sottomarini nel modo giusto ...


5
Molti giochi cambiano la luce e il suono sott'acqua. Guarda il video di Crysis collegato nei commenti sopra. Sono sicuro che non sia perfettamente realistico, ma (a) la maggior parte delle persone non ha esperienza diretta con ambienti subacquei profondi e (b) in giochi che ti fanno andare sott'acqua, presumibilmente devi essere in grado di vedere, giocare .
Nathan Reed,

Credo che la maggior parte dei giochi non lo faccia semplicemente perché nessuno vorrebbe andare sott'acqua se non vede nulla lì. O forse tutti i personaggi principali del gioco sono stati addestrati dai Moken! news.nationalgeographic.com/news/2004/05/…
MartinTeeVarga

1
Nello sviluppo del gioco, questo tipo di "dottore, fa male quando lo faccio" di solito è la soluzione ottimale.
Trevor Powell,

1
@TrevorPowell: ho letto il tuo commento una dozzina di volte e ancora non capisco il tuo punto. Forse ti piacerebbe elaborare?
Panda Pajama,

2
Scuse! È un riferimento a una vecchia battuta vaudeville . Lo scherzo è qualcosa del genere: Paziente: "Dottore, fa male quando lo faccio!". Dottore: "Non farlo !" Volevo solo dire che nei giochi, spesso il modo più semplice per risolvere un problema è impedire al gioco di entrare in uno stato in cui il problema deve essere risolto. (es: il modo più semplice per correggere "la grafica appare errata quando il piano vicino alla clip interseca la superficie dell'acqua" è "non lasciare che il piano vicino alla clip interseca la superficie dell'acqua")
Trevor Powell,

7

Il problema a cui ti riferisci ha a che fare con il ritaglio del volume di visualizzazione della videocamera attraverso il piano d'acqua; gli "effetti subacquei" tipici vengono eseguiti tramite effetti post-elaborazione a schermo intero e non apparirebbero corretti se la vista viene tagliata in questo modo (sarebbe solo il problema opposto).

Anche se ti preoccupi di rilevare il caso di ritaglio (potenzialmente difficile) e le forbici o tagliare l'effetto subacqueo altrimenti a schermo intero in modo che si applichi solo alla scena subacquea (che è una potenziale soluzione che potresti esplorare), avresti comunque problema del piano d'acqua reale stesso. La transizione ci sarebbe ancora un manufatto visivo stonante. Potresti rilevare quell'aereo e offuscarlo pesantemente; questo è probabilmente il più vicino possibile ad un'analogia del mondo reale di ciò che la vista potrebbe essere attraverso un obiettivo parzialmente sommerso.

In alternativa, evita che ciò accada del tutto: non lasciare che la videocamera vada sotto il piano d'acqua se il giocatore è "sopra" l'acqua o sopra il piano d'acqua quando il giocatore è "sotto" l'acqua. Funzionerà davvero solo se disponi di modalità operative discrete per il giocatore sopra / sotto l'acqua e funziona meglio se c'è un pulsante fisico o altre azioni chiare e ovvie che il giocatore può intraprendere per passare tra "nuoto in superficie" e "nuoto sotto la superficie."

Invece di premere esplicitamente il tasto per immergerti, potresti interpretare il movimento in avanti mentre la videocamera è sufficientemente inclinata per significare "immersione". È quindi possibile utilizzare un effetto grafico (schizzi o altro) per nascondere la transizione della videocamera attraverso il piano d'acqua, che normalmente non sarebbe in grado di attraversare.

Abbiamo usato una tecnica come questa in Guild Wars 2.


3

I giochi di solito attivano una sorta di effetti, principalmente nebbia blu, quando la videocamera è sott'acqua. Per gestire la situazione in cui il piano vicino si aggancia attraverso la superficie dell'acqua, è possibile attivare lo shader nebbia quando la telecamera si avvicina alla superficie dell'acqua, quindi aggiungere un codice al pixel shader che calcola il punto sul piano vicino corrispondente a quel pixel e attiva la nebbia solo se quel punto è sotto la superficie dell'acqua.

Se la nebbia viene eseguita come postprocesso, eseguendo un passaggio a schermo intero, questo è particolarmente facile: devi solo calcolare la posizione dello spazio mondiale di ciascun vertice del quad o del triangolo a schermo intero sul piano vicino (con l'inverso view / projection matrix) e interpolare questo valore fino al pixel shader; quindi puoi controllare la sua componente verticale e vedere se è sopra o sotto il piano d'acqua.

Per i punti bonus puoi usare la stessa tecnica per aggiungere una trama spessa pochi pixel per rappresentare il menisco sulla superficie dell'acqua, quindi non assomiglia molto a una linea netta.


(ha problemi se la superficie dell'acqua è una maglia, ma rimane comunque un'ottima risposta generale)
Will,

0

Ho due metodi; Uno usa uno shader, l'altro potrebbe usare una GUI. Entrambi inizieranno allo stesso modo:

"Semplificato" - If, Object(Camera) is in 3d Space(Water bounding box/whatever you choose) trigger a shader/GUI.

Lo shader darà più realismo, puoi applicare una distorsione come questa

Nebbia come Com. Ragazzo dichiarato, può essere applicato tramite la GUI. Crea una foto, con una trasparenza parziale e usala come GUI sull'intera vista della fotocamera. Per la foto che hai fornito proverei un colore marrone.

Questo è stato usato in un gioco horror chiamato Drea D Out. Se il giocatore si avvicina a un fantasma, lo schermo diventerebbe nebbioso. Sebbene non sia stato usato sott'acqua, ha dato un effetto simile :)

Puoi sempre scegliere entrambi i metodi o creare uno shader che cambierebbe il colore.

http://media.indiedb.com/images/games/1/21/20833/Demo_update_SS01.png

Taken from : http://sahdan-share.blogspot.com/2013/04/dreadout.html
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.