Как получить треугольники для вершин AABB? - PullRequest
1 голос
/ 01 ноября 2019

Я пытаюсь визуализировать кубы для представления AABB. Для этого мне нужны вершины куба и «клетки», или треугольники. У меня есть структуры AABB, которые выглядят как [vec3Min, vec3Max]. Я могу получить 8 вершин для куба, используя следующее

export function vertsFromAABB(aabb){
  const min = aabb[0];
  const max = aabb[1];

  return [
    // min Y axis verts
    min,
    [max[0],min[1],min[2]],
    [max[0],min[1],max[2]],
    [min[1],min[1],max[2]],

    // max Y axis verts
    max,
    [min[0],max[1],max[2]],
    [min[0],max[1],min[0]],
    [max[0],max[1],min[0]]
  ];
}

Теперь мне нужно получить индексы треугольника из этого набора вершин. Ячейки должны быть массивом указателей вершин, например, [[0,1,2],[1,2,3], ...]

РЕДАКТИРОВАТЬ ОБНОВЛЕНИЕ

Я исправил последние 2 вершины, которые были предложены в комментариях. У меня есть функция inprogress для ячеек, которая выглядит как

export function cellsFromAABBVerts(aabbVerts){
  return [
    // Top quad triangles
    [0,1,2],
    [1,2,3],

    // Side?
    [2,3,4],
    [3,4,5],

    // Bottom quad triangles
    [4,5,6],
    [5,6,7],
  ];
}

1 Ответ

2 голосов
/ 01 ноября 2019

Если вы визуализируете свой кубоид следующим образом:

Visualization

, тогда довольно просто получить индексы треугольника:

[
    [ 0, 1, 2 ],
    [ 0, 2, 3 ],
    [ 6, 5, 4 ],
    [ 6, 4, 7 ],
    [ 1, 7, 4 ],
    [ 1, 4, 2 ],
    [ 0, 3, 5 ],
    [ 0, 5, 6 ],
    [ 0, 6, 7 ],
    [ 0, 7, 1 ],
    [ 2, 4, 5 ],
    [ 2, 5, 3 ]
]
...