gpt4 book ai didi

algorithm - 射线和三角边相交怎么办?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:37:41 32 4
gpt4 key购买 nike

我在将光线与三角形边相交时遇到问题。实际上,我正在尝试使用鼠标选择/与网格的三角形、顶点、边相交。所以我从鼠标当前位置制作射线,然后将它与三角形/多边形、顶点、边等网格元素相交以使用它。基本上,3d 建模的东西。与三角形相交既简单又有趣。顶点部分很棘手。

但是现在,我不知道如何与三角形边相交/拾取。我的意思是当与 Mouse Ray 相交时我如何对待它们?首先,我认为可以将它们视为 3D 线。但最终没能做到Ray和Line相交。在 Internet 上搜索但未找到任何有用的信息。虽然我发现一些开源项目正在使用 OpenGL 内置的拾取功能来拾取/与 Edge 相交。但就我而言,我不能使用它。 :(

我当前的边缘拾取代码结构如下所示:

void pickEdge(Ray ray, Scene scene)
{
for each object in scene
{
mesh = getMesh(object)
for each triangle in mesh
{
for each edge in triangle
{
v1 = getV1(edge)
v2 = getV2(edge)

// Do intersect with 'ray' and 'v1', 'v2'. But how?
}
}
}
}

所以我被困在这里,真的需要一些帮助。非常感谢任何想法、算法或小帮助。

最佳答案

在您的案例中,在 3D 空间中找到三角形和射线之间的交点的问题可以归结为在 2D 空间(平面)的三角形中找到点位置(内部、外部、边界上)。您所要做的就是在屏幕平面上投影三角形,找到边缘的交点并在边缘上执行反向投影。点的位置就是鼠标的位置。唯一的问题是处理退化情况,例如将三角形映射到线段。但我认为这不会有问题,因为这种情况很容易应对。

关于algorithm - 射线和三角边相交怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38793762/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com