Comment prévenir la «vue sous-marine» dans les jeux


19

Dans de nombreux jeux où le joueur peut aller sous l'eau, il semble que lorsque vous regardez où la moitié supérieure de l'écran est dans l'air, et la moitié inférieure de l'écran est dans l'eau, c'est presque comme l'eau n'existe pas et le joueur vole lentement avec des sons d'eau?

entrez la description de l'image ici

Existe-t-il un moyen logique de résoudre ce problème? Un algorithme? Il ne semble pas encore qu'une solution ait été trouvée car de nombreux jeux l'ont encore. Je ne veux pas faire la même erreur.


4
Les jeux modernes ont des shaders qui sont différents pour au-dessus et sous l'eau. Cela ne ressemble définitivement pas à cela de nos jours. Je crois que Crysis a un rendu sous-marin assez avancé: youtube.com/watch?v=yXxEZJdFjeM
MartinTeeVarga

9
@ sm4: Je suppose que ce jeu a aussi cette fonctionnalité. Mais le problème est que la caméra n'est pas au-dessous de l'eau, c'est au-dessus et vous pouvez voir ci-dessous à cause d'un écrêtage proche.
Kikaimaru

@Kikaimaru Je vois, je n'ai pas complètement compris la question. Cependant, Crysis ne semble pas avoir ce problème.
MartinTeeVarga

2
Aww, mais comment suis-je censé voir s'il y a des perles au fond de la rivière? (Elder Scrolls Oblivion): D
Singular1ty

1
Peut-être pourriez-vous vérifier si la "tête" du personnage est sous l'eau au lieu de la caméra et ne laissez pas la caméra aller sous l'eau à moins que le personnage ne soit également sous l'eau
Luke B.

Réponses:


16

Que diriez-vous simplement de ne pas autoriser cette situation?

Je ne sais pas comment vous faites votre jeu, mais si vous détectez que la vue sera partiellement sous l'eau, vous pouvez forcer la caméra à être au-dessus de l'eau, et seulement lorsque la vue entière serait sous l'eau, vous pouvez passer à la vue sous-marine.

Selon la façon dont vous le faites, cela pourrait signifier qu'il y a un délai supplémentaire à partir du moment où vous commencez à plonger et lorsque vous regardez réellement la scène sous la surface. Cela peut être une bonne chose du point de vue UX, alors n'hésitez pas à expérimenter.

Sur une note distincte mais connexe, je me demande pourquoi la plupart des scènes sous-marines sont claires comme du cristal ... Si jamais vous mettez la tête sous l'eau, vous remarquerez que vos yeux ne sont pas conçus pour la vue sous-marine, et donc tout semble flou. Il faudrait porter des lunettes pour voir clairement sous l'eau.

