Главная🔥 Создание сайтовАвтоматизация и CRMSEO-продвижениеКейсыКонтакты
Бытовки и хозблоки
Бытовка стандарт
Режим сценызагружаем 3D…
← Все кейсы
Кейс · 2026 · лендинг + 3D

Одна 3D-сцена под любую страницу — от бытовки до дома.

Базовый только холст — один WebGL-канвас на весь сайт. Всё остальное — модель, материалы, окружение, ракурс — сцена собирает под конкретную страницу. Вы внутри кейса, собранного из самого сайта: модель настоящая, её можно крутить.

Задача

Из «дешёвых контейнеров» — в сборные модули под задачу.

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

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

Брендбук

Чёрный, off-white и ни одного лишнего цвета.

Нажмите на цвет — покажем, где он работает на карточке модуля.

Основной текст, заголовки и главная кнопка. Почти чёрный на холодном off-white: аудитория — прорабы, предприниматели, госзаказчики, поэтому подача рациональная — размеры, сроки, цена.

Фон страницы. Холодный off-white, в который без шва вливается светлый фон 3D-сцены — рендер не выглядит тёмным островом посреди сайта.

Чистый белый для карточек и панелей: блок типоразмера, плитки каталога, цена. Плоско, без скруглений и теней — только линия в 1px.

Чуть более глубокий фон: наведение на плитку каталога и кнопку меню. Состояние показано на полтона, а не цветом.

Приглушённый текст: подписи характеристик, пояснения, подпись поверх сцены.

Единственный акцент интерфейса — и тот используется скупо: состояние hover у главной кнопки. Никакого золота и декоративных курсивов.

Единственный яркий цвет живёт не в интерфейсе, а в 3D: угловые фитинги модуля. Интерфейс молчит — взгляд достаётся модели.

3D-модель сборного модуля с жёлтыми угловыми фитингами
Бытовки и хозблоки

Бытовка стандарт

Типоразмер
6.0 × 3.0 м6.0 × 2.5 м
Внешние размеры
6.0 × 3.0 × 2.8 м
Площадь
18 м²
КПП и охранаОткрыть → hover
Запрос на расчётЗапрос на расчёт hover
Сборные модули под любую задачу.
Inter 700
Заголовки. Плотный трекинг −0.02em, без засечек и курсива. Сайт начинался в «editorial»-стиле с антиквой Fraunces — и был переведён на B2B-функциональный Inter за один день, через CSS-переменные темы.
6.0 × 3.0 × 2.8 м · 18 м² · +375 (29) 123-45-67
Inter 400–600
Текст, кнопки и характеристики. Табличные цифры: габариты и площадь — главный коммерческий параметр, в карточке они стоят крупно и ровно.
YARCHE
Unbounded 800
Только подпись агентства в подвале: жёлтый логотип на чёрном «чипе» — контраст на светлом фоне сайта клиента.
Экраны

Шесть экранов

На каждом — та же сцена, но в своём режиме и со своего ракурса. Снято с живого сайта.

Сцена

Десять режимов

На сайте клиента режим выбирает маршрут. Здесь — вы: нажмите на плитку, и сцена в хиро переключится.

Бытовка стандартcontainerБазовый модуль с жёлтыми угловыми фитингами — с него начинается главнаяПоказать в сцене ↑Пост охраныkppПанорамное остекление на трёх сторонах, асфальт под модулемПоказать в сцене ↑БаняbanyaБанный модуль с трубой и купелью, свой пресет камерыПоказать в сцене ↑Дачный домикdachaДеревянная отделка и зелень вокруг — те же материалы, что у баниПоказать в сцене ↑Мини-маркетkpp-shopТорговый модуль с прилавком на тёплой брусчаткеПоказать в сцене ↑Фуд-поинтkpp-foodМаркиза и неоновая вывеска над раздаточным окномПоказать в сцене ↑Жилой блок 4 модуляbytovka-2tЧетыре модуля «квадратом» в два ярусаПоказать в сцене ↑СкладskladКамера летит к торцу с распашными дверямиПоказать в сцене ↑Доставка и монтажdeliveryКран-манипулятор поднимает модуль над дорогойПоказать в сцене ↑Сборные модули по БеларусиaboutФасад крупным планом и три бригадные фигуры рядомПоказать в сцене ↑
Как это работает

