Как делать сайты с 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 подробнее, то есть вот такая лекция. Но она уже больше для программистов

5252
48 комментариев

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

13

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

11

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

5

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

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

1

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

3

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

8