Можно ли реалистично воссоздать в игре человеческий глаз?

Разработка игр | |

0-3064303-poster-p-1-why-faking-eyes-is-so-hard

Джимми Батлер выглядит идеально. Его мощные скулы будто вытесаны из мрамора. Волосы кажутся такими, будто действительно растут из его головы. Пот, стекающий по его телу, дразняще мерцает, напоминая мягкое порно. Эта двухметровая громадина с поступью Годзиллы мчится к кольцу, жонглируя мячом так, будто это не спортивный инвентарь, повидавший множество ударов и шлепков, а хрупкая стеклянная сфера.

Это не трансляция матча по телевизору. Это NBA2K17 – величайший баскетбольный симулятор, где дизайнеры персонажей сделали моего любимого игрока NBA, как он того заслуживает. За исключением одной маленькой детали, которая грозит свести на нет все остальные достижения.

Это его глаза.

1-3064303-inline-2g-why-faking-eyes-is-so-hard

У Джимми Батлера статное тело греческого бога и мертвые, пустые глаза зомби – как и у всех остальных игроков, комментаторов и прочих персонажей NBA2K17, а также всех других современных видеоигр.

2-3064303-inline-1g-why-faking-eyes-is-so-hard

Куда ты смотришь, Шакил?

3-3064303-inline-i-10-l-why-faking-eyes-is-so-hard

Эрни, хватит меня гипнотизировать! ХВАТИТ МЕНЯ ГИПНОТИЗИРОВАТЬ!

Эта проблема касается не только 2K17. Над тем, чтобы сделать глаза более реалистичными – или хотя бы менее жуткими – работает вся игровая индустрия. Однако, несмотря на все достижения в области CGI и физику, которая просчитывается в реальном времени, все удары пока бьют мимо цели. Можно назвать это зловещей долиной. Называйте, как хотите. В отличие от человеческих лиц, процесс создания которых мы затрагивали в отдельной статье, глаза в играх по-прежнему ужасны, что вредит правдоподобности всех персонажей на экране. К сожалению, из-за ряда проблем, включая физику, ограничения в вычислительной мощности и нашу собственную способность воспринимать глаза другого человека, имеющую массу тонких нюансов, мы пока и близко не подошли к решению этой задачи.

4-3064303-inline-i-11-b-why-faking-eyes-is-so-hard

Уникальное и сложное устройство

«В сотни раз больше, чем сейчас, а может даже еще больше на порядок или два», – отвечает Брайан Кэрис (Brian Karis), старший графический программист Epic Games, на вопрос о вычислительной мощности, которая потребуется на то, чтобы в реальном времени отрендерить идеальный и убедительный глаз.

Один из главных бизнесов Epic Games – это Unreal Engine, популярный «игровой движок» (под этим термином скрываются базовые технологии, лежащие в основе любой игры), который разработчики используют для создания игр (его можно наблюдать ниже, на скриншотах из Hellblade). Unreal Engine – это что-то вроде огромного набора правил, который диктует, как в игре работают вещи вроде освещения и теней, чтобы с их помощью рендерить убедительных персонажей и миры на устройствах с ограниченной вычислительной мощностью (вроде компьютеров, консолей и даже смартфонов). То есть, если вы намереваетесь создать новую игру, вам не обязательно будет программировать весь этот код с нуля. Вы можете просто купить лицензию у Epic, а затем сосредоточиться на сюжете, игровых механиках и визуальной составляющей.

Главная работа Кэриса состоит в том, чтобы дешифровать уникальные характеристики человеческого глаза и воплотить их в Unreal Engine.

5-3064303-inline-4-why-faking-eyes-is-so-hard

