代码之家  ›  专栏  ›  技术社区  ›  Peter I

ThreeJS材质侧面可见性更新

  •  0
  • Peter I  · 技术社区  · 6 年前

    我有隐藏的一面,当从后面看,这是正确的,我想要什么,但我无法找到一种方法,知道它不可见,从渲染器或相机。

    new THREE.MeshBasicMaterial({ map: new, THREE.TextureLoader().load('image.jpg'), side: THREE.FrontSide });

    如果我在渲染中记录子对象,我看到可见性为“true”,即使它未渲染(图2)。

    有没有一种方法可以让我用THREE判断目标几何体面是否正在显示?

    谢谢

    1 回复  |  直到 6 年前
        1
  •  0
  •   Console-buche    6 年前

    事实上,你的物体(或它的一部分)从不同的角度是否可见取决于 side 材料的性质。在你的例子中,只有正面的碎片是可见的( side : THREE.FrontSide );

    如果你的目标是跟踪物体或其一部分是否应该在任何给定时间从给定角度显示,那么有多种方法可以做到这一点。

    一种解决方案可能是简单地对该面/区域进行光线投射,并检查交点。我已经有一段时间没有测试过了,但不可见的面不应该返回交叉点。

    Here's a little documentation just in case

    还有一段引用文件:

    请注意,对于网格,面必须指向光线的原点才能被检测到;穿过面部背面的光线的交点将不会被检测到。要对对象的两面进行光线投射,需要将材质的“侧”属性设置为三。双面。