【问题标题】:ThreeJS material side visibility updatesThreeJS 材质端可见性更新
【发布时间】:2018-06-12 20:22:51
【问题描述】:

当我从后面看它时,我隐藏了一侧,这是正确的,也是我想要的,但是我无法找到一种方法来知道它在渲染器或相机中是不可见的。

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

如果我在渲染中记录孩子,我会看到可见性是“真实的”,即使它没有渲染(图 2)。

如果正在显示目标几何面,我有没有办法用 THREE 判断?

谢谢。

【问题讨论】:

  • 只是出于好奇,为什么要知道是否显示了人脸?目的是什么?
  • 根据单个平面的可见性,我想隐藏模型的更多面。

标签: javascript three.js


【解决方案1】:

您的对象(或对象的一部分)是否从不同的角度可见取决于材质的side 属性。在您的示例中,只有正面的片段可见(side : THREE.FrontSide);

如果您的目标是跟踪对象或对象的一部分是否应该在任何给定时间从给定角度显示,那么您可以通过多种方式来做到这一点。

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

Here's a little documentation just in case

以及来自文档的引用:

请注意,对于网格,面必须指向光线的原点才能被检测到;穿过人脸背面的光线的交点将不会被检测到。要针对对象的两个面进行光线投射,您需要将材质的 side 属性设置为 THREE.DoubleSide。

【讨论】:

    猜你喜欢
    • 2021-08-08
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2015-08-16
    相关资源
    最近更新 更多