Главная проблема рендеринга глаз кроется в их строении и в том, как это строение взаимодействует со светом. На первый взгляд, глаз выглядит просто, но на самом деле это почти полностью прозрачный объект, состоящий из нескольких слоев. Все эти прозрачные слои манипулируют светом по-разному, и, будучи в сферической структуре (но не в идеально сферической!), постоянно реагируют друг на друга. Самый наружный слой – это роговица. Это не просто прозрачная линза. Это прозрачная линза, которая выпирает из глазного яблока. Она может отражать свет, как зеркало, или преломлять его, как капля воды на ветровом стекле. То есть вот эти красочные радужки, имеющиеся в глазу, на самом деле искажены роговицей.

«Необходимо правильно обработать переходы от одного слоя к другому, – говорит Кэрис. – И то, как свет взаимодействует со всеми ними».

6-3064303-inline-i-5-why-faking-eyes-is-so-hard

Особенно сложно с белой частью глаза. Ее называют склерой, и она, словно лимонная корка, покрывает большую часть глазного яблока. Свет «рассеивается» о склеру через прозрачный гель, который составляет большую часть глаза – в результате получается блеск, который имеет ту же природу, что и стакан молока.

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

«Представьте, что сидите в ресторане. Перед вами стоит стакан с вином, на который падает свет, – говорит технический директор Epic Games Ким Либрери (Kim Libreri). – Вы увидите, что на скатерти будет и немного красного, и немного белого».

Каустика происходит и в человеческом глазу.

7-3064303-inline-i-12b-why-faking-eyes-is-so-hard

«Это почти незаметный эффект. Его отсутствия можно и не заметить, – продолжает Кэрис. – Но тогда глаз получится упрощенным».

Но если Epic может в таких подробностях описать, что происходит в человеческом глазу, и даже может воссоздать в симуляции его микроструктуру, почему так сложно его отрендерить? Проблема в вычислительной мощности.

8-3064303-inline-i-13-why-faking-eyes-is-so-hard

Голливудские студии, которые могут позволить себе несколько часов на рендер одного единственного кадра, пользуются методом, который называется «трассировка лучей» (ray tracing). Он симулирует настоящий свет, проходящий через плоскости и «скачущий» рядом с объектами.  В сущности, он копирует физику того, как свет взаимодействует с объектами в реальном мире. Однако у видеоигр нет нескольких часов на рендер одного кадра – чтобы игра, прощу прощения за тавтологию, была играбельной, фреймрейт должен быть порядка 30 или 60 кадров в секунду. Это значит, что у Unreal Engine есть всего 16 миллисекунд, чтобы визуализировать всю картинку в кадре.

По правде говоря, глаза могут быть очень небольшими кусочками относительно общей площади изображения – в зависимости от ситуации, они могут быть просто несколькими пикселями на экране – поэтому большая вычислительная мощность на обработку глаз требуется лишь в том случае, когда игра показывает крупные планы персонажей. Но даже тогда игрокам показывают, скорее «фальшивку», чем реальную физическую симуляцию. Движок Unreal Engine устроен таким образом, что на глаза сначала применяется трассировка лучей, после чего эти данные конвертируются в упрощенный код. Это позволяет имитировать все эти прозрачные 3D-структуры в чем-то простом вроде двухмерного YouTube-видео, которое проигрывается в глазу персонажа.

«Мы считаем, что наши глаза выглядят очень здорово, – говорит Кэрис. – Но они, разумеется, не идеальны, потому что у нас на рендер есть всего несколько миллисекунд».

Действительно, из-за того, что глаза (и лица) так сложно сделать по-настоящему правдоподобными, многие разработчики просто облачают персонажей в черные очки или закрытые шлемы. Особенно этим злоупотребляют в играх вроде Deus Ex, Halo и даже Call of Duty. Разумеется, не хочу никого обидеть. Понятно, что это экономит разработчикам кучу времени и усилий.

9-3064303-inline-i-7-l-why-faking-eyes-is-so-hard

Глаза Кары, сделанной Quantic Dream – возможно, самые лучшие глаза в игровой индустрии

Задача для ИИ