Четыре шага

  1. 01
    Переход

    Посетитель открывает раздел. Канвас живёт в корневом layout и не размонтируется — модель не инициализируется заново.

  2. 02
    postMessage

    React-хост выводит из URL режим и пресет камеры и отправляет их в iframe со сценой.

  3. 03
    Материалы

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

  4. 04
    Камера

    Ракурс меняется за 800 мс по easeInOut. В покое камера медленно «дышит» и замирает, когда модель крутит человек.

Карточка и заявка

Размер — крупно в шапке.

Два клиентских компонента с сайта. Оба рабочие — понажимайте.

Типоразмер
Внешние размеры
6.0 × 3.0 × 2.8 м
Площадь
18 м² (полезная ~15 м²)

Переключатель типоразмеров на карточке: клик мгновенно меняет габариты и площадь, без подзагрузки. Размер — главный коммерческий параметр, поэтому стоит первым.

Попробуйте 80291234567 или вставьте номер из буфера. Демо: ничего не отправляется.

Маска белорусского телефона поверх react-hook-form: принимает +375…, 8029…, чистые цифры и вставку из буфера, приводит к одному виду.

Под капотом

Шесть решений, на которых всё держится

01
iframe-изоляция Three.js

Сцена живёт в отдельном документе: HMR Next-приложения не убивает WebGL-контекст и текстуры при правках кода.

02
Динамический setViewOffset

На десктопе модель сдвинута в правую часть канваса — под контент-колонку слева, на мобиле — в верхнюю, под скролл текстом снизу.

03
SSG для каталога

Все страницы каталога пререндерятся через generateStaticParams. Клиентские — только сцена и лид-форма.

04
Zod schema-first

Одна схема даёт и валидацию лид-формы, и тип значений для react-hook-form.

05
Тема на CSS-переменных

Tailwind v4 с переменными палитры: сайт перевели из «editorial»-стиля в B2B-функциональный за один день.

06
Каталог под конфигуратор

Модель данных Product / ProductFormat / ProductOption заранее структурирована под будущий конфигуратор.

Стек
  • Next.js 16
  • React 19
  • TypeScript
  • Three.js r128
  • Tailwind v4
  • react-hook-form
  • zod
  • Vercel
FAQ

Частые вопросы

Почему Three.js без React-обёрток?

Нужен был полный контроль над сценой и iframe-изоляцией. Сцена — самодостаточный документ на ванильном Three.js r128, хост общается с ней только через postMessage.

Что происходит с 3D при переходе между страницами?

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

Как модель помещается рядом с текстом?

Камера рендерит кадр со смещением (setViewOffset): на десктопе модель уходит в правую часть экрана, на мобиле — в верхнюю, а текст скроллится поверх.

Чем удобна маска телефона?

Поле принимает любой ввод — +375…, 8029…, чистые цифры, вставку из буфера — и нормализует в +375 (XX) XXX-XX-XX. Zod проверяет точно по маске: полузаполненный номер отправить нельзя.

Где в сцене пасхалка?

На задней стене модели контейнера — «YARCHE.by» жёлтым. Видна, только если покрутить сцену. Логотип запечён в PNG, чтобы не таскать в iframe второй экземпляр шрифта (~50 КБ экономии на первом визите). Вернитесь в хиро и проверьте.

10
режимов 3D-сцены
1
холст на все страницы
800 мс
переход камеры между ракурсами
8
модулей в каталоге, 5 категорий
Результат

Контейнеров больше нет. Есть модули под задачу.

Сайт развёрнут, лид-форма работает, каталог наполнен: 8 модулей в пяти категориях. 3D-сцена стартует параллельно с DOM — контент-колонка готова раньше, чем сцена закончит инициализацию. Слово «контейнеры» убрано из всей копии: компания читается как поставщик и интегратор сборных модулей.

— разработано в YARCHE Дизайн, фронтенд, 3D.