【问题标题】:How to write to zbuffer only with three.js如何仅使用 three.js 写入 zbuffer
【发布时间】:2015-07-20 12:00:27
【问题描述】:

我正在尝试使用 thee.js 来仅更新 zbuffer(我正在使用 preserveDrawingBuffer 来创建跟踪效果)。 但是我找不到任何方法只使用标准材料写入 zbuffer,到目前为止我已经尝试过:

  • 将材质的 visible 设置为 false,这会停止对象渲染。
  • 将材质的 opacity 设置为 0.0,这意味着不会渲染任何内容。

是否有“标准”方式来执行此操作,或者我是否需要使用自定义片段着色器?

【问题讨论】:

  • 看看这个(有点老的)讨论:github.com/mrdoob/three.js/issues/1750。无论如何,当您设置 opacity 0 或 visible=false 时,对象根本不会渲染,因此它甚至不会到达 z 缓冲区。您可能想尝试提供非常低的不透明度而不是绝对 0,或者使用不可见纹理(具有不可见像素的 1x1 纹理)而不是设置材质不透明度。然后它将渲染但不会改变实际颜色。但这些是我建议找到正确方法的技巧。

标签: three.js depth-buffer zbuffer


【解决方案1】:

您只能使用以下模式渲染到深度缓冲区。

renderer.context.colorMask( false, false, false, false ); // don't update color buffer
renderer.render( scene1, camera ); // first scene

renderer.context.colorMask( true, true, true, true );
renderer.render( scene2, camera ); // second scene

three.js r.71

【讨论】:

  • 谢谢 - 我还没有测试过,但它看起来很完美
猜你喜欢
  • 1970-01-01
  • 2011-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-25
  • 1970-01-01
  • 2021-04-05
  • 1970-01-01
相关资源
最近更新 更多