Загрузите файл сетки с TetGen в C++

Я хочу загрузить файл сетки, используя библиотеку TetGen в C++, но я не знаю правильную процедуру или то, что переключает для активации в моем коде, чтобы показать сетку Constrained Delaunay.

Я попробовал что-то базовое для загрузки сетки динозавра (из rocq.inria.fr) с поведением по умолчанию:

tetgenio in, out;
in.firstnumber = 0;
in.load_medit("TetGen\\parasaur1_cut.mesh",0);
tetgenbehavior *b = new tetgenbehavior();
tetrahedralize(b, &in, &out);

Форма должна быть такой:

При использовании TetView это работает отлично. Но с моим кодом я получил следующий результат:

результат сетки динозавров

Я попытался активировать свойство Piecewise Linear Complex (plc) для Delaunay Constraint:

b->plc = 1;

и я получил только несколько частей из сетки:

еще несколько деталей из сетки динозавров

Может быть, есть еще запчасти, но я не знаю, как их получить.

1 ответ

Это выглядит так, как будто вы загружаете четырехугольную сетку в виде треугольной сетки или наоборот. Ясно одно: вы получаете плавающие числа из файла, поскольку границы объекта выглядят примерно правильно. Убедитесь, что вы загружаете строго треугольную или четырехугольную сетку. Если это формат, который вы можете загрузить в Blender, я бы порекомендовал загрузить его, выполнить триангуляцию и повторно экспортировать его, на случай, если туда проникнет поли.

Другая возможность - отключение по одной ошибке. Вы уверены, что получаете каждый треугольник / квад в правильном порядке? То есть - убедитесь, что вы загружаете треугольники 123 123 123, а НЕ 1 231 231 231.

Еще одна возможность, если этот формат индексирует все вершины, а затем перечисляет индексы вершин, возможно, вы корректно загружаете все вершины, а затем перепутываете индексы треугольников / четырехугольников, как описано в предыдущем разделе. два абзаца. Я думаю, что это так, так как все ваши точки верны, но линии, соединяющие их, неверны.

Другие вопросы по тегам