3D · Урок 42

3D: Three.js и WebGL

Браузер умеет рисовать 3D через WebGL. Three.js прячет низкоуровневые детали: вы описываете сцену, камеру и объекты, а библиотека рендерит изображение.

Первая сцена

import * as THREE from "three";

const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, innerWidth / innerHeight, 0.1, 100);
const renderer = new THREE.WebGLRenderer();
document.body.append(renderer.domElement);

const box = new THREE.Mesh(
  new THREE.BoxGeometry(1, 1, 1),
  new THREE.MeshNormalMaterial()
);
scene.add(box);
camera.position.z = 3;

function tick() {
  box.rotation.x += 0.01;
  box.rotation.y += 0.01;
  renderer.render(scene, camera);
  requestAnimationFrame(tick);
}
tick();

Почему это работает

ℹ️
3D в вебе хрупко: нужно думать о производительности на телефонах. Проверяйте fps и сокращайте детализацию для слабых устройств. Иногда куб за спиной чуть детальнее — мастерство.
💡
Three.js — это и «штуки для дизайна» (роботы, интерактив на лендингах), и полноценные игры/web-арт. Начните с куба и вращения — дальше придут загрузчики моделей (glTF) и физика.