В Three.js карта смещений (displacementMap) используется
для динамического изменения геометрии объекта на основе текстуры. В
отличие от нормалей, которые изменяют только визуальное освещение
поверхности, карта смещений реально деформирует вершины модели, создавая
рельефные эффекты.
Ключевыми материалами для работы с displacementMap
являются MeshStandardMaterial и
MeshPhongMaterial. Основные свойства:
const geometry = new THREE.PlaneGeometry(10, 10, 256, 256);
const texture = new THREE.TextureLoader().load('heightmap.png');
const material = new THREE.MeshStandardMaterial({
color: 0xffffff,
displacementMap: texture,
displacementScale: 2,
displacementBias: -1
});
const mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);
Для эффективного использования карты смещений важно, чтобы геометрия имела достаточное количество вершин. Смещение применяется к каждой вершине, поэтому низкополигональные объекты будут выглядеть грубо. Наиболее подходящие геометрии:
PlaneGeometry с большим числом сегментов.SphereGeometry, BoxGeometry с увеличенным
параметром сегментации.BufferGeometry, где вручную создана
сетка с нужной плотностью вершин.Карта смещений обычно хранится в градациях серого. Черный цвет соответствует минимальному смещению, белый — максимальному. Для тонкой настройки эффекта можно комбинировать:
material.displacementScale = 1.5;
material.displacementBias = -0.75;
Также можно использовать анимацию карты смещений, подменяя текстуру или изменяя параметры масштаба в реальном времени.
Карта смещений часто сочетается с другими текстурами для более реалистичного результата:
const material = new THREE.MeshStandardMaterial({
map: colorTexture,
displacementMap: heightMap,
normalMap: normalTexture,
roughnessMap: roughnessTexture,
displacementScale: 2
});
Высокое разрешение геометрии и большие текстуры смещений сильно нагружают GPU. Для оптимизации используют:
ShaderMaterial с кастомными
displacement-приемами для более гибкого контроля.Карты смещений применяются в различных сценариях:
displacementScale и
displacementBias подбираются экспериментально, так как
визуальный эффект зависит от размеров и сегментации объекта.Карта смещений — мощный инструмент для создания реалистичных поверхностей в Three.js, позволяющий оживлять статические геометрии и добавлять визуальную глубину без необходимости моделирования каждого рельефного элемента вручную.