Создание интерактивного 3D-кластера с помощью Three.js, TSL и Three Start | Кодропс

Создание интерактивного 3D-кластера с помощью Three.js, TSL и Three Start | Кодропс



Примечание редактора: Пока мы отсчитываем время до первой конференции Three.js в Париже в сентябре этого года, мы продолжаем празднование сообщества Three.js вместе с Франческо Микелини. В этом превосходном руководстве Франческо шаг за шагом знакомит нас с процессом превращения простого икосаэдра в динамический интерактивный 3D-кластер, попутно изучая Three.js, TSL, WebGPU и Three-Start.

🎟️Все еще нет билета? В рамках нашего партнерства с первой конференцией Three.js читатели Codrops могут использовать код CODROPS получить скидка 15%. Получите свой билет

Для меня нет ничего необычного в том, что я нахожусь в какой-нибудь социальной сети в поисках вдохновения как для своих клиентских проектов, так и для потенциальных экспериментов.

Это руководство существует по этой причине: пост в инстаграме Некоторое время назад я заметил, что это в конечном итоге превратилось в интерактивную визуализацию.

Отказ от ответственности: это руководство сразу переходит к делу, поэтому я не буду описывать весь Three.js или какую-либо конкретную настройку сборщика. Я оставлю это тебе!

Разрушение всего эффекта

Прежде всего, давайте определимся, что содержит в себе эффект:

  • Вращающийся икосаэдр, грани которого выдавлены.
  • Такие грани масштабируются вверх и вниз (мы воспользуемся встроенной функцией шума)
  • Эффект сглаживания постобработки

Вот и все! И хорошо, что две из этих трех частей уже включены в Three.js.

Что мы будем использовать

Заметка о «Трех стартах»

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

Что мне больше всего нравится в нем, так это то, что он позволяет разделить приложение Three.js на модули и компоненты.

Модуль — это «глобальная функция», которая всегда работает во всем приложении; Загрузка активов, физика, управление вводом — все это можно поместить в модуль.

С другой стороны, компоненты — это, по сути, поведение, которое вы можете прикрепить к каждому Object3D.

Например, вы можете создать Spin компонент, который принимает axis и speed параметр, и при каждом обновлении жизненного цикла такого компонента вы можете вращать объект по этой оси в зависимости от скорости.

Кроме того, вы можете добавлять этот компонент несколько раз, если вам нужно заставить объект вращаться по нескольким осям с разной скоростью.

Хватит разговоров, начнем строить!

Настройка проекта

Для начала установим необходимые нам пакеты:

$ pnpm add three three-start gsap

Затем создайте базовый HTML:



  
    
    
    
    three-start
  
  
    
    

Прокрутить вверх