{"id":14276,"url":"\/distributions\/14276\/click?bit=1&hash=721b78297d313f451e61a17537482715c74771bae8c8ce438ed30c5ac3bb4196","title":"\u0418\u043d\u0432\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0439 \u0442\u043e\u0432\u0430\u0440 \u0438\u043b\u0438 \u0443\u0441\u043b\u0443\u0433\u0443 \u0431\u0435\u0437 \u0431\u0438\u0440\u0436\u0438","buttonText":"","imageUuid":""}

Как делать сайты с 3D

В этот раз расскажем, как можно использовать 3D для сайтов. Как создавать трехмерные объекты, на что смотреть при разработке дизайна с 3D, как оптимизировать работу таких сайтов и пару слов о WebGL. Статья поможет более корректно ставить задачи 3D-шникам.

Для начала объясним, зачем вообще так заморачиваться:

Текст — это когда ты заставляешь человека строить образ в своей голове, опираясь на груду букв, которую ты ему любезно предоставил. Гораздо более гуманно этот образ дать готовым. Для этого мы используем в создании дизайна медиа: 3D, видео, фото, иллюстрации и тд. Заботливый и удобный интерфейс помогает пользователю и не принуждает его работать.

3D — это не про промо, а про смысл

3D как и текст — сугубо сервисная вещь. Как его использовать и применять ли вообще — вопрос UX. Например в этом сайте трехмерные модели нужны для того, чтобы показать конкретные объекты-триггеры и удовлетворить информационный запрос ЦА. Это ускоряет продажу и напрямую завязано на бизнес-задачу клиента. Так что вернее относиться к 3D не как к игрушке, а как к недешёвому инструменту передачи информации.

Подготовка

  • Концепт нужно довести до состояния, когда там есть все, кроме 3D;

  • Подготовить макеты страниц, на которые нужно 3D;

  • Подготовить файлы с пустым альфа-каналом, чтобы можно было сделать видеорендер и примерить его;
  • Создать среду и ограничения. Определяемся, какой объект должен быть, его вид и характеристики. С участием фронтендеров определяем максимум, который вывезет будущий сайт;

  • Отдаем 3D-шнику, он готовит модели. Только получив их, можно переходить к обсуждению анимаций.

По большому счету есть два ключевых ограничения, о которых надо думать на этапе подготовки:

  • Коммуникационная задача сайта вообще и 3D в частности;
  • Техническая реализация.

Также на этапе подготовки нужно будет решить, будут ли в интерфейсе реальные модели или нет. Ведь…

есть два стула:

— на одном реальные модели

— на другом фейки: видео- и фоторендеры

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

Давайте сразу разберемся с тем, что делать, если вы будете встраивать фейковые модели. Если коротко, то эта работа аналогична встраиванию видео. Специалист по 3D готовит модели и сцены с ними, рендерит это в видео и уже его вы и встраиваете. Как это делать, напомню, подробно расписано в другой нашей статье на VC.

Однако добавим: чем меньше цветов и перерисовок экрана, тем лучше можно будет оптимизировать видеорендер для встраивания. Работая с 3D-визуализациями, добиться этого проще, чем при встраивании реальных съемок. Можно сделать всё монохромным, или сделать значительную часть кадра статичной. Это сократит площадь перерисовок и сделает такой видеорендер легким.

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

Реальные 3D-модели в интерфейсе

Реальные модели в интерфейсе сайта — это технология WebGL. С ее помощью можно по-настоящему встроить 3D-модель в сайт и делать с ней что угодно. Для работы вам понадобятся библиотеки:

three.js — большая, красивая, сочная, но может показаться сложной для начинающих. regl — поменьше, чем three.js, но проще для освоения.

Сочетание WebGL и указанных выше библиотек позволяют получить в интерфейсе настоящую интерактивность, дают множество визуальных эффектов, позволяют формировать впечатляющий пользовательский опыт. При этом можно решать не только промо-задачи, но и иллюстрировать сложные для понимания вещи: интерактивную инфографику, модели механизмов, оборудования, сооружений.

