有时候我们需要某个场景或者物体突出其凹凸特征,让物体看起来更有层次感,怎么办?Three.js的许多材质就提供了凹凸贴图的属性,下面笔者以THREE.MeshPhongMaterial为例,演示如何对一个立方体进行凹凸贴图:
function textureBump() {
let texture1 = new THREE.TextureLoader().load("textures/brick_bump.jpg");//凹凸
let texture2 = new THREE.TextureLoader().load("textures/brick-wall.jpg");//打底
let geometry = new THREE.BoxGeometry(10, 10, 10, 30, 30, 30);
let material = new THREE.MeshPhongMaterial({
map: texture2,
bumpMap: texture1,
bumpScale: 0.3
});
boxMesh = new THREE.Mesh(geometry, material);
scene.add(boxMesh);
}
上述代码利用了THREE.MeshPhoneMaterial的map和bumpMap属性对立方体进行贴图,本文将其实现为一个小demo,并添加了一个调节凹凸程度的菜单栏,不同凹凸程度实现效果如下: