Конференция "Прочее" » анализ 3D модели
 
  • картман © (09.12.18 14:32) [0]
    Всем привет!

    Есть модель в формате STL - описана набором полигонов. Нужно определить, есть ли в ней пустоты, толщины стенок, где нужны поддержки для печати.

    Собственно, интересует математика: как из полигонов сделать объемное представление и как из него получать срезы. Что читать, где копать.

    Есть библиотека https://github.com/slic3r/Slic3r, но как с ней работать неизвестно, да и возможности не вполне ясны, поэтому, не исключено, нужно будет писать с нуля.

    Спасибо.
  • картман © (11.12.18 14:28) [1]
    Шарахов на форум забил((
  • dmk © (11.12.18 14:41) [2]
    >как из полигонов сделать объемное представление
    Сдвиг по нормалям граней на толщину. Получается Extrude.
    Вариантов немеренно на самом деле.
    Из файла только точки достать надо и индексы полигонов.
    Остальное считается.
  • картман © (11.12.18 15:07) [3]

    > Вариантов немеренно на самом деле.

    как называются?
  • dmk © (11.12.18 15:30) [4]
    >как называются?
    в 3ds max есть сдвиги по группам, по нормалям, по осям, по граням, по функциям и т.д.
    Я тоже пишу 3D-векторную либу. Немного выучил.
  • картман © (11.12.18 15:42) [5]
    вот что мне 3d max?
    Проекцию как строить?


    > Я тоже пишу 3D-векторную либу.

    литературой же пользуешься?
  • dmk © (11.12.18 16:11) [6]
    >литературой же пользуешься?
    Да. На форумах такого почти не нароешь.
    Основы матчасти можно здесь посмотреть:
    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;
  • картман © (11.12.18 16:29) [7]
    спасибо, гляну
  • Pavia © (11.12.18 20:09) [8]
    Бросай эту идею.

    > STL - описана набором полигонов. Нужно определить, есть
    > ли в ней пустоты,

    В STL потерна информация о полнотелых телах. Так что приближёнными методами.
    Разбиваешь весь объем квадро деревьями и проверяешь точка внутри тела или снаружи. Проверяешь путём пускания луча и проверки числа пересечённых полигонов. Четное снаружи нечётное внутри.

    > где нужны поддержки для печати.

    Смотреть видео печать мостиков без поддержек. Обдув посильнее температуру подобрать пластик будет на лету застывать.


    >  как из него получать срезы.

    Пересечение треугольника и плоскости.

    https://web.stanford.edu/class/cs277/resources/papers/Moller1997b.pdf
  • картман © (12.12.18 11:24) [9]

    >
    > Пересечение треугольника и плоскости.

    вот интересно - чего постоянно дают ссылки на это образовательное учреждение? Причем, не важна степень сложности вопроса: теорема Пифагора или Перельмана - все посылают туда. Неужто на русском нет этих начал, придуманных, небось, еще шумерами?
  • Pavia © (12.12.18 12:37) [10]
    Потому что они занимаются наукой, а не изображают бурную деятельность в виде воровства чужих идей. Поэтому они в открытую публикуют свои идеи.
    Тем более стекнфорд это место зарождения компьютерных технологий и наук.
    Вот если бы вы спрашивали по компьютерное зрение, то скорее всего это был бы французский Вуз.


    > Причем, не важна степень сложности вопроса: теорема Пифагора

    Если вопрос из школьной геометрии то я посылаю на Интернет урок
    https://interneturok.ru/lesson/geometry/8-klass/ploschad/formulirovka-i-dokazatelstvo-teoremy-pifagora


    >  Неужто на русском нет этих начал, придуманных, небось,
    > еще шумерами?

    По поводу начал. Проблема в том что ваша задача это далеко не начала, а продвинутый уровень.
    Описание Моллера считается классическим. Были труды до него 91 ещё в ФИДО публиковали американцы.  Но они не столь  хорошо описаны. Так что шумерами тут и не пахнет.  

    Что касается русского, то надо искать.  У меня такого нет.
    Матрицы это 19 век эпоха Эллера.  Так что вы честно можете взять учебник по векторной геометрии выписать уравнение плоскости одной и второй и решить их самостоятельно.
    Но зачем? Когда Моллер  уже построил оптимальный ход решения и у него учтены все нюансы для треугольников. А вот перевода на русский не хватает. Но это не моя вина, то что в России 90 -тых на науку тратилось меньше 1% и тупо некому было переводить статьи.
  • FreeAndNil © (12.12.18 12:51) [11]
    > где нужны поддержки для печати.

    Смотреть видео печать мостиков без поддержек. Обдув посильнее температуру подобрать пластик будет на лету застывать.


    1. эту затею надо бросать.
    2. обдув годится для пла, и не годится для абс. совершенно. а пластиков больше чем два типа.
    3. кроме голой геометрии там миллиард других заморочек связанных с тем, что управлять надо реальным инструментом, который выдавливает реальный материал с реальными свойствами. ускорения, ретракты, накаты ....
    4. поставь свежую куру, зайди в  настройки settings visibility, начни считать их и ужаснись
    5. ты никогда не создашь годный рабочий слайсер
  • dmk © (12.12.18 13:18) [12]
    >ты никогда не создашь годный рабочий слайсер
    ухаха. Слайсер как раз проще простого делается.
  • dmk © (12.12.18 13:35) [13]
    По теме могу добавить, что алгоритм проверки на сочленения достаточно прост.
    В цикле перебираете треугольники и помечаете треугольники инкрементирующимся флагом.
    Если треугольники по координатам не совпали, то начинаете новый обсчет с новым флагом.
    Так вы посчитаете на сколько кусочков разбит объект. Тут только затраты на вычисления могут быть большие по времени. Ежели в итоге объект один, то все сочленяется и объект не имеет разрывов, а если у вас получилось несколько флагов, то объект состоит из кусочков, что для 3д-печати весьма печально. Нужны мостики.
  • dmk © (12.12.18 13:36) [14]
    >Ежели в итоге объект один
    Читать как:
    Ежели в итоге флаг один.
  • dmk © (12.12.18 13:42) [15]
    Просто может быть так, что фигура отсканирована. В сканированных фигурах есть куча огрех, там иногда надо соединять точки (Weld). Это требует предварительного просчета и последующего визуального контроля. Точки могут быть очень близко друг к другу, но принадлежать к разным треугольникам. Это просто битый меш.
  • FreeAndNil © (12.12.18 13:54) [16]
    а если у вас получилось несколько флагов, то объект состоит из кусочков, что для 3д-печати весьма печально. Нужны мостики.

    вот здесь например твоих флагов будет много, но они там не нужны, так как все испортят.
    https://www.thingiverse.com/thing:2031690

    ухаха. Слайсер как раз проще простого делается.
    ну значит окей.
    с января все перейдем на картман-слайсер 1.0
  • FreeAndNil © (12.12.18 14:03) [17]
    Тут только затраты на вычисления могут быть большие по времени.

    ну это же ерунда. особенно когда у тебя есть прокачанный frreeandnil-friendly class

    кстати, нельзя ли потестить твой написать легче-легкого слайсер в деле?
    скинь, я отслайсю и вечером напечатаю.

    поржем все форумом заодно.
  • dmk © (12.12.18 14:43) [18]
    Вот мой слайсер (без использования GAPI):
    https://yadi.sk/i/kJ95pw-wBq7wJw
  • dmk © (12.12.18 14:47) [19]
    >поржем все форумом заодно.
    Говорят смех продлевает жизнь. Смейтесь на здоровье.
    А моя библиотека не зависит ни от чего ;)
    и переносится на любую платформу и процессор, который умеет просто +-/* ;)
  • FreeAndNil © (12.12.18 14:48) [20]
    это не слайсер, а веселенький видосик.

    дай мне свой слайсер, который по stl сделает ж-код.
    а я его вечером напечатаю.
  • dmk © (12.12.18 14:53) [21]
    FreeAndNil ©   (12.12.18 14:48) [20]
    Мне не надо. Спасибо. Я вообще то картману хотел помочь.
  • FreeAndNil © (12.12.18 14:57) [22]
    странно.

    ухаха. Слайсер как раз проще простого делается.

    я от этого "ухаха" подумал, что ты написал по крайней мере один рабочий слайсер .....

    ... хотя нет, кого я обманываю.

    я так конечно же не думал.
  • dmk © (12.12.18 15:02) [23]
    >подумал, что ты написал по крайней мере один рабочий слайсер .....
    Написал 2 рабочих слайсера (векторный и полигональный).
    Я к вашей задаче ближе чем картман и знаю о чем идет речь.
    Порезать вектора не сложно. Под любым углом и на любую толщину.
    Сложно просчитать пустоты в объекте и толщины мостов, хотя задача на мой взгляд интересная.
  • FreeAndNil © (12.12.18 15:08) [24]
    все твои героические заморочки с геометрией модели - это пол-процента в задаче которую решает реальный слайсер (не твой)

    если бы принтер печатал модель укладкой отдельных молекул или атомов, то этого пол-процента вполне могло бы и хватить.

    но он печатает реальным физическим инструментом (соплом), выдавливая реальный физический материал (нитку пластика).
    И делает это не на экране монитора, а на реальном физическом столе.
  • dmk © (12.12.18 15:29) [25]
    FreeAndNil ©   (12.12.18 15:08) [24]
    Да за ради бога. Я вообще другой темой занимаюсь.
    Пишите на здоровье что хотите.
    В этой ветке я просто хотел помочь картману.
    А тут появился фриэнднил и всех отфутболил.
  • dmk © (12.12.18 15:32) [26]
    Вот полигональный слайсер:
    https://yadi.sk/i/B1h8n9N1QBTQfg
  • FreeAndNil © (12.12.18 15:39) [27]
    в этой ветке все хотели помочь картману.

    двое его отговаривали от бесполезной траты времени,
    а третий говорил, что "слайсер-то написать легче всего" (правда ни одного он еще не написал).
  • FreeAndNil © (12.12.18 15:41) [28]
    Вот полигональный слайсер:

    Это не слайсер.
    Это то, что ты называешь слайсером.

    А реальный слайсер это то, что геометрию превращает в управляющий код инструмента.
  • dmk © (12.12.18 15:59) [29]
    >А реальный слайсер это то, что геометрию превращает в управляющий код инструмента.
    Некорректное описание задачи иногда убивает задачу.
  • dmk © (12.12.18 16:03) [30]
    В моем понимании слайсер - это плоскость разбивающая меш на дополнительные полигоны с добавлением точек сечения. Как в 3ds max.
  • FreeAndNil © (12.12.18 16:10) [31]
    Написал 2 рабочих слайсера (векторный и полигональный).
    Я к вашей задаче ближе чем картман и знаю о чем идет речь.
    В моем понимании слайсер - это ....


    https://tinyurl.com/y86gbvor

    о чем шла речь, смотрим исходное:
    "stl", "толщина стенок", "необходимость поддержек для печати", "слик3р"

    речь шла о 3д-печати, и слайсер там делает g-код из геометрии.
  • dmk © (12.12.18 17:20) [32]
    Вот мое понимание слайса:
    https://youtu.be/VP4QlVOtqWY?t=57

    Я не знаю что такое g-код. Я не знаю что такое slt.
    Мне проще написать свой формат файла и свой слайсер, но мне это не надо.

    Зачем пинать человека, который в теме еще не шарит.
    Может направить лучше в тему или времени в обрез?

    Картману на геймдев надо, но там злобства также хватает. Кругом зло :)
  • dmk © (12.12.18 17:23) [33]
    И вообще я картману отвечал, но вы меня отодвинули.
  • FreeAndNil © (12.12.18 20:19) [34]
    и я картману отвечал.
  • dmk © (12.12.18 20:32) [35]
    >и я картману отвечал.
    коментируя мои строчки?
  • картман © (12.12.18 20:47) [36]

    > И вообще я картману отвечал, но вы меня отодвинули.

    Спасибо. Но и срачи милы моему сердцу, т.ч. дважды спасибо))
  • FreeAndNil © (12.12.18 21:41) [37]
    коментируя мои строчки?

    ты болен совсем?

    в 11 я пишу картману и отчасти про обдув

    но тут появляется мистер ухаха

    dmk ©   (12.12.18 13:18) [12]
    >ты никогда не создашь годный рабочий слайсер
    ухаха. Слайсер как раз проще простого делается.
  • dmk © (12.12.18 22:57) [38]
    >но тут появляется мистер ухаха
    все правильно, чтобы не слушал подлецов и не унижал софорумцев.
    я тут с 2003 года, а вас вот совсем не знаю. Приходят тут всякие и муть наводят.
  • dmk © (12.12.18 23:07) [39]
    >FreeAndNil
    >1. эту затею надо бросать.
    >5. ты никогда не создашь годный рабочий слайсер

    ИШ'а на вас нет. Ваши строчки давно бы были удалены.
    Тут не принято занижать умственные способности других, оскорблять и т.д.
    Тут просто общаются на тему Delphi, Object Pascal и алгоритмам.

    Мне с геймдева хамства хватает. Там таких умников тысяч пять.
    Обнулитесь уже с моего горизонта пожалуйста.
  • FreeAndNil © (13.12.18 00:21) [40]
    малыш, к чему эти истерики.
    я же тебе показал, что не нападал на тебя,
    пока ты не начал размахивать ненаписанными слайсерами.
  • dmk © (13.12.18 02:50) [41]
    Ой Карлсончик, попей вареньку. Вылечись. У тебя жар и бред.
  • FreeAndNil © (14.12.18 09:22) [42]
    сильный и независимый разраб разволновался, услышав слова "ты никогда не напишешь слайсер"?

    к тому же адресованные не ему.
    бывает.
 
Конференция "Прочее" » анализ 3D модели
Есть новые Нет новых   [134427   +34][b:0][p:0.001]