Пример интерактивного повествования — сайт НИИ ТП Роскосмоса. С помощью ряда сцен рассказываем об услугах компании, ее якорных проектах и принципах работы некоторых систем. Никаких текстов, минимум напряжения для юзера

У WebGL есть особенности:

  • Модели не будут выглядеть как на рендере. Хайполи поместить в интерфейс будет сложно;
  • Чтобы применять настоящие модели, нужно правильно их проектировать с оглядкой на интерфейс, правильно моделить и анимировать. И дизайнер, и моделлер должны понимать, что далеко не все 3D-модели будут работать в вебе;
  • С помощью WebGL можно не только работать с 3D-моделями, но и делать реалистичную физику и наделять ею например курсор или другие элементы сайта;
  • WebGL позволяет создавать 3D эффекты: шейдерные переходы и искажения, эффекты глубины и много что еще.

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

Оптимизируем 3D-модели

Для понимания: в WebGL все изменения происходят с помощью JavaScript. А он исполняется на устройстве пользователя, да еще и в браузере. Разные браузеры работают по-разному. И если речь идет о сложной трехмерной модели: органика с анимациями, скелетная анимация, механизмы/оборудование, то оптимизировать следует на этапе дизайна. Дизайнеру нужно учитывать возможный объем файла, количество сцен, насколько сложное освещение в сцене потребуется. Когда сцена и объект хорошо продуманы, то технически всё можно сделать проще, ведь не во всех ракурсах нужна 100% детализация, не все элементы нужно прорабатывать и анимировать.

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

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

Работая над оптимизацией 3D, приходится бороться за каждый килобайт. 2 мб — это уже очень много. А ведь моделей может быть несколько на одной странице.

Что еще влияет на вес модели в интерфейсе:

  • Чем меньше площадь модели на экране, тем лучше. Если площадь велика, то на слабых машинах такой сайт будет заметно тормозить;

  • Экранное сглаживание (anti-aliasing). На некоторых браузерах для сглаживания используется неоптимальные алгоритмы. Поэтому браузер увеличивает изображение: он отрисовывает больший, чем надо слой и таким образом тратит ресурсы процессора на антиалиасинг. Это, кстати, легко проверить — уменьшаем размер окна, и все анимации работают плавнее.

Работа с заказчиком

Все, что связано с 3D чрезвычайно больно и дорого править. Поэтому следует придерживаться нескольких простых правил:

— Использовать кастомные референсы

— Не показывать графику отдельно от дизайна сайта

— Всё примерять на дизайне сайта

Каждый свой шаг нужно утверждать с заказчиком. Чтобы потом после массы затраченных ресурсов не сидеть и не портить свою работу. Пример такого подхода — концепт ниже. Первая его часть это очень схематичные, не проработанные визуализации, которые позволили при небольших затратах дать клиенту максимум понимания, как всё будет выглядеть и работать. Во второй части ролика видны уже чистовые модели и анимации.

Концепт для компании Сибирский антрацит. Презентует проект строительства Северомуйского тоннеля-2

Кейс с «мясом» и подводными камнями

Это сайт мы уже показывали в статье про создание интерфейсных видео. Теперь расскажем про него чуть подробнее.

Сначала хотели ставить 3D. После того, как разработали модели, стало ясно, что они велики по объему. Но мы этот нюанс проигнорировали, понадеявшись на то, что все проблемы решит WebGL. Не решил, и в ходе работы мы от него отказались, заменив реальные 3D-модели видеорендерами.

Видео тоже были очень большим. Активировались они при наведении, назад не проигрывались. То есть часть интерактивности мы принесли в жертву оптимизации. В конечном счете на каждую сцену требовалось два видео и по одному — на анимацию появления. На шесть сцен получилось 18 роликов. Это много, и далее встал вопрос, как это всё сжать.

Использовали кодеки H.264-265 и Vp9. Оказалось, что Vp9 врёт цвета, но ролики получались маленькими. А H.264-265 давали верные цвета, но видео получались тяжелыми. Перешли к сокращению количества кадров, и всё равно пришлось заниматься ручной подгонкой битрейта и кодеков. В итоге мы просто колоссально намаялись. Да, сайт получился и красивым, и быстрым, и всех устроил, но этого вала работы можно было избежать, спроектировав его иначе.

