-
Всем привет! Есть модель в формате 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
кстати, нельзя ли потестить твой написать легче-легкого слайсер в деле? скинь, я отслайсю и вечером напечатаю.
поржем все форумом заодно.
-
-
>поржем все форумом заодно. Говорят смех продлевает жизнь. Смейтесь на здоровье. А моя библиотека не зависит ни от чего ;) и переносится на любую платформу и процессор, который умеет просто +-/* ;)
-
это не слайсер, а веселенький видосик.
дай мне свой слайсер, который по stl сделает ж-код. а я его вечером напечатаю.
-
FreeAndNil © (12.12.18 14:48) [20] Мне не надо. Спасибо. Я вообще то картману хотел помочь.
-
странно.
ухаха. Слайсер как раз проще простого делается.
я от этого "ухаха" подумал, что ты написал по крайней мере один рабочий слайсер .....
... хотя нет, кого я обманываю.
я так конечно же не думал.
-
>подумал, что ты написал по крайней мере один рабочий слайсер ..... Написал 2 рабочих слайсера (векторный и полигональный). Я к вашей задаче ближе чем картман и знаю о чем идет речь. Порезать вектора не сложно. Под любым углом и на любую толщину. Сложно просчитать пустоты в объекте и толщины мостов, хотя задача на мой взгляд интересная.
-
все твои героические заморочки с геометрией модели - это пол-процента в задаче которую решает реальный слайсер (не твой)
если бы принтер печатал модель укладкой отдельных молекул или атомов, то этого пол-процента вполне могло бы и хватить.
но он печатает реальным физическим инструментом (соплом), выдавливая реальный физический материал (нитку пластика). И делает это не на экране монитора, а на реальном физическом столе.
-
FreeAndNil © (12.12.18 15:08) [24] Да за ради бога. Я вообще другой темой занимаюсь. Пишите на здоровье что хотите. В этой ветке я просто хотел помочь картману. А тут появился фриэнднил и всех отфутболил.
-
-
в этой ветке все хотели помочь картману.
двое его отговаривали от бесполезной траты времени, а третий говорил, что "слайсер-то написать легче всего" (правда ни одного он еще не написал).
-
Вот полигональный слайсер:
Это не слайсер. Это то, что ты называешь слайсером.
А реальный слайсер это то, что геометрию превращает в управляющий код инструмента.
-
>А реальный слайсер это то, что геометрию превращает в управляющий код инструмента. Некорректное описание задачи иногда убивает задачу.
-
В моем понимании слайсер - это плоскость разбивающая меш на дополнительные полигоны с добавлением точек сечения. Как в 3ds max.
-
Написал 2 рабочих слайсера (векторный и полигональный). Я к вашей задаче ближе чем картман и знаю о чем идет речь. В моем понимании слайсер - это .... https://tinyurl.com/y86gbvorо чем шла речь, смотрим исходное: "stl", "толщина стенок", "необходимость поддержек для печати", "слик3р" речь шла о 3д-печати, и слайсер там делает g-код из геометрии.
-
Вот мое понимание слайса: https://youtu.be/VP4QlVOtqWY?t=57Я не знаю что такое g-код. Я не знаю что такое slt. Мне проще написать свой формат файла и свой слайсер, но мне это не надо. Зачем пинать человека, который в теме еще не шарит. Может направить лучше в тему или времени в обрез? Картману на геймдев надо, но там злобства также хватает. Кругом зло :)
-
И вообще я картману отвечал, но вы меня отодвинули.
-
и я картману отвечал.
-
>и я картману отвечал. коментируя мои строчки?
-
> И вообще я картману отвечал, но вы меня отодвинули.
Спасибо. Но и срачи милы моему сердцу, т.ч. дважды спасибо))
-
коментируя мои строчки?
ты болен совсем?
в 11 я пишу картману и отчасти про обдув
но тут появляется мистер ухаха
dmk © (12.12.18 13:18) [12] >ты никогда не создашь годный рабочий слайсер ухаха. Слайсер как раз проще простого делается.
-
>но тут появляется мистер ухаха все правильно, чтобы не слушал подлецов и не унижал софорумцев. я тут с 2003 года, а вас вот совсем не знаю. Приходят тут всякие и муть наводят.
-
>FreeAndNil >1. эту затею надо бросать. >5. ты никогда не создашь годный рабочий слайсер
ИШ'а на вас нет. Ваши строчки давно бы были удалены. Тут не принято занижать умственные способности других, оскорблять и т.д. Тут просто общаются на тему Delphi, Object Pascal и алгоритмам.
Мне с геймдева хамства хватает. Там таких умников тысяч пять. Обнулитесь уже с моего горизонта пожалуйста.
-
малыш, к чему эти истерики. я же тебе показал, что не нападал на тебя, пока ты не начал размахивать ненаписанными слайсерами.
-
Ой Карлсончик, попей вареньку. Вылечись. У тебя жар и бред.
-
сильный и независимый разраб разволновался, услышав слова "ты никогда не напишешь слайсер"?
к тому же адресованные не ему. бывает.
|