javascript - 使用 dat.gui 和后处理?
问题描述
我想使用 dat.gui 调试一些效果,例如 SSAO,但不幸的是,使用 SSAO 更改值没有按预期工作。
我尝试了什么:
const loadSsao = (intensity) => {
const normalPass = new NormalPass(scene, camera)
const ssaoEffect = new SSAOEffect(camera, normalPass.renderTarget.texture, {
blendFunction: BlendFunction.MULTIPLY, // intentionally set as normal for better debugging
depthAwareUpsampling: true,
samples: 50,
rings: 12,
distanceThreshold: 0.2,
distanceFalloff: 0.0025,
rangeThreshold: 0.0009,
rangeFalloff: 0.0001,
luminanceInfluence: 0,
radius: 12.5,
intensity: intensity,
bias: 0.0
})
const renderPass = new RenderPass(scene, camera)
const effectPass = new EffectPass(camera, ssaoEffect)
// dat.gui
const gui = dat.GUI()
const ssaoFolder = gui.addFolder("SSAO")
ssaoFolder.add(ssaoEffect, 'intensity', 0, 100, 1)
ssaoFolder.open()
composer.addPass(renderPass)
composer.addPass(normalPass)
composer.addPass(effectPass)
}
loadSsao(12)
我还尝试使用onUpdate()
dat.gui 中的函数并执行以下操作:
ssaoFolder.add(ssaoEffect, 'intensity', 0, 100, 1).onUpdate((value) => {
const normalPass = new NormalPass(scene, camera)
const ssaoEffect = new SSAOEffect(camera, normalPass.renderTarget.texture, {
blendFunction: BlendFunction.MULTIPLY, // intentionally set as normal for better debugging
depthAwareUpsampling: true,
samples: 50,
rings: 12,
distanceThreshold: 0.2,
distanceFalloff: 0.0025,
rangeThreshold: 0.0009,
rangeFalloff: 0.0001,
luminanceInfluence: 0,
radius: 12.5,
intensity: value,
bias: 0.0
})
const renderPass = new RenderPass(scene, camera)
const effectPass = new EffectPass(camera, ssaoEffect)
composer.addPass(renderPass)
composer.addPass(normalPass)
composer.addPass(effectPass)
}
请原谅格式,我真的需要匆忙,因为我正在使用这个包工作:/
有关更多信息,我在 ReactJS/NextJS 环境中使用 Three.js、dat.gui 等,大多数后处理和 threejs 函数都在 useEffect()
解决方案
推荐阅读
- php - VSCode 的 intelephense 中未定义的类型“Imagick”
- javascript - 如何从 URL 中删除 # 和 Angular 构建和 nodejs 应用程序中的 404 重新加载问题?
- c++ - c++ 为服装类创建一个常量迭代器
- python - 如何在python中获取同名的键?
- typescript - 如何用打字稿的唯一区别来描述对象?
- azure - 如何使用 Azure AD 身份验证在 Azure webapp 中流式传输 kudu 日志?
- node.js - Node js 从 mongo db 中查找数据并使用 ejs 进行投影
- r - 将函数对象转换为字符串/文本?
- css - 在 React JS 环境中为选中的 + 设置样式
- c# - 如果未检测到换行符但客户端的套接字未检测到,则服务器的套接字阻塞