【问题标题】:How does Ray and intersectRayTriangle work?Ray 和 intersectRayTriangle 是如何工作的?
【发布时间】:2012-09-17 05:42:43
【问题描述】:

所以基本上我想检查来自大炮的激光束是否击中地形。要么我不理解 Ray 的概念,要么出了点问题。 我们来看看这行代码

Intersector.intersectRayTriangle(intersectorRay, new Vector3(0.5f,1,0), new Vector3(0.5f,-1,0), new Vector3(1,0,0), hitPoint);

intersectorRay 的原点为 0,0,0,方向为 1,0,0,所以我假设它从点 0,0 指向“直线右侧”。 所以给定三角形顶点的坐标,它应该与它相交,对吗?代码返回 false。

另一方面,现在这一行返回 true:

Intersector.intersectRayTriangle(intersectorRay, new Vector3(0.5f,1,0), new Vector3(0.5f,-1,0), new Vector3(-1,0,0), hitPoint);

对其他示例的测试证明,只有当 Ray 的原点在三角形内时,它才会返回 true(很明显,在这种情况下它会击中某些东西......)。

我做错了什么? 我从 9 月 6 日开始使用最新的夜间版本的 libgdx。

【问题讨论】:

    标签: java android libgdx


    【解决方案1】:

    我要在这里说一下它在第一个示例中返回 false 的原因是因为光线没有穿过三角形的面,因为它位于与三角形相同的 xy 平面上射线正在射过。

    相反,如果您的三角形位于 zy 平面(或任何其他与光线射过的平面不完全相同的平面)上,我怀疑您会得到预期的结果。

    【讨论】:

    • 所以我似乎在滥用 Ray 类。我了解它是出于相机或渲染原因而创建的。现在,我应该如何检查我想在 2D 环境中检查的内容?我想我会自己写一些东西,因为时间在流逝,我必须完成我的项目。可能我将所有障碍物的多边形更改为线段并检查线段交叉点。
    • 好吧,我不会说您一定会误用 Ray,更多的是 Intersector 方法假设如果您使用的是 Ray,那么您在 3D 空间中(并且专门寻找与脸)。也许这是一个错误的假设,它应该将穿过与三角形相同的位置的光线射击视为有效的交叉点。
    猜你喜欢
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 2022-08-22
    • 2018-11-10
    • 2018-02-12
    • 2018-06-21
    • 2012-09-13
    • 2014-03-29
    相关资源
    最近更新 更多