threejs gltf后处理颜色异常(伽马校正)

参考资料:threejs中文网

threejs qq交流群:814702116

gltf后处理颜色异常(伽马校正)

你打开上节课代码,可以发现,加载gltf模型,如果使用EffectComposer添加后处理功能,模型颜色可能会出现异常,对于这种情况,首先要先分析产生颜色偏差原因。

颜色偏差的原因

首先你可以回顾6.3和6.9节内容,加载gltf模型如果出现颜色偏差,需要设置renderer.outputEncoding解决。

如果你使用threejs后处理功能EffectComposer,renderer.outputEncoding会无效,自然会出现颜色偏差。

renderer.outputEncoding = THREE.sRGBEncoding;

引入GammaCorrectionShader.js

GammaCorrectionShader.js扩展库的目录:examples/jsm/shaders/

examples/jsm/shaders/目录下有很多不同功能的shader文件,GammaCorrectionShader.js的功能就是进行伽马校正,具体点说就是可以用来解决gltf模型后处理时候,颜色偏差的问题。

// 伽马校正后处理Shader
import {GammaCorrectionShader} from 'three/addons/shaders/GammaCorrectionShader.js';

引入ShaderPass.js

ShaderPass.js扩展库目录:examples/jsm/postprocessing/

// ShaderPass功能:使用后处理Shader创建后处理通道
import {ShaderPass} from 'three/addons/postprocessing/ShaderPass.js';

创建伽马校正后处理通道

threejs并没有直接提供伽马校正的后处理通道,提供了一个伽马校正的Shader对象GammaCorrectionShader,这时候可以把Shader对象作为ShaderPass的参数创建一个通道。

// 创建伽马校正通道
const gammaPass= new ShaderPass(GammaCorrectionShader);
composer.addPass(gammaPass);
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Threejs可视化

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

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

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

打赏作者

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

抵扣说明:

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

余额充值