В сцене есть много EditableMesh объектов, все они должны пройти экспорт, через один плагин. При экспорте возникают ошибки, связанные с фейсами имеющие одинаковые координаты. Вот лог ошибки:
Node test has 8 degenerate faces at the following locations:
-4.191406, -36.529301, 12.339360
3.627930, -36.555168, 11.885740
-3.646973, -36.530762, 11.885740
4.172363, -36.557129, 12.339360
-3.643555, -35.501461, 11.885740
4.175781, -35.527828, 12.339360
3.631348, -35.525879, 11.885740
3.631348, -35.525879, 11.885740
Модификатор VetrexWeld с минимальными значениями помогает, но при этом иногда часть информации, геометрия искажается, что недопустимо.
meshop.removeDegenerateFaces <Mesh mesh>
Тоже не помогает, в листенере на вызов этой функции ответ всегда - false.
Вообщем задача состоит в том, чтобы исправить геометрию при минимальных её изменениях (максимальное сохранения исходных данных).
Как я вижу реализацию - скрипт перебирает все объекты сцены (EditMesh), перебирает все координаты вершин(фейсов?) находит повторения (точно так-же как мой экспортер) и "раздигает" одинаковые координаты с минимальными значениями (+/-0,00001). Этого хватит, чтобы объект прошел экспорт, но при этом не потерпел каких либо внешних изменений. Помогите пожалуйста с написанием такого скрипта.
Сравнение совпадения координат точек необходимо провести только:
1) Между точек одного фейса ? (реально)
2) Между всех точек одного меша ? (максскрипт будет долго думать, и есть шанс звалить(или повесить) макс на больших сетках )
3) Между точек всех мешей в сцене ? (на максскрипте, практически не реально если только на совсем легких сценах)
Пересмотрел геометрию, да, между точек одного фейса. Там в основном фейс который со стороны обычно выглядит как треугольник, похож на сплошную линию, т.е. одна из трех координат вершин имеет == координаты с одной из оставшихся двух вершин. Вот подобное и надо исправить путем "раздвигания" координат одинаковых точек фейса, ну и соответственно перебрать такой функцией все фейсы, всех объектов сцены.
Экспорт прошел нормально (без ошибок на плохие фейсы), но со следующими издержками:
8 tverts are orphaned
Но направление куда двигаться уже примерно понятно, удалять фейсы не вариант, т.к. из-за этого могут возникать другие проблемы, да и вообще не эстетичный вариант решения проблемы. Нужно раздвигать точки, будем пробовать, спасибо за наводку в определении плохих фейсов.
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
Castello2401
Node test has 8 degenerate faces at the following locations: -4.191406, -36.529301, 12.339360 3.627930, -36.555168, 11.885740 -3.646973, -36.530762, 11.885740 4.172363, -36.557129, 12.339360 -3.643555, -35.501461, 11.885740 4.175781, -35.527828, 12.339360 3.631348, -35.525879, 11.885740 3.631348, -35.525879, 11.885740Модификатор VetrexWeld с минимальными значениями помогает, но при этом иногда часть информации, геометрия искажается, что недопустимо.Тоже не помогает, в листенере на вызов этой функции ответ всегда - false.
Вообщем задача состоит в том, чтобы исправить геометрию при минимальных её изменениях (максимальное сохранения исходных данных).
Как я вижу реализацию - скрипт перебирает все объекты сцены (EditMesh), перебирает все координаты вершин(фейсов?) находит повторения (точно так-же как мой экспортер) и "раздигает" одинаковые координаты с минимальными значениями (+/-0,00001). Этого хватит, чтобы объект прошел экспорт, но при этом не потерпел каких либо внешних изменений. Помогите пожалуйста с написанием такого скрипта.
Savin Denis
1) Между точек одного фейса ? (реально)
2) Между всех точек одного меша ? (максскрипт будет долго думать, и есть шанс звалить(или повесить) макс на больших сетках )
3) Между точек всех мешей в сцене ? (на максскрипте, практически не реально если только на совсем легких сценах)
Castello2401
Savin Denis
obj = $ meshop.deleteFaces obj (for f =1 to obj.numfaces where meshop.getFaceArea obj #{f} < 0.0001 collect f) update objдальше , если не устраивает, сможешь сам у найденных феэсов потвикать точки.Castello2401
Экспорт прошел нормально (без ошибок на плохие фейсы), но со следующими издержками:
Но направление куда двигаться уже примерно понятно, удалять фейсы не вариант, т.к. из-за этого могут возникать другие проблемы, да и вообще не эстетичный вариант решения проблемы. Нужно раздвигать точки, будем пробовать, спасибо за наводку в определении плохих фейсов.