Если интересно узнать про WebGL подробнее, то есть вот такая лекция. Но она уже больше для программистов

0
48 комментариев
Написать комментарий...
Ватник Наизнанку

Вопрос "зачем" 3D на сайтах актуальней, чем "как"

Ответить
Развернуть ветку
Рвун Чехлов

Чтобы "пацанам показать, как круто мне сайт сделали". Пролет по тоннелю в 3D конечно же очень нужен компании Сибирский Антрацит. Ваш продажник большая умница.

Ответить
Развернуть ветку
Агентство МЭЙК
Автор

Просто заметим, что статья описывает ситуацию, когда уже стоит вопрос "как", а не "зачем"
Если нужно показать что-то сложное и непоказуемое, то 3D отлично выручает. Вот прекрасный свежий пример — https://niitp.ru/

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

Ответить
Развернуть ветку
Maxim Grin

У меня все тормазит. Проц знатно так напрягся.

Ответить
Развернуть ветку
Рвун Чехлов

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

Ответить
Развернуть ветку
Ingvar K

Прикольное 3Д на сайте, но долго грузится

Ответить
Развернуть ветку
Сергей Болдин

.

Ответить
Развернуть ветку
Слегка Придурковатый

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

Ответить
Развернуть ветку
Агентство МЭЙК
Автор

Спасибо за замечание. Есть пара ремарок на тему:
1) это не всегда дорого в принципе. А для клиентов, которые такое заказывают более чем подъёмно. В таких проектах 3D — не самая значительная позиция в смете;

2) за «чтобы было прикольно» к нам редко заходят («очень жаль» — тоскливо всхлипнул артдир). Приходят за решением задач, исходя из которых и подбирается инструментарий. 3D-графика всего лишь один из инструментов. И если уж выбор пал на него, значит остальные либо вообще не годятся, либо будут менее эффективны — в этом плане выбор в пользу 3D всегда оправдан. В том числе экономически.

Ответить
Развернуть ветку
Слегка Придурковатый

Да ну ладно заливать, что не всегда дорого. При прочих равных "сайт с тридешкой" будет дороже "сайта без тридешки".

Да и вообще, ты заинтересованная сторона, поэтому ясен пень, что будешь топить за триде и гнуть свою линию.

В этом нет ничего плохого, канеш, но смотреть на всё это со стороны тоже нужно.

Ответить
Развернуть ветку
Иван Тельтевский

Да кто ж спорит? Но тут не про "заливать"
Если речь идет о небольших недорогих сайтах, то 3д может стоить как вся остальная работа по такому сайту или дороже
Если же говорим о больших проектах, типа того же НИИ Роскосмоса, то "В таких проектах 3D — не самая значительная позиция в смете;" - это раз
Ну и альтернативы 3д нет, не полетишь же в космос снимать спутники и МКС, чтобы на сайте показать их работу - это два

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Петя Вася

Тоже приходилось изобретать некое 3D для сайтов. Тот еще конечно эпик фейл
https://zollaser.ru/
https://zollaser.ru/dl206s/

Ответить
Развернуть ветку
Анатолий Шмяковлев

Современный веб во всей красе, 3 МБ чтобы какая-то хуйня покрутилась, которая и смысла-то никакого не несет — детально ее не посмотришь, вертится тебе на страничке по 3 МБ и кайфует.

Ответить
Развернуть ветку
segamega

3мб ахуеть, это же даже на 2 дискеты не влезет

Ответить
Развернуть ветку
Maxim Grin

В мире без 5G это грузит 10 секунд

Ответить
Развернуть ветку
segamega

никто не мешает это грузить фоном

Ответить
Развернуть ветку
Анатолий Шмяковлев

Понятно почему в современном мире не хватает минимальных 8 ГБ, одну в фоне погрузил, вторую, прекрасно ✨

Ответить
Развернуть ветку
segamega

А вы любыми сайтами пользуетесь только с оптимизацией под 1998 год?

Ответить
Развернуть ветку
Петя Вася

Ага

Ответить
Развернуть ветку
Yury

А 3D там что?

