Я столкнулся с проблемой пересечения луча с краями треугольника. На самом деле, я пытаюсь выбрать / пересечь треугольник, вершину, край меша с помощью мыши. Итак, я сделал луч из текущего положения мыши, а затем пересекаю его с элементами сетки, такими как треугольник / многоугольник, вершина, край и т. Д., Чтобы работать с ним. В основном, про 3D моделирование. Пересечение с треугольником было легко и весело. А вершинная часть была сложной.
Но теперь я не знаю, как пересекать / выбирать ребра треугольника. Я имею в виду, как я отношусь к ним при пересечении с Мышиным Лучом? Сначала я подумал, что их можно рассматривать как трехмерную линию. Но в итоге не удалось сделать пересечение Луча и Линии. Искал в Интернете, но не нашел никакой полезной информации. Хотя я обнаружил, что некоторые проекты с открытым исходным кодом используют встроенные функции выбора 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?
}
}
}
}
Так что я застрял здесь и действительно нуждаюсь в помощи. Любая идея, алгоритм или небольшая помощь приветствуются.