Разрушаем вместо создания: как мы сжали горы контента и разработали логотип из камня

Всем привет, это снова команда Chipsa! Мы выходим на финишную прямую в рассказе о том, как менялся наш сайт. Ранее вы уже узнали, какие смыслы заложены в проект и какую дизайнерскую концепцию мы воплотили. На очереди — последний, но от этого не менее важный аспект: техническая реализация. Возможно, он не столь «громкий» и «скандальный», как предыдущие, но, поверьте, здесь тоже было место впечатляющим находкам и неожиданным вызовам. Расскажем о наших решениях в области оптимизации и о том, через какие тернии приходилось пробиваться.

Ведущий разработчик проекта, Павел Мажуга
Ведущий разработчик проекта, Павел Мажуга

Основные технические сложности

Несмотря на множество задумок, оставленных «на потом», техническая реализация оказалась насыщенной и непростой. Проект вышел крутым и нетривиальным: трое фронтенд-разработчиков работали над ним, приложив массу усилий. Основной стек: Next.js (React) и React-three-fiber (Three.js).

Ключевые вызовы:

  • Большое количество медиафайлов, которые требовали серьёзной оптимизации.
  • Синхронизация HTML и WebGL, особенно при скролле.
  • Плавные переходы между страницами и при наведении (hover-эффекты).
  • Чат-бот-форма, которая одновременно учитывает множество состояний.

Давайте подробнее остановимся на самых интересных из этих задач.

Оптимизация видео: быстро и без потерь

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

  • Уменьшить вес файлов.
  • Конвертировать видео в более современные форматы.
  • Использовать CDN, который выбирает ближайший к пользователю сервер для быстрой загрузки.

Решение

Для оптимизации использовали ffmpeg — универсальный инструмент для работы с видео. Приведём несколько примеров команд:

Генерация HEVC:

ffmpeg -i input.mp4 -c:v libx265 -crf 30 -vf scale=1920:-2 -tag:v hvc1 -movflags faststart output-opt.hevc.mp4

Генерация AV1:

ffmpeg -i input.mp4 -c:v libsvtav1 -crf 40 -movflags faststart -vf scale=1920:-2 output-opt.av1.mp4

Оптимизация MP4:

ffmpeg -i input.mp4 -c:v libx264 -pix_fmt yuv420p -crf 20 -vf scale=1920:-2 -movflags +faststart output-opt.mp4

В результате мы «сжали» видео без заметной потери качества. Теперь ролики на сайте загружаются быстро и работают без лагов.

Каменный логотип с интерактивной анимацией

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

Как это реализовано

Для создания эффекта использовали Three.js и модель в формате GLB. Анимации распада и сборки логотипа дизайнер подготовил в Blender, а мы воспроизвели их на фронтенде с помощью THREE.AnimationMixer.

Чтобы вычислить воздействие курсора, применили базовые векторные расчёты в JavaScript. Теперь эффект работает и на сенсорных устройствах. Качественное освещение обеспечили картами нормалей и картами окружения, которые усилили реализм.

Анимированные карточки кейсов

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

Реализация эффекта

Мы снова обратились к WebGL. Canvas растянули на весь экран, спрятали HTML-элементы с изображениями и видео, а вместо них использовали PlaneGeometry. Затем подогнали их размер под оригинальные HTML-элементы и синхронизировали позиции при прокрутке страницы.

Итог

Мы поделились лишь самыми яркими моментами этого проекта, но в реальности там было гораздо больше сложностей и интересных решений. Этот рассказ — лишь иллюстрация нашего подхода к работе. Мы любим искать креативные решения, и такие задачи — наш идеальный вызов.

Главное, что наш сайт действительно удался. Он стал мощным опытом и для нас, и для наших клиентов. А самое важное — он нравится всем, кто с ним работает.

Подписывайтесь на наш телеграм-канал, чтобы быть в курсе последних новостей и увидеть ещё больше интересных кейсов нашей студии!

1
1 комментарий