MeshBasicMaterial — это материал в библиотеке Three.js,
который не реагирует на источники света сцены. Он отображает цвет,
текстуру или карту цветов ровно так, как они заданы, что делает его
идеальным для визуализации элементов без расчёта освещения и теней.
Основная особенность — материал сохраняет постоянный цвет независимо от
положения и интенсивности света.
const material = new THREE.MeshBasicMaterial({ color: 0xff0000 });
В этом примере создаётся красный материал, который будет выглядеть одинаково при любой освещённости.
MeshBasicMaterial поддерживает множество свойств,
влияющих на внешний вид объекта:
0xff0000), строкой ('red') или
объектом THREE.Color.THREE.Texture),
накладываемая на поверхность.false).const material = new THREE.MeshBasicMaterial({
color: 0x00ff00,
opacity: 0.5,
transparent: true
});
THREE.FrontSide, THREE.BackSide,
THREE.DoubleSide.true.MeshBasicMaterial полностью поддерживает текстуры.
Основные виды карт:
Пример применения текстуры:
const texture = new THREE.TextureLoader().load('texture.jpg');
const material = new THREE.MeshBasicMaterial({ map: texture });
Текстура будет отображена без влияния света, сохраняя исходные цвета.
Режим каркаса полезен для отладки и стилизованной визуализации:
const material = new THREE.MeshBasicMaterial({
color: 0x0000ff,
wireframe: true
});
Этот режим игнорирует цвет и текстуры, отображая лишь линии полигона.
Для работы с прозрачностью MeshBasicMaterial использует
сочетание свойств transparent и opacity. Если
требуется прозрачный объект:
const material = new THREE.MeshBasicMaterial({
color: 0xffff00,
transparent: true,
opacity: 0.3
});
Альфа-карта позволяет создавать сложные прозрачные участки:
const alphaTexture = new THREE.TextureLoader().load('alpha.png');
const material = new THREE.MeshBasicMaterial({
map: texture,
alphaMap: alphaTexture,
transparent: true
});
По умолчанию материал отображает только фронтальные грани
(THREE.FrontSide). Для объектов, где требуется видеть
внутренние стороны:
const material = new THREE.MeshBasicMaterial({
color: 0xffffff,
side: THREE.DoubleSide
});
Это важно при создании тонких оболочек или полых объектов.
MeshBasicMaterial — один из самых простых и быстрых
материалов, так как не требует расчёта освещения. Он идеально подходит
для 2D-подобных рендеров, прототипов и декоративных элементов, где
физически корректное освещение не требуется.
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
const geometry = new THREE.BoxGeometry();
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00, wireframe: false });
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);
camera.position.z = 5;
function animate() {
requestAnimationFrame(animate);
cube.rotation.x += 0.01;
cube.rotation.y += 0.01;
renderer.render(scene, camera);
}
animate();
В этом примере создаётся вращающийся куб с
MeshBasicMaterial, который остаётся ярким и одинаковым по
цвету при любой сценической освещённости.
MeshBasicMaterial значительно быстрее, чем материалы с
освещением (MeshStandardMaterial,
MeshPhongMaterial).MeshBasicMaterial — фундаментальный инструмент в
Three.js, обеспечивающий быстрый рендер, простое управление цветом и
текстурами без вычислений освещения, что делает его незаменимым для
прототипирования и декоративных сцен.