【发布时间】:2014-08-09 06:54:56
【问题描述】:
我正在查看位于 here 的 THREE.js 示例,想知道如何防止渲染为纹理的场景“扁平化”。换句话说,当设置为WebGLRenderTarget 时,场景失去了有深度的错觉。
我到处查看,包括在 THREE.js 文档中,并没有发现这种功能的提及,可能是因为它会给用户的处理器带来不必要的大量负载(除了在非常特殊的情况下)。不过,也许这在纯 WebGL 中是可能的?
编辑: Downvoters - 为什么这个问题很糟糕?我已经对这个问题进行了大量研究,但是由于我是 WebGL 新手,所以我不能完全吐出毫无意义的代码......我该如何改进我的查询?
【问题讨论】:
-
(1) 为什么不修改示例并使用透视相机而不是正射相机,并将渲染目标用作平面而不是球体的纹理。这就是电影院里发生的事情。见stemkoski.github.io/Three.js/Camera-Texture.html (2) 这里不涉及不必要的“重大负载”。
-
感谢您的回复! (1)我明白你在说什么(并且已经尝试过了),但这并不能阻止“扁平化”。在我引用的示例中,球体上的投影曲率有些误导。似乎 WebGL 只在投影表面上渲染 2D 错觉 (并且有充分的理由,这就是我提到处理器负载的原因)。当投影表面相对于相机旋转时,这种错觉消失了,您可以看出渲染的表面很像电影屏幕,而不是具有真实的 3 维深度的东西。
-
你的例子确实给了我一个好主意,我可能很快就能回答我自己的问题。
-
对不起,我不知道你在说什么......如果你无法回答自己的问题,也许其他人可以帮助你。
标签: javascript three.js webgl