De plus, les choses semblent (et entendent) très différentes sous l'eau que hors de l'eau. L'eau absorbe la lumière beaucoup plus rapidement que l'air, donc plus la lumière se déplace, moins la lumière arrivera à vos yeux. Cela signifie que plus vous allez profondément, plus les choses sont bleues (la lumière rouge a moins d'énergie et est donc absorbée plus facilement que la lumière bleue). En fait, à seulement 12 mètres sous l'eau, le sang semble noir, pas rouge.

Je n'ai pas encore vu un jeu non spécialisé qui essaie même de créer des environnements sous-marins corrects ...


5
Beaucoup de jeux changent la lumière et le son sous l'eau. Voir la vidéo de Crysis liée dans les commentaires ci-dessus. Je suis sûr que ce n'est pas parfaitement réaliste, mais (a) la plupart des gens n'ont pas d'expérience directe avec les environnements sous-marins profonds et (b) dans les jeux qui vous mettent sous l'eau, vous devez probablement pouvoir voir, jouer au jeu .
Nathan Reed

Je crois que la plupart des jeux ne le font pas simplement parce que personne ne voudrait aller sous l'eau s'il n'y voit rien. Ou peut-être que tous les personnages principaux du jeu ont été formés par des Moken! news.nationalgeographic.com/news/2004/05/…
MartinTeeVarga

1
Dans le développement de jeux, ce genre de solution «docteur, ça fait mal quand je fais ça» est généralement la solution optimale.
Trevor Powell

1
@TrevorPowell: J'ai lu votre commentaire une douzaine de fois et je ne comprends toujours pas votre point. Vous aimeriez peut-être élaborer?
Panda Pyjama

2
Mes excuses! C'est une référence à une vieille blague de vaudeville . La blague ressemble à ceci: Patient: "Docteur, ça fait mal quand je fais ça!". Docteur: "Ne fais pas ça!" Je voulais juste dire que dans les jeux, souvent le moyen le plus simple de résoudre un problème est d'empêcher le jeu de se retrouver dans un état où le problème doit être résolu. (par exemple: la façon la plus simple de corriger "les graphiques semblent incorrects lorsque le plan proche du clip coupe la surface de l'eau" est "ne laissez pas le plan proche du clip couper la surface de l'eau")
Trevor Powell

7

Le problème auquel vous faites référence a à voir avec l'écrêtage du volume de vue de la caméra dans le plan d'eau; les "effets sous-marins" typiques sont effectués via des effets de post-traitement en plein écran, et ne sembleraient pas corrects si la vue est coupée comme ceci (ce serait juste le problème opposé).

Même si vous prenez la peine de détecter le cas d'écrêtage (potentiellement difficile) et de couper ou de couper l'effet sous-marin autrement en plein écran afin qu'il ne s'applique qu'à la scène sous-marine (qui est une solution potentielle que vous pourriez explorer), vous auriez toujours le problème du plan d'eau lui-même. La transition, il y aurait toujours un artefact visuel choquant. Vous pouvez détecter cet avion et le brouiller fortement; c'est probablement le plus proche que vous pouvez obtenir d'une analogie réelle de ce que la vue peut être à travers un objectif d'appareil photo partiellement submergé.

Sinon, évitez que cela ne se produise complètement: ne laissez pas la caméra passer sous le plan d'eau si le joueur est "au-dessus" de l'eau ou au-dessus du plan d'eau lorsque le joueur est "au-dessous" de l'eau. Cela ne fonctionnera vraiment que si vous avez des modes de fonctionnement discrets pour les joueurs au-dessus / en dessous de l'eau, et fonctionne mieux s'il y a un bouton physique ou une autre action claire et évidente que le joueur peut prendre pour faire la transition entre "nager en surface" et "nager en dessous" la surface."

Au lieu d'une frappe explicite pour plonger, vous pouvez interpréter le mouvement vers l'avant pendant que la caméra est suffisamment baissée pour signifier «plonger». Vous pouvez ensuite utiliser un effet graphique (éclaboussures ou autre) pour masquer la transition de la caméra à travers le plan d'eau, qu'elle ne pourrait normalement pas traverser.

Nous avons utilisé une technique comme celle-ci dans Guild Wars 2.


3

Les jeux activent généralement une sorte d'effets, principalement du brouillard bleu, lorsque la caméra est sous l'eau. Pour gérer la situation où le plan proche passe à travers la surface de l'eau, vous pouvez activer le shader de brouillard lorsque la caméra se rapproche de la surface de l'eau, mais ensuite ajouter du code au pixel shader qui calcule le point sur le plan proche correspondant à ce pixel, et active le brouillard uniquement si ce point est sous la surface de l'eau.

Si le brouillard est effectué en post-traitement, en effectuant un passage en plein écran, cela est particulièrement facile - il vous suffit de calculer la position de l'espace mondial de chaque sommet du quad ou du triangle en plein écran sur le plan proche (avec l'inverse matrice de visualisation / projection) et interpoler cette valeur jusqu'au pixel shader; alors vous pouvez vérifier sa composante verticale et voir si elle est au-dessus ou en dessous du plan d'eau.

Pour les points bonus, vous pouvez utiliser la même technique pour ajouter une texture de quelques pixels d'épaisseur pour représenter le ménisque à la surface de l'eau, de sorte qu'il ne ressemble pas tellement à une ligne nette.


(a des problèmes si la surface de l'eau est un maillage, mais reste une excellente réponse générale)
Will

0

J'ai deux méthodes; L'un utilise un shader, l'autre pourrait utiliser une interface graphique. Les deux commenceront de la même façon:

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

Shader donnera plus de réalisme, vous pouvez appliquer une distorsion comme celle-ci

Fog Like Com. Garçon a déclaré, peut être appliqué via l'interface graphique. Créez une photo, avec une transparence partielle et utilisez-la comme interface graphique sur toute la vue de la caméra. Pour la photo que vous avez fournie, j'essaierais une couleur brune.

Cela a été utilisé dans un jeu d'horreur appelé Drea D Out. Si le joueur s'approchait d'un fantôme, l'écran deviendrait brumeux. Bien qu'il n'ait pas été utilisé sous l'eau, il a eu un effet similaire :)

Vous pouvez toujours choisir les deux méthodes ou créer un shader qui changerait la couleur.

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

Taken from : http://sahdan-share.blogspot.com/2013/04/dreadout.html
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.