Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник
Коллекция курьезных вопросов из форумов
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

анализ 3D модели


картман ©   (09.12.18 14:32

Всем привет!

Есть модель в формате 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]

сильный и независимый разраб разволновался, услышав слова "ты никогда не напишешь слайсер"?

к тому же адресованные не ему.
бывает.


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо