模拟曝光控制

时间:2013-11-14 15:06:36

标签: three.js

我想在我的Three.js应用程序中模拟相机曝光控制,我不确定应该如何处理它。

所以我的问题是:我如何实现或模拟曝光控制,以便我可以配置相机或渲染器以获得非常暗的场景的清晰图像,或者不会过度曝光非常明亮的场景?理想情况下,它应该尽可能接近真实相机的工作方式(更像是调整ISO感光度而不是光圈/快门)。

目前我使用各种可配置的EffectComposer后期处理效果。其中一些允许在渲染后控制亮度,对比度等。显然除了微调之外没有什么好处,因为不可能从已经渲染的标准动态范围图像中恢复高光或黑色阴影。

我考虑过的一些方法:

  • 手动调整每个灯光以获得所需的曝光。这是我目前的方法,我想摆脱它。
  • 已经提到了后期处理。这种情况太有限,并且在极端情况下会导致图像质量不佳。
  • 我看到了一些可以调整曝光的HDR渲染示例。这些是使用自定义HDR着色器实现的,我想尽可能使用标准的Three.js MeshPhongMaterial系统和着色器,因为所有其他内置功能,如阴影等等。我想这不容易使用这些功能和使用一些HDR着色器方法?请注意,我不需要高动态范围,只需要可调节曝光。
  • 通过对场景中的所有灯光应用某种强度倍增器来作弊。这似乎很难真实地实现,因为光衰减算法等会带来额外的复杂性,我并不完全理解,而且我认为创建一个看起来与提高/降低相机灵敏度相同的结果并不容易。
  • 只需在WebGLRenderer中调整gamma(预渲染)。我找不到办法做到这一点,我不完全确定伽玛是否是模拟曝光的正确方法(也许是?)。

1 个答案:

答案 0 :(得分:0)

理想情况下,一个自定义管道,但缺乏这一点,如何简单地统治你的镜面&朝着漂亮,中位数,可见颜色发光?

见图片示例:False HDR Color Scheme

至于纹理,为什么不对它们运行过滤器呢?即便只是亮度&对比度调整可能会成功。这将产生一个普遍的"类似HDR的效果。如果您想同时维护普通照明,则可能需要为每个对象维护两种材质。