【问题标题】:Threejs: glb file reflect the environment but not itselfThreejs:glb文件反映环境但不反映自身
【发布时间】:2021-02-11 16:43:15
【问题描述】:

在threejs中,我成功导入并显示了一个房子的glb文件(房子有两层,每层都有各种物件,其中有椅子,一些桌子,厨房等,比如一个真正的房子)。我的问题是我可以让房子和它的物体反射环境光,但我不能让房子的物体反射自己。我的最终目标是实现一些实时光线追踪,但此时我很乐意只生成一些实时反射,这些反射除了环境光之外还反射房子的其他物体。阴影也一样。

我没有在网上找到任何关于这种类型的反思。有谁知道从哪里开始的好地方?或者如果您遇到过类似的挑战,您是如何解决的?

【问题讨论】:

    标签: reflection three.js raytracing


    【解决方案1】:

    您需要使用CubeCamera 来渲染具有环境的场景,包括要在反射中的对象。然后将生成的纹理传递给.envMap 属性,并传递给要显示这些反射的对象。唯一的问题是,如果您有许多对象在反射中显示其他对象,您将需要大量的 cubeCamera 渲染,每个都来自该对象的位置。

    See this working demo,如上所述,它只从球体的位置捕获一个反射通道。你可以看到结有自己的反映,这是不现实的,但它不是很明显。这是一个权衡。

    如果您只有几个用作镜像的平面,您也可以复制 the mirror demo

    【讨论】:

    • 非常感谢您的回答。我知道 CubeCamera 可以生成逼真的反射,问题是我有一个 glb 文件,其中包含许多几何图形,而且我似乎无法为每个文件分配一个 CubeCamera,因为它们似乎被评估为单个对象 -房子。如果我在threejs中从头开始建造房屋,您的答案将是完美的,但我有一个glb文件,正如我所说,一切似乎都只反映环境光。我希望我能够解释我自己;不知道您是否还有其他建议?
    • 我认为您正在寻找的是屏幕空间反射或 SSR。在three.js中还没有实现看这里:github.com/mrdoob/three.js/issues/8248
    猜你喜欢
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 2016-11-15
    • 2020-10-31
    • 2021-11-16
    • 1970-01-01
    相关资源
    最近更新 更多