Three.js 中的深度分量 readRenderTargetPixels?

Depth component readRenderTargetPixels in Three.js?

是否可以从 THREE.WebGLRenderer 中提取深度像素数,类似于 .readRenderTargetPixels 功能?基本上,this question 有更新吗?我的起点是 Three.js r80。如果我也可以转换为距离,则归一化值就可以了。

相关方法:

数据类型:

您不能使用readPixels 直接获取FrameBuffer 的深度附件的内容。无论是 RenderBuffer 还是 (Depth) Texture。 您必须在颜色附件中写入深度数据。

  • 您可以使用 MeshDepthMaterial 渲染您的场景,就像阴影贴图技术一样。您最终得到了颜色附件中编码的深度 RGBA。您可以使用 readPixels(仍然是 RGBA 编码)获取它。这意味着您必须渲染场景两次,一次用于深​​度渲染,一次用于在屏幕上显示场景。

  • 如果您想要的深度与您在屏幕上显示的深度相匹配(相同 camera/point 视图),您可以使用 WEBGL_depth_texture 渲染深度并在一个渲染循环中显示。如果您的场景包含很多 objects/materials.

  • ,它会更快
  • 最后,如果您的硬件支持 OES_texture_float,您应该能够将深度数据绘制到 LUMINANCE/FLOAT 纹理而不是 RGBA。这样就可以直接得到浮点深度数据,省去js中昂贵的解码过程