На конференции Unite Copenhagen 2019 Mark Schoennagel рассказал о некоторых занятных аспектах демки The Heretic.
Я кое-какие интересные моменты выделил в этой статье.
![](https://suvitruf.ru/wp-content/uploads/2019/10/Discover-the-tech-behind-The-Heretic.png)
Сложнее всего при создании персонажа сделать нормально лицо.
![](https://suvitruf.ru/wp-content/uploads/2019/10/heretic-4D-capture-1024x571.png)
Для Heretic использовали технологию 4D. Актёр сидит, вокруг некого куча камер. Всё это дело пишется в 60 fps. Потом с использование фотограмметрии получают 3d модель. Весьма детализированный меш получается.
Для блендшейпа использовали Snappers. Глаза и рот анимируются отдельно.
![](https://suvitruf.ru/wp-content/uploads/2019/10/heretic-eyes-1024x480.png)
Использовали DOTS и ECS систему, так что глаза и рот двигаются естественно, следуя движения головы и т.п. Хотя лично я не понимаю, зачем на это акцентировать внимание. Тоже самое можно и без ECS сделать.
Анимации и Snapper
Если разработчикам не нравится что-то в анимации, то они могут её смешать с кастомной анимацией. К примеру, для движения бровей. Здесь как раз Snapper и используется.
![](https://suvitruf.ru/wp-content/uploads/2019/10/heretic-Snappers-on.gif)
С выключенной анимацией движения бровей.
![](https://suvitruf.ru/wp-content/uploads/2019/10/heretic-Snappers-off.gif)
Subsurface scattering
К примеру, если вы светите фонариком на руки, то они просвечиваются. Можно заметить такой же эффект на коже героя, в частности, на ушах. Технология HDRP приближена к реальности в плане физики. Поэтому все эти эффекты работают автоматически.
![](https://suvitruf.ru/wp-content/uploads/2019/10/heretic-subsurface-scattering.png)
Птичку жалко
Бостон динамически сгенерирован (compute shader).
![](https://suvitruf.ru/wp-content/uploads/2019/10/heretic-boston-fvx-1024x589.png)
Signed distance fields для того, чтоб указать, где птица может ползать.
![](https://suvitruf.ru/wp-content/uploads/2019/10/heretic-sdf-1024x502.png)
Белая текстура генерируется каждый фрейм и прилегает к стене. Птица может перемещаться только по чёрной области.
Сама птица – это полностью compute shader. Там реальный меш, всё генерится в рантайме.
![](https://suvitruf.ru/wp-content/uploads/2019/10/heretic-boston-compute-shader.gif)
Warp transition
![](https://suvitruf.ru/wp-content/uploads/2019/10/heretic-warp-transition-1024x506.png)
Вдохновлялись тем, как кольца образуется у стволов деревьев.
![](https://suvitruf.ru/wp-content/uploads/2019/10/heretic-wood-slice-1024x538.png)
Взяли оба 3d-объекта (туннель и коридор) и нарезали на 100+ мешей.
![](https://suvitruf.ru/wp-content/uploads/2019/10/heretic-slice-meshes-1024x584.png)
Если у вас есть тоже самое количество вершин у двух объектов, то вы легко можете морфинг между ними настроить для шейп анимации.
![](https://suvitruf.ru/wp-content/uploads/2019/10/heretic-slices-1024x605.png)
Но нужно понимать, что работать это дело будет только под определённым углом.
![](https://suvitruf.ru/wp-content/uploads/2019/10/heretic-slices-angle.gif)
Ну и напоследок. Если вы думаете «какой классный бек», то…на самом деле это всё полноценные объекты со своей геометрией.
![](https://suvitruf.ru/wp-content/uploads/2019/10/heretic-geometry.gif)