Добавить в корзинуПозвонить
Найти в Дзене
Программы от меня

JavaScript и 3D объекты: Как я чуть не сжег процессор, создавая идеальный куб

Привет, дорогие читатели! Если вы думаете, что JavaScript — это только для кнопок «лайк» и бесконечных «onclick» на маркетплейсах, то сегодня я вас разочарую (или обрадую). Оказывается, используя JS, можно создать такой 3D-мир, что ваша видеокарта начнет шептать молитвы, а начальник подумает, что вы осваиваете Unreal Engine 5, пока все ждут форму обратной связи. Спойлер: все гораздо проще и смешнее, чем кажется. Идея пришла внезапно. Сидел я, верстал очередной лендинг для кошачьего фитнеса, и вдруг подумал: «А почему бы коту не покрутиться в 3D?». Ведь просто картинка — это скучно. Хочется, чтобы кот был объёмным, вращался вокруг своей оси и нагло смотрел на пользователя, даже когда тот скроллит страницу. Гугл выдал мне фразу, от которой у нормального фронтендера обычно дергается глаз: Three.js. Если вы не знаете, что это такое, представьте, что обычный JavaScript — это пластилин, а Three.js — это 3D-принтер, который работает на кофеине и вашем терпении. Чтобы нарисовать что-то объ
Оглавление

Привет, дорогие читатели! Если вы думаете, что JavaScript — это только для кнопок «лайк» и бесконечных «onclick» на маркетплейсах, то сегодня я вас разочарую (или обрадую).

Оказывается, используя JS, можно создать такой 3D-мир, что ваша видеокарта начнет шептать молитвы, а начальник подумает, что вы осваиваете Unreal Engine 5, пока все ждут форму обратной связи.

Спойлер: все гораздо проще и смешнее, чем кажется.

С чего всё началось?

Идея пришла внезапно. Сидел я, верстал очередной лендинг для кошачьего фитнеса, и вдруг подумал: «А почему бы коту не покрутиться в 3D?». Ведь просто картинка — это скучно. Хочется, чтобы кот был объёмным, вращался вокруг своей оси и нагло смотрел на пользователя, даже когда тот скроллит страницу.

У котиков не только лендинги
У котиков не только лендинги

Гугл выдал мне фразу, от которой у нормального фронтендера обычно дергается глаз: Three.js.

Если вы не знаете, что это такое, представьте, что обычный JavaScript — это пластилин, а Three.js — это 3D-принтер, который работает на кофеине и вашем терпении.

-3

Сцена, камера, мотор!

Чтобы нарисовать что-то объёмное, нужно сделать три вещи, как в настоящем кино:

  1. Сцена — это ваша вселенная. Пока она пустая, как холодильник в пятницу вечером.
  2. Камера — это глаза, которыми вы смотрите на своё творение. Если её неправильно поставить, вы будете пялиться в пустоту или в спину объекта (обидно, знаете ли).
  3. Рендерер — это магический ящик, который превращает цифры в картинку на экране.

И вот ты сидишь, пишешь:
const geometry = new THREE.BoxGeometry(1,1,1);

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

-4

А где текстуры, где блеск?!

Дальше начинается самое веселое. Чтобы куб не выглядел как кусок мыла, ему нужен материал. Вариантов масса:

  • MeshBasicMaterial — для тех, кто любит всё плоское и простое.
  • MeshStandardMaterial — для тех, кто хочет, чтобы куб бликовал, как капот новой машины.
  • А если вы хотите добавить интерактива, то можно натянуть на куб текстуру с мемным лицом кота.

Кстати, первый мой куб был ярко-розовым. Он стоял посреди космоса и вращался со скоростью 3000 оборотов в минуту. Выглядело это не как современное веб-приложение, а как галлюцинация после трех энергетиков. Но это работало!

-5

Танцы с бубном и производительность

Тут есть один подводный камень. Если вы начнете создавать 10 000 кубов с реалистичным металлическим отливом и тенями, ваш ноутбук, скорее всего, решит, что настало время стать настольным вентилятором. Шум кулера будет такой, будто вы запускаете космический корабль «Буран».

Однажды я забыл удалить старые объекты из сцены при анимации. Через 5 минут браузер съел 8 гигабайт оперативки и выдал ошибку с таким лицом: 😢. Оказывается, в 3D-мире тоже нужно выносить мусор, иначе ваш цифровой мир превращается в помойку.

Зачем это вообще нужно?

Вы скажете: «Окей, я сделал вращающийся куб. И что? Где деньги, Зин?».

А вот где:

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

Заключение

Друзья, если вы до сих пор боялись подступиться к 3D в JavaScript — зря. Это не магия, а просто еще один способ сказать миру: «Я не просто верстальщик, я — демиург трёхмерных миров!».

Начните с куба. Поставьте ему смешную текстуру. Заставьте его прыгать под музыку из вашего любимого сериала. Поверьте, чувство, когда ты создаешь что-то объёмное из ничего (ну ладно, из кода), круче, чем уровень в компьютерной игре.

А если ваш куб упадет или улетит в бесконечность — просто обновите страницу. В этом прелесть веб-разработки: даже если ваш мир рухнул, достаточно нажать F5.

P.S. Если у вас после прочтения завис браузер — значит, дух творчества уже поселился в вашем коде. Или это просто обновление Windows. Удачи в 3D-путешествиях! 🚀

*Если статья зашла — ставьте лайк, подписывайтесь.