Three.js加载GLTF模型的效果优化

加上后处理器后场景背景变黑问题

首先需要了解色彩空间的概念:

色彩空间的概念

我理解的加上后处理器后场景背景变黑、场景变暗的原因就是,
因为gltf加载默认是sRGB,three.js输出的颜色空间是srgb。

	//旧
	renderer.outputEncoding = THREE.sRGBEncoding;
	//新
    renderer.outputColorSpace = 'srgb'

但是使用了后期处理之后,上述设置失效,three.js输出的颜色空间变成了linear。场景背景颜色本来是灰色的话看起来就像变成了黑色。

    renderer.outputColorSpace = 'srgb-linear'

因此展示到屏幕时需要通过gamma校正,将linear转换回sRGB空间,也就是进行gamma校正,threejs中可通过设置gammaOutput和gammaFactor,进行gamma校正
ThreeJS 不可忽略的事情 -
Gamma色彩空间

需要注意的是gammaOutputgammaFactory已被弃用:

为什么 WebGLRenderer(开发分支)中的 gammaFactor
已被弃用

最新的解决方法为:

	// 创建伽马校正通道
      const gammaPass = new ShaderPass(GammaCorrectionShader);
      composer.addPass(gammaPass);

Three.js加载模型的颜色还原建模软件

想要Three.js加载模型的颜色还原建模软件的效果,可以考虑设置Three.js的输出色彩空间为linear,

    renderer.outputColorSpace = 'srgb-linear'

后处理器中:

	  const composer = new EffectComposer(this.renderer)
      composer.renderer.outputColorSpace = 'srgb-linear'
      composer.renderTarget1.texture.colorSpace = 'srgb-linear'
      composer.renderTarget2.texture.colorSpace = 'srgb-linear'

此时不需要加上伽马校正

	// const gammaPass = new ShaderPass(GammaCorrectionShader);
    // composer.addPass(gammaPass);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值