Вершины не объединены (вывод из Kinect Fusion)

У меня сейчас большая проблема. Я использовал kinect fusion для захвата 3D-сцены и вывода ее в виде файла .OBJ.

Вывод файла выглядит примерно так:

v 123 123 123
v 123 123 123
v 123 123 123
vn 321 321 321
vn 321 321 321
vn 321 321 321
f 1//1 2//2 3//3

Где v — вершина, vn — нормаль, f — грань. Три вершины составляют грань, поэтому число граней равно 1/3 числа вершин. Но проблема в том, что вывод kinect не объединяет вершины вместе. Итак, после того, как я импортирую его в Maya и объединим их вместе, количество вершин и нормалей вершин каким-то образом станут другими!

Количество вершин после слияния: 52837
Количество нормальных вершин после слияния: 299997
Количество граней после слияния: 99999

Как это возможно!? Разве каждая вершина не должна иметь только 1 нормальную вершину? Почему нормальных больше, чем вершин? Код, который я написал, может работать только в том случае, если он следует этой структуре. Другой способ — не объединять вершины вместе, но это может вызвать у меня проблемы в будущем.

Надеюсь мне кто-нибудь поможет Т_Т


person Cherple    schedule 31.07.2013    source источник


Ответы (1)


Это ожидаемое поведение. Представьте, что у вас есть два треугольника, образующие четырехугольник. Без слияния это 6 вершин и 6 нормалей вершин. После слияния у вас будет 4 вершины, так как вершины в диагональных углах теперь объединены. Если объединенная сетка сглажена (например, с помощью normals > soft edge), общие вершины также будут иметь общие нормали вершин. Если сетка граненая, у вас все равно будет 6 нормалей вершин, даже если у вас 4 вершины. Вероятно, отсюда и берутся ваши лишние цифры.

Если исходная геометрия чистая, количество граней останется прежним, но плохая геометрия может включать дубликаты граней, которые должны быть устранены путем слияния, что также уменьшит количество вершин.

Вы можете искусственно увеличить количество нормалей вершин, выполнив mesh > triangulate, а затем normals > Harden edge. Это приведет к тому, что сетка будет казаться граненой. Если вам нужны сглаженные нормали (снова нормали > смягчить край), вы должны ожидать в среднем около 1 нормали на вершину.

person theodox    schedule 01.08.2013