首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >扩展/缩放摄影机截锥体

扩展/缩放摄影机截锥体
EN

Stack Overflow用户
提问于 2019-02-22 19:57:30
回答 1查看 117关注 0票数 0

我正在尝试解决如何为我正在研究的一些交叉点逻辑扩展相机平截体。

简而言之,我需要找出哪些对象不仅落在相机截体内,而且还落在相机截体周围的某个缓冲区内。我能想到的实现这一点的最好方法是在运行交叉口检查之前以某种方式扩展相机锥体。

然而,我想不出如何才能最好地做到这一点。我也不确定是否有更好的替代方案来实现同样的结果。我想,如果我能找到一个物体到最近的锥体平面的距离,那么它也可以工作。

感谢大家的帮助。

EN

回答 1

Stack Overflow用户

发布于 2019-02-22 20:22:57

在重新阅读我的问题后,我意识到我的第一个停靠点应该是看看Frustum.intersectsBox()是如何工作的。事实证明,它拥有我需要的一切,通过引入buffer参数,我可以通过提供以世界为单位的缓冲值来有效地扩展平截体。

代码语言:javascript
运行
复制
const frustumIntersect = (() => {
  const p = new THREE.Vector3()

  return (frustum, box, buffer = 0) => {
    const planes = frustum.planes

    for (let i = 0; i < 6; i ++) {

      const plane = planes[i]

      p.x = plane.normal.x > 0 ? box.max.x : box.min.x
      p.y = plane.normal.y > 0 ? box.max.y : box.min.y
      p.z = plane.normal.z > 0 ? box.max.z : box.min.z

      if (plane.distanceToPoint(p) < 0 - buffer) {
        return false
      }
    }

    return true
  }
})()

其将被这样称为,以包括在锥体周围的200个单位缓冲器内的对象:

代码语言:javascript
运行
复制
frustumIntersect(frustum, yourBox3, 200)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54826600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档