ThreeJS-纹理贴图大集合

纹理用于表现物体细节,通过各种贴图如图片、透明、凹凸、法线等增强视觉效果。Three.js中的纹理属性包括偏移、旋转和重复模式等。文章列举了9种常见的纹理类型,如透明贴图控制不透明度,法线贴图改变光照效果,以及位移贴图影响几何形状等。

目录

什么是纹理?

纹理的常用属性

1.图片纹理贴图

2.透明纹理贴图

3.凹凸贴图

4.法线贴图

5.环境贴图

6.置换贴图(位移贴图)

7.金属贴图

8.粗糙度纹理贴图

9.光照贴图

什么是UV贴图?


什么是纹理?

纹理用来表现物体的细节。理论上可以将物体的每个细节通过建模展示出来,但是这样时间成本和性能成本都太高,因此,将物体的一些细节用纹理来表示。

纹理的常用属性

const doorColorTexture = textureLoader.load('./texture/OIP.jpeg');
// 设置纹理偏移
doorColorTexture.offset.x = 0.5; //偏移量  x,y 二维方向上的偏移
// 设置纹理旋转
doorColorTexture.rotation = Math.PI / 4; //逆时针旋转
// 设置纹理旋转中心点
doorColorTexture.center.set(0.5 , 0.5)
// 设置纹理是否重复
doorColorTexture.repeat.set(2, 3); //水平重复两次 竖直重复三次
// 设置纹理重复的模式
doorColorTexture.wrapS = THREE.RepeatWrapping; //水平方向会一直重复到无穷。
doorColorTexture.wrapT = THREE.RepeatWrapping; //竖直方向

1.图片纹理贴图

图片纹理直接在物体表面应用图片。可以使用TextureLoader类的load方法来加载纹理。

//加载texture的一个类。 内部使用ImageLoader来加载文件。
const textureLoader = new THREE.TextureLoader();
const doorColorTexture = textureLoader.load('./textures/door/color.jpg'); //导入图片

const material = new THREE.MeshStandardMaterial({
    map: doorColorTexture, //应用图片纹理
});

2.透明纹理贴图

alpha贴图是一张灰度纹理,用于控制整个表面的不透明度。(黑色:完全透明;白色:完全不透明)。 默认值为null。

const doorColorTexture = textureLoader.load('./textures/door/color.jpg'); 
const doorAplhaTexture = textureLoader.load('./textures/door/alpha.jpg') //黑色为完全透明,白色区域为完全不透明

const material = new THREE.MeshStandardMaterial({
    map: doorColorTexture,
    // opacity: 0.5, //透明度
    transparent: true, //设置为允许透明
    alphaMap: doorAplhaTexture,
});

当 opacity 属性和 alphaMap 透明纹理同时使用的时候,仅使用纹理的颜色,忽略alpha通道(如果存在)。

3.凹凸贴图

用于创建凹凸贴图的纹理。黑色和白色值映射到与光照相关的感知深度。凹凸实际上不会影响对象的几何形状,只影响光照。如果定义了法线贴图,则将忽略该贴图。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值