← Журнал
6 июля 20262 минуты чтения

Музей вместо портфолио: 15 залов на WebGL

Зачем я построил трёхмерный музей собственных работ — с иллюзионом, планетарием, книгой отзывов и 46 ачивками — и что из этого вышло технически.

Тёмный зал 3D-музея с красной ковровой дорожкой и экраном CHERNOV

На этом сайте есть музей. Не метафорический — настоящий трёхмерный: пятнадцать залов, по которым можно ходить, экспонаты, таблички, книга отзывов у выхода и смотрительница, которой лучше не хамить.

Это был эксперимент на вопрос: что будет, если отнестись к портфолио не как к списку, а как к зданию?

Почему музей#

Кейсы в портфолио люди листают за 40 секунд. В пространстве работает другая психика: посетитель идёт, останавливается, возвращается. Пространственная память сильнее ленточной — «тот тёмный зал с трейдингом» запоминается лучше, чем «третий кейс сверху». Заодно музей честно отвечает на вопрос «а что этот человек умеет в 3D и интерактиве» — самим фактом своего существования.

Залы разные по температуре: белый дневной, чёрный театральный, планетарий
Залы разные по температуре: белый дневной, чёрный театральный, планетарий

Как это сделано#

Никакого движка — чистый Three.js поверх WebGL. Из интересного:

  • Статик-батчинг: стены, плинтусы и рамы всех залов слиты в несколько больших мешей — счёт draw calls упал на порядок, и музей живёт даже на встроенной графике.
  • Иллюзион — зал-оммаж Superliminal: перспективные трюки, где экспонат меняет размер в зависимости от того, откуда на него смотришь.
  • Планетарий — купол со звёздным небом из шейдера; сидишь на скамейке и смотришь, как над головой крутятся созвездия из пиктограмм моих проектов.
  • 46 ачивок — от «прочитал все таблички» до совсем секретных. Геймификация тут не сахар, а навигация: ачивки мягко ведут в залы, до которых посетитель сам бы не дошёл.
Экспонат «Оригинал против» — чёрный кот под кислотной подсветкой
Экспонат «Оригинал против» — чёрный кот под кислотной подсветкой

Грабли#

Главная — SwiftShader: на машинах без GPU браузер честно рендерит WebGL программным растеризатором, и то, что летает на видеокарте, превращается в слайд-шоу. Пришлось делать детектор и режим пониженной детализации (?lite), который выключает тени и половину света. Вторая грабля — звук: браузеры не дают играть аудио до первого клика, поэтому музей встречает тишиной и включает эмбиент только после «входного билета».

Что вышло#

Средняя сессия в музее — в шесть раз длиннее, чем на странице портфолио. Люди пишут отзывы в книгу у выхода (да, она настоящая, отзывы сохраняются). Несколько человек нашли пасхалку с уткой и написали мне об этом лично — такой глубины вовлечения не даёт ни один лендинг.

Портфолио отвечает на вопрос «что человек сделал». Музей — на вопрос «как человек думает».

Вход — по ссылке, билет бесплатный, утка спрятана честно.