【发布时间】:2017-10-26 15:55:42
【问题描述】:
在 Three.js 的这个例子中:
https://threejs.org/examples/webgl_postprocessing_outline.html
只有当渲染器的 clearcolor 比白色更暗时,outline 才会起作用。
由于 OutlinePass 的设置方式 - 它计算网格的轮廓,然后使用 AdditiveBlending 将其混合到原始场景的纹理上。因此,如果原始场景中的背景是白色的,轮廓将不会显示原始对象后面没有任何东西的位置:
我今天一整天都在尝试让 OulinePass 为白色背景工作,但还没有成功。
任何建议/帮助将不胜感激。
谢谢, 安东。
【问题讨论】:
-
你想要发生什么?
-
作为一个快速测试,当您将一个巨大的立方体添加到包含整个场景体积的场景中时会发生什么? (使用
new THREE.MeshBasicMaterial({color: 0xffffff, side: THREE.BackSide})) -
@gman 我希望无论背景是白色还是黑色都显示轮廓。我花了一整天的时间对 OutlinePass 进行逆向工程,并尝试了各种可以将轮廓融合到现有场景中的方法——但都没有成功。每个结果都会产生一个场景,要么没有显示所有网格,要么以错误的颜色显示网格,轮廓非常模糊(如果我使用 SubtractiveBlending 而不是 AdditiveBlending)。
-
@Martin Schuhfuß - 谢谢,我会尝试,但我认为它会产生与上图相同的结果。只要场景的颜色是白色的,因为 OutlinePass 的设置方式需要在轮廓需要显示的地方显示,它就会尝试将轮廓的颜色添加到场景已经是白色的颜色中,并且将任何颜色添加到白色仍然会留下它白色的。这就是为什么他们在 www.threejs.org 中使用的示例中使用了深色网格和场景的黑色背景色......
-
为什么不能将添加剂混合改为其他类型的混合?
标签: three.js webgl post-processing