Facebook недавно выпустил новую функцию, 3D-фотографии или, как они ее называют, в их javascript: 2.5D Photos. Вот как это выглядит:
Чтобы создать такую фотографию, просто используйте новый портретный режим на iPhone и разместите его на Facebook. Вот и все.
Но как это работает под капотом? Мне нравится изучать новые идеи, читая код других людей. Поэтому мне было любопытно узнать, как они реализовали этот эффект в Facebook. Вот история. Если вы просто хотите знать технологию, перейдите к «как все это работает ».
Содержание статьи
. Сначала предположим, фрагментарный шейдер?
Существует популярный способ faking 3D с шейдером, используя карту глубины и искажая пиксели изображения с помощью фрагментарного шейдера в WebGL:
Сначала я думал, что команда facebook пошла на это, так как это очень легко сделать, а размер изображения довольно мал. Но это не то, как они это сделали. ? Вы можете видеть грубые грани при изменении глубины при реализации facebook.
Еще одна идея, которая может быть использована Facebook, — это смещение вершин на основе изображения, например, тот, который мы использовали недавно с Denys на его сайте loveiko.com :
Есть некоторые другие способы подделать его, но теперь мне нужно было знать, как они это сделали! Потому что мне интересно.
Как я декомпилировался
Лучший способ начать — это вкладка сети в DevTools.
Скачан самый большой файл, оказалось, что все, что вам нужно для этого кенгуру: быть файлом .glb.
Итак, я пошел в онлайн-браузер glTF, загрузил этот файл и увидел это: