Three.js 中常见的贴图类型

360 阅读2分钟

Three.js 是一个用于在网页上创建 3D 图形的 JavaScript 库。在 Three.js 中,贴图是一种用于给模型表面添加颜色、纹理和其他效果的图像。以下是 Three.js 中常见的一些贴图类型:

1. 普通贴图(Basic Texture)

最简单的贴图,可以用来给模型表面上色。

var texture = new THREE.TextureLoader().load('texture.jpg');
var material = new THREE.MeshBasicMaterial({ map: texture });

2. 重复贴图(Repeat Texture)

贴图可以在模型表面重复出现,创建一种平铺的效果。

var texture = new THREE.TextureLoader().load('texture.jpg');
texture.repeat.set(2, 2);
var material = new THREE.MeshBasicMaterial({ map: texture });

3. 环境贴图(Environment Texture)

用于模拟周围环境的全景图,常用于创建反射效果。

var texture = new THREE.CubeTextureLoader().load(['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg']);
var material = new THREE.MeshBasicMaterial({ envMap: texture });

4. 法线贴图(Normal Map)

通过修改法线信息,实现模型表面的凹凸感,增加细节。

var normalMap = new THREE.TextureLoader().load('normalMap.jpg');
var material = new THREE.MeshStandardMaterial({ normalMap: normalMap });

5. 位移贴图(Displacement Map)

通过修改顶点位置,实现模型表面的位移效果。

var displacementMap = new THREE.TextureLoader().load('displacementMap.jpg');
var material = new THREE.MeshStandardMaterial({ displacementMap: displacementMap, displacementScale: 0.1 });

6. 光照贴图(Light Map)

用于指定模型表面的光照信息,以增强光照效果。

var lightMap = new THREE.TextureLoader().load('lightMap.jpg');
var material = new THREE.MeshBasicMaterial({ lightMap: lightMap });

7. 透明贴图(Alpha Map)

指定模型表面的透明度,可以根据贴图的灰度值来确定透明度。

var alphaMap = new THREE.TextureLoader().load('alphaMap.jpg');
var material = new THREE.MeshBasicMaterial({ alphaMap: alphaMap, transparent: true });

8. 阴影贴图(Shadow Map)

用于生成阴影效果的贴图,可以用在阴影投射和接收的物体上。

var shadowMap = new THREE.TextureLoader().load('shadowMap.jpg');
var material = new THREE.MeshBasicMaterial({ shadowMap: shadowMap });

9. 立方体贴图(Cube Map)

类似于环境贴图,但用于模拟模型周围的立方体环境。

var cubeMap = new THREE.CubeTextureLoader().load(['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg']);
var material = new THREE.MeshBasicMaterial({ envMap: cubeMap });

10. 颜色渐变贴图(Gradient Map)

通过渐变贴图实现模型表面的颜色渐变效果。

var gradientMap = new THREE.TextureLoader().load('gradientMap.jpg');
var material = new THREE.MeshBasicMaterial({ gradientMap: gradientMap });

这些贴图类型提供了灵活性,使开发者能够创建丰富多彩的 3D 渲染效果。在实际开发中,根据项目需求选择适当的贴图类型是非常重要的。

感谢阅读! 内容又chatgpt由对话整理而来