0

我一直在尝试渲染已经使用 3ds max 创建的场景。我已将所有对象导出为 obj 文件并使用三个.js 库在浏览器上渲染场景。对于反射,我尝试使用 Cubecamera 方法,但它没有给出预期的结果。对于阴影,我尝试了阴影贴图,但我想我没有正确使用它们。我想知道是否可以只使用three.js 和WebGl 做任何我想做的事情。如果是,有人请告诉我如何。另外,我知道 3ds max 软件使用 Mental ray 渲染器很容易生成反射和阴影。那么在three.js中是否有任何类似的渲染技术可以帮助轻松完成它?

这与我想要的相似

4

1 回答 1

1

不幸的是,这是一个相当大的问题,并且有很多方法可以进行实时反射。Mental Ray 计算反射的方式与您使用 WebGL(甚至 OpenGL)实时计算反射的方式完全不同。

最简单的方法是渲染场景两次,第一次是您将场景倒置(沿反射面的平面镜像)。这(就反射而言)非常简单,但确实将您限制在单个反射平面上。给定您的图像,并且唯一的反射表面看起来像地板。那可能是最好的选择。

您甚至可以将镜像场景渲染为纹理,以便稍后在管道中对其进行操作(例如,如果您希望图像像透过水一样变形)。或者围绕不同的平面进行多次反射。渲染成本当然会急剧增加。

您可以使用原始帖子中提到的预渲染立方体贴图。尽管对于这个场景,您可能需要不止一个。通过在场景中放置点来表示每个立方体贴图应该被捕获的位置。通常,这些将是低质量的,相对而言,以保持较低的内存使用率。

第三种选择是屏幕空间反射映射(可以找到合理的介绍http://roar11.com/2015/07/screen-space-glossy-reflections/),它确实有效,但也有一些问题(边缘显示)来解决。您通常会在完整的游戏引擎中找到所有这些内容(例如,虚幻引擎,https: //docs.unrealengine.com/latest/INT/Resources/Showcases/Reflections/ )。

于 2017-06-15T14:48:12.710 回答