Глаз не только сложно моделировать (из-за его микроструктур). Еще более сложная задача, как подчеркивает Кэрис, заключается в том, чтобы правильно его отрендерить. «Мы, люди, фокусируемся и передаем много информации при помощи наших глаз, – говорит он. – Это значит, что если мы хотим, чтобы картинка была убедительной, точность рендера должна быть гораздо выше».

Другими словами, миллионы лет эволюции привели к тому, что глаза стали одним из главных каналов передачи информации, поэтому люди очень хорошо осведомлены, как себя ведет эта часть человеческого тела. И когда в играх вроде NBA2K17 глаза показаны очень небрежно, это может запросто разрушить реализм всей сцены.

«Это постоянная битва, – сказал Энтони Томинья (Antony Tominia) из 2K в недавнем интервью Evening Standard. – За анимацию глаза отчасти отвечает сама игра. Игра как бы спрашивает: “Что является целью?” Этой целью, как правило, является мяч, поэтому игра делает все возможное, чтобы голова и глаза персонажи были сфокусированы на мяче. С другой стороны, можно вспомнить, к примеру, фильм “Полярный экспресс” и тамошние мертвые глаза, сделанные при помощи технологии захвата движения».

Даже в релизном трейлере NBA2K17, битком набитом красивыми кинематографичными моментами, есть сцены, где спортсмены не следят за мячом, а в слоу-мо идут по площадке, из-за которых создается впечатление, будто смотришь фрагмент из «Ходячих мертвецов». Тела двигаются, но из-за глаз они кажутся абсолютно бездушными. Словно им сделали лоботомию.

10-3064303-inline-i-9-l-why-faking-eyes-is-so-hard

Анимация в реальном времени для Hellblade

Подобные случаи подтверждают, что анимация глаз в реальном времени – это очень сложная задача, для которой нужен целый ИИ. Да, иногда из ситуации можно выкрутиться, заставив персонажа следить за целью (вроде мяча). Кроме того, движения глаз – к примеру, если персонаж мельком смотрит на любимого человека или, чувствуя вину, тупит взгляд – можно прописать заранее (при помощи технологии захвата движений). В таких сценах движения персонажей (включая движения глаз) выглядят более-менее идеально.

Суть игр, напротив, заключается в том, что они динамичны и наполнены непредсказуемыми раздражителями. А с динамикой дела обстоят не так-то просто.

«Что касается глаз, то копирование их поведения – это относительно просто. Нужно лишь хорошенько все настроить, – говорит Кэрис. – Но проблема становится глубже, когда задумываешься о поведении. Если мы хотим, чтобы виртуальный человек реагировал правдоподобно, то это глубокая и сложная задача из области ИИ. Ведь вам, по сути, нужно, чтобы цифровой человек не копировал человеческое поведение, а реалистично реагировал на раздражители. Это очень сложно и требует большой вычислительной мощности».

Когда персонажей вынимают из их заранее прописанных контекстов, тут же становится ясно, что мы еще даже не совсем понимаем, по каким правилам работает человеческий глаз. К примеру, есть такая штука как «саккады» – это произвольные и непроизвольные движения глаз, которые происходят каждую секунду, и определить их количество очень непросто. То есть получается, что для того, чтобы персонаж выглядел правдоподобно, игре нужно просчитать еще и эту запутанную и непонятную логику.

«Нам нужен ИИ для глазного яблока. Нам нужен ИИ, способный делать саккады с правильной скоростью, – говорит Кэрис. – Создание персонажа, который даже не говорит, а просто сидит в кресле, переваливаясь с одной стороны на другую, и ведет себя как правдоподобный человек – вот настоящий вызов!»

11-3064303-inline-3g-why-faking-eyes-is-so-hard

Кенни, ты в порядке? МОРГНИ, ЕСЛИ В ПОРЯДКЕ, КЕННИ.

Источник – The Impossibly Complex Art Of Designing Eyes.

Владимир FrostBite Хохлов frostbite@progamer.ru

Поделиться

Обсудить