【问题标题】:Environment map affects scene lighting after update to r131更新到r131后环境贴图影响场景光照
【发布时间】:2021-12-14 06:01:35
【问题描述】:

我有一个一般场景,我想展示不同类型的模型。根据模型的来源,有时模型包含MeshPhongMaterial,有时包含MeshStandardMaterial,有时同时包含两者。

我还有一个带有AmbientLightDirectionalLight 的特定照明模型,它们始终指向与相机相同的方向,因此您将清楚地看到您现在正在看什么。

为了让MeshStandardMaterial 看起来更好,我还在场景中添加了环境贴图(不是材质),我对结果非常满意。

这是 r130 的结果(左侧是 Phong 材料,右侧是标准材料):

在我将 three.js 更新为 r131 后,结果如下所示:

我了解环境贴图会从 r131 自动转换为 PMREM,这会导致更改。我也明白这比使用非 PMREM 环境贴图更正确,但现在它弄乱了我的场景。

在其他一些主题上,建议移除环境光和定向光(因为现在光照来自环境),但结果如下:

现在使用标准材质的对象看起来不错,但是使用 phong 材质的对象完全是黑色的。我也失去了我之前的功能,即定向光总是指向相机所看到的地方。

通过仅移除环境光,我得到了这个(仍然不是我想要实现的):

所以基本上我的问题是:虽然我知道这在物理上是不正确的,但有没有办法应用不影响场景照明但影响标准材质反射的环境贴图?

您可以在此处找到上述场景的代码: https://github.com/kovacsv/Online3DViewer/blob/dev/sandbox/three_envmap_issue/three_viewer.html

在这里你可以看到它的直播: https://raw.githack.com/kovacsv/Online3DViewer/dev/sandbox/three_envmap_issue/envmap_issue.html

【问题讨论】:

  • 有什么方法可以共享创建材料的代码?也许它是属性之一,例如envMapIntensity 或类似的东西。我正在查看changelog between r130 -> r131,但没有发现任何适用于您的 StandardMaterial 的值得注意的内容。
  • 好点,我已经用代码链接编辑了问题。
  • @kovacsv 您说“建议移除环境定向光”。不,仅移除环境光是合理的——并且仅当您使用MeshStandardMaterialMeshPhysicalMaterial 时。另见github.com/mrdoob/three.js/pull/22178#issuecomment-887950445

标签: javascript three.js


【解决方案1】:

所以基本上我的问题是:虽然我知道这在物理上是不正确的,但有没有办法应用不影响场景照明但影响标准材质反射的环境贴图?

不,没有。 MeshStandardMaterialMeshPhysicalMaterial 现在需要更严格的 PBR 工作流程。正如您正确指出的那样,您之前的设置在物理上是不正确的。这已得到修复,目前没有计划再次允许以前的工作流程。环境贴图被视为 IBL。所以从概念上讲,无论您如何参数化材质,它们总是会影响光照。

您的用例的解决方案是 a) 使用 phong 材质或 b) 更新场景的照明并接受新样式。

【讨论】:

  • 谢谢你的回答,这就是我害怕的。我是否正确理解,在新设置下,无法在所有材质显示都可接受的情况下同时使用 phong 和标准材质的场景?
  • @kovacsv 对于MeshPhongMaterial,环境贴图只提供镜面反射——您必须单独提供环境光。对于MeshStandardMaterialMeshPhysicalMaterial,环境光是从环境贴图中推断出来的。
  • 因此,如果我在同一个场景中使用 MeshPhongMaterialMeshStandardMaterial 以及环境贴图,我有两个选择:1) 提供会弄乱我的标准材质的环境光 - 它会太亮。 2) 不要提供会弄乱我的 phong 材料的环境光——它会很暗。所以如果我理解正确我必须在材料类型之间进行选择,并且没有办法混合它们。
  • @kovacsv MeshStandardMaterial 是PBR材质; MeshPhongMaterial 不是。您可以在同一个场景中同时使用它们,但不要期望它们呈现相同的效果。
  • 我不希望它们呈现相同的颜色,而是使用一种接近其基色的颜色进行渲染。现在看来r131之后不可能了,所以可能我必须找到另一个解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-26
  • 2019-01-27
  • 2020-03-04
  • 2011-04-17
  • 2023-03-17
相关资源
最近更新 更多