Я Максим, веб-разработчик. 3D в браузере — уже не экзотика и не «красивая игрушка для портфолио». Конфигураторы товаров, интерактивные визуализации, 3D-модели в карточках — всё это работает в браузере без установки плагинов и приложений. За последний год я реализовал три коммерческих проекта с 3D: конфигуратор кухонь для мебельной фабрики, интерактивный каталог ювелирных изделий и архитектурную визуализацию для застройщика. Расскажу, как это устроено технически, где 3D окупается, и почему для большинства бизнесов это пока остаётся экспериментом.
WebGL и Three.js: что стоит за 3D в браузере
Любая 3D-графика в браузере работает через WebGL — низкоуровневый API, который использует видеокарту устройства для рендеринга трёхмерных сцен. WebGL поддерживается всеми современными браузерами — Chrome, Firefox, Safari, Edge — и работает как на десктопах, так и на смартфонах.
Но писать на чистом WebGL — всё равно что рисовать попиксельно: технически возможно, но мучительно медленно. Поэтому существуют библиотеки-обёртки, и главная из них — Three.js. Это JavaScript-библиотека, которая абстрагирует сложность WebGL и даёт удобный высокоуровневый API: сцены, камеры, освещение, материалы, анимации — всё описывается в нескольких строках кода вместо сотен.
Для React-проектов (а большинство моих проектов на Next.js/React) я использую React Three Fiber — это обёртка над Three.js в виде React-компонентов. Вместо императивного кода в стиле «создай сцену, добавь камеру, добавь свет» вы описываете 3D-сцену декларативно, как обычный JSX. Это ускоряет разработку и упрощает поддержку — 3D-компоненты живут рядом с остальным React-кодом и следуют тем же паттернам.
Новый стандарт WebGPU, который приходит на смену WebGL, обещает ещё более высокую производительность, но пока находится в стадии внедрения и для продакшн-проектов я его ещё не использую.
Где 3D на сайте реально оправдано
3D ради 3D — плохая идея. Я видел сайты, где вращающаяся 3D-модель кофемашины загружалась 15 секунд на среднем смартфоне, пока пользователь ждал и уходил. Для каждого проекта я задаю вопрос: приносит ли 3D дополнительную ценность, которую нельзя получить фотографиями?
3D-конфигуратор — это самый коммерчески оправданный сценарий. Мебель (кухни, шкафы-купе, диваны), автомобили, строительные конструкции — клиент выбирает параметры (цвет, материал, комплектацию, размер) и видит результат в реальном времени в 3D. Это не просто визуализация, это инструмент продаж: человек вовлекается в процесс создания «своего» продукта, эмоционально привязывается к результату и с большей вероятностью заказывает. По моему опыту, конверсия 3D-конфигуратора на 25–40% выше, чем у традиционного каталога с фотографиями.
Мой проект для мебельной фабрики — конфигуратор кухонь: пользователь выбирает форму кухни (прямая, угловая, П-образная), расставляет модули, выбирает фасады, столешницу, ручки — и видит реалистичную 3D-модель. К конфигуратору привязан расчёт стоимости, который обновляется в реальном времени. Средний чек заказов через конфигуратор оказался на 30% выше, чем через обычный каталог — люди «собирали» более дорогие комплектации, потому что видели результат.
Интерактивная карточка товара — вместо 10 фотографий с разных ракурсов одна 3D-модель, которую можно вращать, приближать, рассматривать со всех сторон. Для ювелирных изделий, электроники, обуви — это сильно лучше, чем статичные снимки. Клиент чувствует контроль и видит товар так, как если бы держал его в руках.
Архитектурная визуализация — для застройщиков: интерактивная 3D-модель жилого комплекса с выбором этажа, подъезда, квартиры. Пользователь «облетает» здание, кликает на окно — и видит планировку квартиры с ценой и характеристиками. Такая визуализация заменяет десятки PDF-планировок и макетов, а для покупателя — становится решающим фактором при выборе между двумя застройщиками.
Образовательные и технические визуализации — интерактивные анатомические модели для медицинских порталов, разборные 3D-модели оборудования для промышленных сайтов, визуализация данных в трёх измерениях. Здесь 3D работает как инструмент объяснения сложных концепций.
Форматы 3D-моделей для веба
Выбор формата — критически важный момент, потому что от него зависит и качество визуализации, и скорость загрузки, и совместимость с устройствами.
glTF/GLB — де-факто стандарт для 3D в вебе. glTF (GL Transmission Format) разработан Khronos Group специально для передачи 3D-контента через интернет. GLB — бинарная версия glTF, в которой все ресурсы (геометрия, текстуры, анимации) упакованы в один файл. Мой выбор по умолчанию для любого проекта. Поддерживает PBR-материалы (физически корректное освещение), анимации, несколько уровней детализации. Отлично оптимизируется Draco-сжатием — размер файла уменьшается в 5–10 раз.
OBJ — старый формат, простой и универсальный, но без поддержки анимаций и современных материалов. Подходит для простых статичных моделей, но для коммерческих проектов я не рекомендую — glTF лучше во всём.
USDZ — формат Apple для AR-визуализации на iOS. Необходим, если вы хотите поддержку дополненной реальности на iPhone и iPad.
FBX — популярный формат для обмена между 3D-редакторами, но для веба не подходит напрямую. Модели в FBX конвертируются в glTF перед размещением на сайте.
Оптимизация производительности: без неё 3D убьёт сайт
3D-контент — это тяжёлый контент. Неоптимизированная 3D-модель может весить 50–100 МБ и повесить даже мощный смартфон. Оптимизация — не опция, а обязательный этап.
Полигоны: для веба оптимальное количество — от 10 000 до 50 000 полигонов на модель. Для сравнения, модели для кинематографа содержат миллионы полигонов — в браузере это невозможно. Уменьшение полигонов (decimation) делается в 3D-редакторе (Blender, 3ds Max) с контролем качества.
Текстуры: вместо несжатых PNG размером 4096x4096 используйте WebP или KTX2-текстуры. KTX2 — формат, оптимизированный для GPU, загружается и рендерится быстрее. Размер текстур для веба: 512x512 для мелких деталей, 1024x1024 для основных поверхностей, 2048x2048 максимум для крупных объектов.
Draco-сжатие: Google Draco — библиотека сжатия геометрии 3D-моделей. Подключается как расширение glTF и уменьшает размер файла в 5–10 раз без видимой потери качества. Для моего проекта конфигуратора кухонь каждый модуль весил около 2 МБ без Draco и 300 КБ с ним — разница колоссальная.
Ленивая загрузка: 3D-сцену загружайте только когда пользователь доскроллил до неё. Intersection Observer API идеально подходит для этого. До момента видимости показывайте статичное превью — скриншот 3D-модели.
Уровни детализации (LOD): для сложных сцен показывайте упрощённую модель на расстоянии и детализированную — при приближении. Three.js поддерживает LOD из коробки.
Fallback для слабых устройств: определяйте производительность устройства и на слабых смартфонах показывайте обычную галерею изображений вместо 3D. Лучше статичная картинка, чем тормозящая 3D-модель.
Стоимость разработки 3D для сайта
Давайте честно о цифрах. Создание одной 3D-модели товара: 5 000–30 000 рублей в зависимости от сложности. Разработка интерактивного 3D-просмотра на сайте (карточка товара с вращением): 30 000–80 000 рублей. Полноценный 3D-конфигуратор с выбором параметров и расчётом стоимости: 200 000–800 000 рублей в зависимости от количества параметров и сложности логики.
Это серьёзные инвестиции, и они оправданы не для каждого бизнеса. Мой критерий: если средний чек товара выше 30 000 рублей и визуализация критически влияет на решение о покупке — 3D окупится. Для товаров с чеком менее 5 000 рублей — скорее всего нет, лучше вложить эти деньги в качественные фотографии.
Итог
3D на сайте — мощный инструмент для определённых ниш: мебель, недвижимость, ювелирные изделия, промышленное оборудование. Технология зрелая, инструменты доступные, браузеры поддерживают. Но без оптимизации производительности и без чёткого понимания, какую коммерческую задачу решает 3D, это будет дорогая игрушка, которая замедлит сайт и запутает пользователей. Начните с малого — одна-две 3D-модели для топовых товаров, замерьте влияние на конверсию и время на странице — и принимайте решение о масштабировании на основе цифр.