1.纹理对象Texture做为材质的颜色贴图,材质的颜色贴图属性map是一个纹理对象Texture
可以通过修改几何体顶点数据上的uv坐标,来调整模型表面上纹理贴图的表现
2.纹理对象的平铺设置
const texture2 = new THREE.TextureLoader().load("./assets/textures/crate.gif"); //加载图片得到纹理
texture2.wrapS = THREE.MirroredRepeatWrapping; //横向对称重复
texture2.wrapT = THREE.RepeatWrapping; //纵向重复
texture2.repeat.set(4, 4); //两个方向上重复的数量
3.Texture.offset.x 贴图在模型上x方向上的偏移,可以理解相当于几何体顶点的uv坐标改变了,其实没有改变
4.解决纹理贴图颜色偏差
设置渲染器Renderer的outputColorSpace属性与纹理贴图Texture的colorSpace属性值保持一致,为以下四个之一
- NoColorSpace ---不设颜色空间
- SRGBColorSpace ---rgb颜色空间
- LinearSRGBColorSpace ---线性rgb颜色空间
- DisplayP3ColorSpace; ---display p3颜色空间
5.纹理贴图 Texture 的flipY属性
如果模型上的纹理贴图是倒立的,则设置 texture.flipY = !texture.flipY;,即可将贴图正过来
6.环境贴图 envMap
①基础模型材质:MeshBasicMaterial,漫反射材质: MeshLambertMaterial ,高光材质:MeshPhongMaterial,标准物理材质: MeshStandardMaterial,物理材质: MeshPhysicalMaterial都有环境贴图属性 evnMap
②环境贴图属性 evnMap是一个立方体纹理对象THREE.CubeTexture,用CubeTextureLoader加载六张图返回一个立方体纹理对象,赋值给evnMap
③环境贴图属性 evnMap所指向的立方体纹理对象 THREE.CubeTexture的属性colorSpace要和渲染器、纹理贴图map设置成一样的值,用于解决颜色偏差
④可以将场景Scene的环境属性.environment,设置成一个立方体纹理对象,这样所有持有物理材质的模型就都具有环境贴图的效果了,也就是说不需要对场景中所有物理材质设置环境贴图 evnMap了
7.标准物理材质: MeshStandardMaterial的三个属性
- 金属度
metalness取值范围(0-1) - 粗糙度
roughness取值范围(0-1) - 环境贴图强度
envMapIntensity,取值范围(0-1)
8.物理材质 MeshPhysicalMaterial的属性
MeshPhysicalMaterial是MeshStandardMaterial的子类
- 透明层(清漆层)
clearcoat,取值范围(0-1) - 透明层粗糙度
clearcoatRoughness,取值范围(0-1) - 透光率
transmission,取值范围(0-1) - 反射率
reflectivity,取值范围(0-1) - 折射率
ior,取值范围(1.0到2.333) - 光泽
sheen - 光泽颜色
sheenColor - 光泽颜色贴图
sheenColorMap - ...