Threejs_08 纹理颜色的调整(颜色空间的设置)

文章讲述了在Three.js中,由于人眼对光照强度感知非线性,使用sRGB颜色空间能更适应视觉,如何通过设置纹理的colorSpace属性以及使用GUI工具调整颜色空间以改善贴图显示效果。

为什么写入的贴图颜色跟实际的颜色有差别呢?

具体为啥我也不知道,总之就是threejs有两个颜色空间 一个是线性的 一个是rgb那种样式的,但是人眼对光照强度的感知并不是线性的,所以threejs的默认属性,到人眼中,看上去就是会有差异,所以我们要用颜色空间设置为sRGB,更能适应人眼的感光,所以看上去跟实际也就很相似了。

颜色空间的设置

//加载纹理
let texture = textureLoader.load(
  "/public/texture/watercover/CityNewYork002_COL_VAR1_1K.png"
);
//设置颜色空间 (默认为线性)
texture.colorSpace = THREE.SRGBColorSpace;
// texture.colorSpace = THREE.LinearSRGBColorSpace;

 这个代码就能设置纹理的颜色空间为sRGB类型的,并且我们可以加入一个gui调试工具来进行对比开发,但是要注意的是,如果在运行时改变颜色空间的话,需要将纹理允许中途改变颜色空间的开关设置为true。

//中途修改颜色空间的话 需要设置可以更新为true 不然会不显示效果
gui
  .add(texture, "colorSpace", {
    sRGB: THREE.SRGBColorSpace,
    Linear: THREE.LinearSRGBColorSpace,
  })
  .onChange(() => {
    texture.needsUpdate = true;
  });

这样就可以看我们的效果了

默认线性效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Web阿成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值