-
Всем привет! Есть модель в формате STL - описана набором полигонов. Нужно определить, есть ли в ней пустоты, толщины стенок, где нужны поддержки для печати. Собственно, интересует математика: как из полигонов сделать объемное представление и как из него получать срезы. Что читать, где копать. Есть библиотека https://github.com/slic3r/Slic3r, но как с ней работать неизвестно, да и возможности не вполне ясны, поэтому, не исключено, нужно будет писать с нуля. Спасибо.
-
Шарахов на форум забил((
-
>как из полигонов сделать объемное представление Сдвиг по нормалям граней на толщину. Получается Extrude. Вариантов немеренно на самом деле. Из файла только точки достать надо и индексы полигонов. Остальное считается.
-
> Вариантов немеренно на самом деле.
как называются?
-
>как называются? в 3ds max есть сдвиги по группам, по нормалям, по осям, по граням, по функциям и т.д. Я тоже пишу 3D-векторную либу. Немного выучил.
-
вот что мне 3d max? Проекцию как строить?
> Я тоже пишу 3D-векторную либу.
литературой же пользуешься?
-
>литературой же пользуешься? Да. На форумах такого почти не нароешь. Основы матчасти можно здесь посмотреть: https://habr.com/post/243011/https://habr.com/post/248153/Дальше по книгам. Более глубоко нигде не рассматривается. Сам не осилишь - тогда придется OpenGL или DirectX изучать. Там все примитивы и трансформации есть, кроме класса камеры и управления камерой и объектами. Это простая формула прямого проецирования где Z находится впереди камеры. Для правильной работы с камерой нужен -Z. Но это уже разворот пространства через матрицы. type PVertex = ^TVertex; TVertex = packed record X, Y, Z, W: Single; end;
type PIntPoint = ^TIntPoint; TIntPoint = packed record X, Y: Integer; end;
// XRes - ширина порта отображения // YRes - высота порта отображения
// cX := (XRes / 2.0); // cY := (YRes / 2.0);
function TCamera.Project(P: TVertex): TIntPoint; var fZ: Single;
begin fZ := 1.0/P.Z; Result.X := Round(P.X * fZ + cX); Result.Y := Round(P.Y * fZ + cY); end;
-
спасибо, гляну
-
Бросай эту идею. > STL - описана набором полигонов. Нужно определить, есть > ли в ней пустоты,
В STL потерна информация о полнотелых телах. Так что приближёнными методами. Разбиваешь весь объем квадро деревьями и проверяешь точка внутри тела или снаружи. Проверяешь путём пускания луча и проверки числа пересечённых полигонов. Четное снаружи нечётное внутри. > где нужны поддержки для печати.
Смотреть видео печать мостиков без поддержек. Обдув посильнее температуру подобрать пластик будет на лету застывать. > как из него получать срезы.
Пересечение треугольника и плоскости. https://web.stanford.edu/class/cs277/resources/papers/Moller1997b.pdf
-
> > Пересечение треугольника и плоскости.
вот интересно - чего постоянно дают ссылки на это образовательное учреждение? Причем, не важна степень сложности вопроса: теорема Пифагора или Перельмана - все посылают туда. Неужто на русском нет этих начал, придуманных, небось, еще шумерами?
-
Потому что они занимаются наукой, а не изображают бурную деятельность в виде воровства чужих идей. Поэтому они в открытую публикуют свои идеи. Тем более стекнфорд это место зарождения компьютерных технологий и наук. Вот если бы вы спрашивали по компьютерное зрение, то скорее всего это был бы французский Вуз. > Причем, не важна степень сложности вопроса: теорема Пифагора
Если вопрос из школьной геометрии то я посылаю на Интернет урок https://interneturok.ru/lesson/geometry/8-klass/ploschad/formulirovka-i-dokazatelstvo-teoremy-pifagora > Неужто на русском нет этих начал, придуманных, небось, > еще шумерами?
По поводу начал. Проблема в том что ваша задача это далеко не начала, а продвинутый уровень. Описание Моллера считается классическим. Были труды до него 91 ещё в ФИДО публиковали американцы. Но они не столь хорошо описаны. Так что шумерами тут и не пахнет. Что касается русского, то надо искать. У меня такого нет. Матрицы это 19 век эпоха Эллера. Так что вы честно можете взять учебник по векторной геометрии выписать уравнение плоскости одной и второй и решить их самостоятельно. Но зачем? Когда Моллер уже построил оптимальный ход решения и у него учтены все нюансы для треугольников. А вот перевода на русский не хватает. Но это не моя вина, то что в России 90 -тых на науку тратилось меньше 1% и тупо некому было переводить статьи.
-
> где нужны поддержки для печати.
Смотреть видео печать мостиков без поддержек. Обдув посильнее температуру подобрать пластик будет на лету застывать.
1. эту затею надо бросать. 2. обдув годится для пла, и не годится для абс. совершенно. а пластиков больше чем два типа. 3. кроме голой геометрии там миллиард других заморочек связанных с тем, что управлять надо реальным инструментом, который выдавливает реальный материал с реальными свойствами. ускорения, ретракты, накаты .... 4. поставь свежую куру, зайди в настройки settings visibility, начни считать их и ужаснись 5. ты никогда не создашь годный рабочий слайсер
-
>ты никогда не создашь годный рабочий слайсер ухаха. Слайсер как раз проще простого делается.
-
По теме могу добавить, что алгоритм проверки на сочленения достаточно прост. В цикле перебираете треугольники и помечаете треугольники инкрементирующимся флагом. Если треугольники по координатам не совпали, то начинаете новый обсчет с новым флагом. Так вы посчитаете на сколько кусочков разбит объект. Тут только затраты на вычисления могут быть большие по времени. Ежели в итоге объект один, то все сочленяется и объект не имеет разрывов, а если у вас получилось несколько флагов, то объект состоит из кусочков, что для 3д-печати весьма печально. Нужны мостики.
-
>Ежели в итоге объект один Читать как: Ежели в итоге флаг один.
-
Просто может быть так, что фигура отсканирована. В сканированных фигурах есть куча огрех, там иногда надо соединять точки (Weld). Это требует предварительного просчета и последующего визуального контроля. Точки могут быть очень близко друг к другу, но принадлежать к разным треугольникам. Это просто битый меш.
-
а если у вас получилось несколько флагов, то объект состоит из кусочков, что для 3д-печати весьма печально. Нужны мостики.вот здесь например твоих флагов будет много, но они там не нужны, так как все испортят. https://www.thingiverse.com/thing:2031690ухаха. Слайсер как раз проще простого делается.ну значит окей. с января все перейдем на картман-слайсер 1.0
-
Тут только затраты на вычисления могут быть большие по времени.
ну это же ерунда. особенно когда у тебя есть прокачанный frreeandnil-friendly class
кстати, нельзя ли потестить твой написать легче-легкого слайсер в деле? скинь, я отслайсю и вечером напечатаю.
поржем все форумом заодно.
-
-
>поржем все форумом заодно. Говорят смех продлевает жизнь. Смейтесь на здоровье. А моя библиотека не зависит ни от чего ;) и переносится на любую платформу и процессор, который умеет просто +-/* ;)
|