Як запобігти «підводного зору» в іграх


19

У багатьох іграх, де гравець може піти під водою, здається, коли дивишся, де верхня половина екрану знаходиться у повітрі, а нижня половина екрана у воді, це майже як вода не існує і гравець ... повільно летить звуками води?

введіть тут опис зображення

Чи є логічний спосіб вирішити це? Алгоритм? Здається, не знайдено жодного рішення, оскільки багато ігор все ще мають таке. Я не хочу робити ту саму помилку.


4
У сучасних іграх є шейдери, які відрізняються над водою та під водою. Сьогодні це однозначно не виглядає так. Я вважаю, що Crysis має досить розвинене підводне відображення: youtube.com/watch?v=yXxEZJdFjeM
MartinTeeVarga

9
@ sm4: Я думаю, ця гра має і цю особливість. Але проблема полягає в тому, що камера не під водою, її вгорі, і ви можете бачити нижче через близьке обрізання.
Кікаймару

@Kikaimaru Я бачу, я не зовсім зрозумів питання. Однак у Crysis, схоже, немає цієї проблеми.
MartinTeeVarga

2
Aww, але як ще я повинен бачити, чи є перлини на дні річки? (Забуття Elder Scrolls): D
Singular1ty

1
Можливо, ви можете перевірити, чи персонаж "голова" під водою замість камери, і не дозволяйте камері переходити під воду, якщо персонаж також не під водою
Люк Б.

Відповіді:


16

Як щодо просто не допустити такої ситуації?

Я не знаю, як ви робите свою гру, але якщо ви виявите, що вид буде частково під водою, ви можете змусити камеру бути над водою, і лише тоді, коли весь погляд буде нижче води, ви можете переключитися на підводний вид.

Залежно від того, як ви це зробите, це може означати, що з моменту початку дайвінгу та коли ви фактично переглядаєте сцену з-під поверхні, виникає додаткова затримка. Це насправді може бути хорошою справою з точки зору UX, тому сміливо експериментуйте.

На окремій, але пов'язаній з цим записці мені цікаво, чому більшість підводних сцен виглядають кришталево чистими ... Якщо ви коли-небудь покладете голову під воду, ви помітите, що ваші очі не призначені для підводного зору, і тому все здається розмитим. Вам доведеться носити окуляри, щоб насправді добре видно під водою.

Крім того, під водою речі виглядають (і чують) дуже інакше, ніж над водою. Вода поглинає світло набагато швидше, ніж повітря, тому чим далі світло подорожує, тим менше світла потраплятиме на ваші очі. Це означає, що чим глибше ви проходите, тим сильніше виглядають речі (червоне світло має менше енергії, а тому поглинається легше, ніж синє світло). Насправді, всього в 12 метрах під водою кров виглядає чорною, а не червоною.

Мені ще не доводиться бачити неспеціалізовану гру, яка навіть намагається правильно підібрати підводне середовище ...


5
Багато ігор змінюють світло та звук під водою. Дивіться відео Crysis, пов’язане у коментарях вище. Я впевнений, що це не зовсім реально, але (а) більшість людей не мають прямого досвіду роботи з глибоким підводним середовищем та (б) в іграх, які ви перебуваєте під водою, імовірно, вам потрібно мати можливість бачити, грати в гру .
Натан Рід

Я вважаю, що більшість ігор не роблять цього просто тому, що ніхто не хотів би ходити під водою, якщо там нічого не бачать. А може, всіх головних героїв гри тренували люди Мокена! news.nationalgeographic.com/news/2004/05/…
MartinTeeVarga

1
У розвитку ігор такий варіант рішення "лікар, боляче, коли я це роблю", як правило, є оптимальним.
Тревор Пауелл

1
@TrevorPowell: Я читав ваш коментар десяток разів, і досі не розумію вашої точки зору. Можливо, ви хотіли б детальніше?
Піжама Panda