Ответить
Развернуть ветку
Жельмандо

Ахах) Судя по всему вдохновлялись эпловскими сайтами)

Ответить
Развернуть ветку
Петя Вася

Ага

Ответить
Развернуть ветку
anyone

сайт выглядит недоделанным, или вы это имели ввиду под "эпик фейлом"?

Ответить
Развернуть ветку
Петя Вася

Ну смотря какой и что. Первый да просто заглушка. Второй доделанный, но есть траблы

Ответить
Развернуть ветку
Джон уик

Ох уж эти сайты без цены

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Легаев Игорь

Супер. Теперь чуть больше стал понимать про 3д в вебе )

Ответить
Развернуть ветку
Game Topia

На мой взгляд 3d в вэбе нужно использовать только тогда, когда необходимо интерактивное взаимодействие именно с 3d. В остальных случаях подойдет псевдо-3d (интерактивная 2d изометрия) или вообще видео.

Например весьма ограниченная интерактивность у видеорендеров — их можно проиграть только вперед. И неприемлемый размер страниц, содержащих секвенции. Весят секвенции очень много.

По видео можно перемещаться. К тому же есть ленивая загрузка и плейсхолдеры. youtube страницы же не весят много.

Ответить
Развернуть ветку
Daniil Filippov
По видео можно перемещаться.

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

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

Большинство форматов видео являются потоковыми и оптимизированы для проигрывания только «вперед». Вы же не хотите дожидаться загрузки всего видео, чтобы его посмотреть, верно?

К тому же есть ленивая загрузка и плейсхолдеры.

Если анимация находится на главном экране сайта и играет важную роль по задумке дизайнера (например, параллельно вместе с ней появляются какие-то элементы интерфейса и т.д.), никакая «ленивая загрузка» вас не спасет. Вам придется делать «прелоадер» на всю страницу, что, согласитесь, уже не так здорово.

youtube страницы же не весят много.

Откройте средства разработчика браузера и посмотрите, какой объем данных передается на странице с видео в youtube. Взял первое попавшееся — сразу же грузятся 5.5 MB, чуть-чуть поскроллил комментарии и запустил видео — уже 12 MB, и т.д.

Ответить
Развернуть ветку
Жельмандо

Это все красиво конечно. И за разработку лайк, смотреть приятно.
Но не надо лукавить что 3D-это необходимость. Это тренд/хайп/фишка на которой можно дополнительно заработать студии (как дилеру за доп опцию в комплектации авто). Также это еще пока рабочий способ выделиться на фоне серой массы региональных студий.
Тем не менее можно прекрасно выполнить бизнес-задачу заказчика с помощью 2D без потери информативности для посетителя сайта.

Ответить
Развернуть ветку
Allweneedislove

Ну почему. Например, компания производит некое оборудование и какие то решения с ним. Покрутить в триде его на сайте с какими то действиями и разъяснениями оч полезная вещь для потенциальных покупателей.

Ответить
Развернуть ветку
Жельмандо

Покрутить в 3D - это тоже самое что посмотреть фото с разных сторон. Не забывайте что вы смотрите на все через 2D экран.
Информационные сноски на схеме / фотографии с изменением масштаба или ракурса донесут все точно также, только с большей скоростью и производительностью сайта

Ответить
Развернуть ветку
Allweneedislove

Представьте сколько нужно фотографий и каких то видео подготовить. Понятно что моделью будет просто на порядок все гибче и проще. Пользователь сам решит с какой стороны на неё смотреть и что увеличивать. И весить это будет в разы меньше.

Ответить
Развернуть ветку
Пацан

Ничего не понял-но прикольно.

Ответить
Развернуть ветку
Allweneedislove

Treejs это лишь удобная обертка над низкоуровневым webgl как и прочие подобные библиотеки. А чего babylonjs не упомянули? Сейчас уже можно вполне себе реалистичные модели отображать. У Khronos есть весьма впечатляющие примеры с вольюметрическими шейдерами с преломлениями в реальном времени и прочими штуками. Другое дело все ещё требуется особо подготавливать модели , но сцены с пару миллионами полигонов в браузере в целом достаточно отзывчиво вертятся на средних компах

