You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

THREE.js v136更新后FBX模型颜色异常,求Gamma校正示例

修复THREE.js v136+ FBX模型颜色偏暗问题

核心思路

v136版本移除了WebGLRenderer.gammaFactor和THREE.GammaEncoding,要还原之前的色彩表现,直接通过官方后期处理模块中的GammaCorrectionPass实现伽马校正即可。

步骤1:引入必要的后期处理模块

确保项目中引入以下三个核心模块:

import { EffectComposer } from 'three/addons/postprocessing/EffectComposer.js';
import { RenderPass } from 'three/addons/postprocessing/RenderPass.js';
import { GammaCorrectionPass } from 'three/addons/postprocessing/GammaCorrectionPass.js';

步骤2:初始化后期处理组件

替换原有的渲染初始化逻辑,创建EffectComposer并添加对应通道:

// 初始化WebGLRenderer(移除原gammaFactor、GammaEncoding相关配置)
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
// 若项目依赖旧版灯光逻辑,可保留此行
renderer.useLegacyLights = true;
document.body.appendChild(renderer.domElement);

// 创建后期处理合成器
const composer = new EffectComposer(renderer);

// 添加场景基础渲染通道(必须作为第一个通道)
const renderPass = new RenderPass(scene, camera);
composer.addPass(renderPass);

// 添加伽马校正通道(默认模拟原gammaFactor=2.2的效果)
const gammaPass = new GammaCorrectionPass();
composer.addPass(gammaPass);

步骤3:更新动画循环渲染逻辑

将原有的renderer.render(scene, camera)替换为合成器渲染:

function animate() {
  requestAnimationFrame(animate);

  // 你的场景更新逻辑(如模型旋转、相机控制等)
  // ...

  // 用合成器渲染替代原生渲染
  composer.render();
}
animate();

额外优化(可选)

如果FBX模型材质色彩空间仍有异常,可遍历模型统一设置材质色彩空间:

// 遍历FBX模型所有子对象,修正材质色彩空间
model.traverse((child) => {
  if (child.isMesh) {
    child.material.colorSpace = THREE.SRGBColorSpace;
  }
});

内容的提问来源于stack exchange,提问作者Damjan Pavlica

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 20:27:48