2
Вибачте! Це посилання на старий жарт з водевіля . Жарт іде приблизно так: Пацієнт: "Докторе, боляче, коли я це роблю!". Лікар: "Не робіть цього!" Я мав на увазі просто сказати, що в іграх найчастіше найпростіший спосіб вирішити проблему - це перешкодити грі потрапити в стан, коли проблему треба вирішити. (наприклад: найпростіший спосіб виправити "графіку виглядають неправильно, коли площина біля кліпу перетинає водну поверхню" - "не дозволяйте площині майже кліпу перетинати водну поверхню")
Тревор Пауелл,

7

Проблема, яку ви маєте на увазі, пов'язана з обрізанням гучності виду камери через площину води; типові "підводні ефекти" робляться за допомогою повного екрану післяпроцесових ефектів, і вони не виглядають правильними, якщо подання буде вирізане таким чином (це було б просто протилежною проблемою).

Навіть якщо ви намагаєтесь виявити відсічний випадок (потенційно важкий) та ножицею або зафіксуйте інакше повний екран підводного ефекту, щоб він застосовувався лише до підводної сцени (що є потенційним рішенням, яке ви могли б вивчити), у вас все одно буде проблема самої площини води. Перехід туди все-таки буде яскравим зоровим артефактом. Ви могли виявити цю площину і сильно розмити її; це, мабуть, найближче, до якого можна дійти аналогії в реальному світі того, яким може бути погляд через частково занурений об'єктив камери.

Крім того, не допускайте, щоб це відбувалося повністю: не дозволяйте камері опускатися нижче площини води, якщо плеєр знаходиться "над" водою або над водою, коли гравець знаходиться "нижче" води. Це справді спрацює лише в тому випадку, якщо у вас є дискретні режими роботи плеєра для над / під водою, і найкраще працює, якщо є фізична кнопка або інші чіткі і очевидні дії, які гравець може вжити для переходу між "плаванням на поверхні" та "плаванням нижче поверхня."

Замість явного натискання клавіші на занурення ви можете інтерпретувати рух вперед, поки камера нахилена достатньо, щоб означати "занурення". Потім ви можете скористатися графічним ефектом (бризки чи що завгодно), щоб приховати перехід камери через водну площину, який вона зазвичай не змогла б перетнути.

Ми використовували таку техніку в Guild Wars 2.


3

Ігри зазвичай включають якісь ефекти, насамперед блакитний туман, коли камера знаходиться під водою. Щоб вирішити ситуацію, коли близька площина проскакує через поверхню води, ви можете увімкнути шейдер туману, коли камера наблизиться до поверхні води, але потім додайте код до піксельного шейдера, який обчислює точку на найближчій площині, що відповідає цей піксель і активує туман лише в тому випадку, якщо ця точка знаходиться під поверхнею води.

Якщо туман робиться як постпроцес, надаючи повноекранний прохід, це особливо легко - потрібно просто обчислити положення світового простору кожної вершини повноекранного чотирикутника або трикутника на найближчій площині (з оберненою стороною матриця перегляду / проекції) та інтерполіруйте це значення до піксельного шейдера; тоді ви можете перевірити його вертикальну складову і побачити, чи знаходиться вона над або під площиною води.

Для бонусних очок ви можете використовувати ту саму техніку, щоб додати текстуру товщиною в кілька пікселів, щоб представити меніск на поверхні води, так що це не так схоже на різку лінію.


(є проблеми, якщо поверхня води є сіткою, але все-таки чудова загальна відповідь)
Буде

0

У мене є два методи; Один використовує шейдер, інший може використовувати графічний інтерфейс. Обидва почнуть однаково:

"Спрощений" - If, Object(Camera) is in 3d Space(Water bounding box/whatever you choose) trigger a shader/GUI.

Шейдер додасть більше реалізму, ви можете застосувати спотворення, як це

Туман, як ком. Хлопчик заявив, може бути застосований через GUI. Створіть фотографію з частковою прозорістю та використовуйте її як графічний інтерфейс для всього зображення камери. Для фотографії, яку ви надали, я б спробував коричневий колір.

Це було використано в грі жахів під назвою Drea D Out. Якби гравець наблизився до привида, екран став би туманним. Хоча його не використовували під водою, він дав подібний ефект :)

Ви завжди можете вибрати обидва способи або зробити шейдер, який змінив би колір.

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

Taken from : http://sahdan-share.blogspot.com/2013/04/dreadout.html
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.