В Three.js визуализация объектов зависит от их материалов и способов отображения граней. Два ключевых подхода — wireframe и flatShading — позволяют управлять стилем рендеринга и характером освещения.
Wireframe — это отображение только каркаса объекта,
без заливки граней. В Three.js это достигается с помощью свойства
wireframe в материалах типа MeshBasicMaterial,
MeshStandardMaterial и других.
Пример создания каркасного куба:
const geometry = new THREE.BoxGeometry(2, 2, 2);
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00, wireframe: true });
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);
Ключевые моменты:
MeshBasicMaterial свет на объект не влияет, поэтому каркас
виден всегда.Wireframe можно комбинировать с обычным материалом для создания наложения каркаса на заполненный объект:
const solidMaterial = new THREE.MeshStandardMaterial({ color: 0xff0000 });
const wireMaterial = new THREE.MeshBasicMaterial({ color: 0x000000, wireframe: true });
const cube = new THREE.Mesh(geometry, solidMaterial);
const wireCube = new THREE.Mesh(geometry, wireMaterial);
scene.add(cube);
scene.add(wireCube);
Это позволяет видеть как форма, так и структура модели одновременно.
Flat shading — метод затенения, при котором каждая грань объекта получает один цвет, вычисленный по нормали грани. В результате поверхность выглядит гранёной, без плавных переходов между полигонами.
В Three.js flat shading включается свойством
flatShading: true при создании материала, например:
const material = new THREE.MeshStandardMaterial({ color: 0x2194ce, flatShading: true });
const sphere = new THREE.Mesh(new THREE.SphereGeometry(2, 32, 32), material);
scene.add(sphere);
Особенности flatShading:
| Свойство | Wireframe | Flat Shading |
|---|---|---|
| Отображение | Только линии | Полностью заполненные грани |
| Влияние света | Нет (для MeshBasicMaterial) | Да, учитывает источники света |
| Цель | Анализ геометрии, отладка | Эстетика, акцент на гранях, low-poly стиль |
| Применяемость | Любой материал с wireframe: true |
Только материалы с поддержкой flatShading (например,
MeshStandardMaterial, MeshPhongMaterial) |
В Three.js возможно использовать оба подхода одновременно для создания эффектов вроде каркасной low-poly модели с чёткими гранями:
const material = new THREE.MeshStandardMaterial({
color: 0x8ac926,
flatShading: true,
wireframe: true
});
const geometry = new THREE.IcosahedronGeometry(2, 1);
const mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);
Результат — объект, где видно как гранёность, так и структуру полигонов. Такой метод особенно эффективен для динамических сцен и художественных визуализаций.
flatShading: true и
дополнительный MeshBasicMaterial с wireframe,
наложенный поверх.Wireframe и flatShading — инструменты, которые позволяют по-разному интерпретировать геометрию и освещение в сцене. Wireframe раскрывает внутреннюю структуру модели, а flatShading подчёркивает плоскости и грани, создавая характерный low-poly стиль. Их комбинация открывает широкий спектр визуальных эффектов и является мощным инструментом при работе с Three.js.