Ответить
Развернуть ветку
Daniil Filippov
А чего babylonjs не упомянули?

Библиотека babylon.js очень большая, и нужно серьезно повозиться, чтобы можно было ее применить на сайте. Ведь на последнем помимо всяких 3d красивостей должен быть еще и какой-никакой контент (изображения, видео и прочие ассеты).

Если грузить эту библиотеку целиком, то нужно добавить в проект около мегабайта только одного js-кода (минифицированного и сжатого в gzip!):

https://bundlephobia.com/package/@babylonjs/[email protected]

А с «tree shaking» там могут быть проблемы (по крайней мере, когда сам смотрел babylon.js, итоговый размер его бандла после оптимизаций становился ненамного меньше и проигрывал three.js для аналогичной сцены)

Сейчас уже можно вполне себе реалистичные модели отображать.

Можно, но нужно исходить из ЦА сайта. Если там будет много пользователей со старыми ноутбуками, то вся эта красота там либо не заработает (т.к. слабое интегрированное графическое ядро), либо будет чудовищно тормозить и жрать оперативную память

Ответить
Развернуть ветку
Тима Белов

Выглядит ваушно! Мне очень нравится
Но вот мой домашний ноутбук скорее сгорит, чем прогрузит тяжелёнький сайт

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Alexander Conferno

а еще для супер простой графики в вебе есть Spline.app

Ответить
Развернуть ветку
Gri

спасибо, полезно

Ответить
Развернуть ветку
Влад Бад

Ну, а мы сделали проект псевдо-3D и разместили на сайт. Проект получился "тяжелым" - мы начали делать его в расчете на 5G :((( Сейчас пытаемся сделать чуть полегче, но не отказываемся от него, потому как этот проект "закрыл" много проблемных мест. Менеджеры используют проект (как отдельное приложение) в повседневной деятельности, показывая клиентам каталог товара в выставочных салонах (на экранах 55-75"). Менеджеру гораздо удобнее и легче (физически) показать клиенту ковровое изделие в развернутом виде на экране телевизора, чем разворачивать несколько ковров (вес каждого от 15 до 45кг). А когда клиент спрашивает: "можно посмотреть вот этот и вот этот", то мы отвечаем: "мы до 20.00 для Вас абсолютно свободны" и продолжаем "тюкать" мышкой, показывая ковры друг за другом, вовлекая в процесс клиента, поскольку у себя дома (на диване) не все имеют возможность посмотреть ковры в отличном качестве на экране 55-75". Заглянуть в Ковровый Зал: mirpalasov.ru

Ответить
Развернуть ветку
Rnatery

Какая скорость интернета нужна?

Ответить
Развернуть ветку
Влад Бад

от 4g до 6g (это для сайта), а в офф-лайне приложение "тянет" комп. среднего уровня

Ответить
Развернуть ветку
Rnatery

В мбит/с сколько? Зачем тогда легче сайт, если 4г достаточно?

Ответить
Развернуть ветку
Влад Бад

Скорость интернет-соединения 4g - не везде достаточна, разве что в "городах-миллионниках". А за их пределами скорость падает. И слабовата производительность у мобильников (в ценовой категории "ниже среднего"), но это поправимо (народ апгрейдится потихоньку). Впрочем, явные проблемы с загрузкой проекта наблюдаются только при первичной загрузке. Потом просмотр "окна плеера" происходит повеселее...

Ответить
Развернуть ветку
Ildarik

3D сайты, что мне попадались, больше всего напоминали мне почившие flash проекты 🙄

Ответить
Развернуть ветку
Alchakov Developer

1) Долго грузится.
2) качество видео плохое, так как в фулхд видео на фоне не будет сразу проигрываться.
3) иногда тормозит анимация если куча вкладок открыто (есть люди у которых 4гб оперативы)

Ответить
Развернуть ветку
Александр

Хорошая статья! Кстати, в Verge3D не пробовали что-нибудь делать? По сути этот движок решает главную задачу - интеграцию пакета моделирования в пайплан создания контента для WebGL.

Ответить
Развернуть ветку
45 комментариев
Раскрывать всегда