Кроме того, существуют процедурные САПР, которые позволяют моделировать посредством программирования. Такой подход снискал себе признание среди любителей программирования и проектирования устройств с открытыми кодом и конструкцией. Например, хорошо известен OpenSCAD, который здесь не раз упоминался.
Предлагаю посмотреть на еще одну необычную САПР под названием Antimony.
Рис. 1. Antimony — САПР из параллельного мира
Antimony — САПР с открытым исходным кодом, который предоставляет подход к твердотельному моделированию при помощи направленных ациклических графов.
Такой подход используется в различных пакетах для 3D визуализации, текстурирования и создания игровой графики, а для твердотельного моделирования такой подход применяется, наверное, впервые.
Сам автор Мэтт Китер описывает свое детище как «CAD из параллельной вселенной».
Antimony построен из трёх основных компонентов:
- Фреймворк для движения данных по направленному ациклическому графу.
- Геометрическое ядро для CSG (Constructive Solid Geometry) операций, использующее функциональное представление (F-Rep) твёрдых тел.
- Библиотека примитивов и трансформаций «fab». Библиотека содержит как привычные операции вроде перемещения, масштабирования, поворота, булевы операции, так и более необычные для твердотельных САПР, такие как деформация притяжения, отталкивания, изгиба.
Рис. 2. Деформация отталкивания
Твердотельное моделирование в Antimony выполняется посредством соединения узлов графа.
Узел представляет собой какой-либо примитив или трансформацию.
Каждый узел имеет поля, значения в которые можно ввести вручную, задать как функцию от параметров другого узла, обращаясь к ним по имени узла и поля, и соединив узел с предыдущим.
Рис. 3. Передача значений посредством связи и через имя узла и параметра
Внутри каждый узел представляет собой скрипт на языке Python, который можно редактировать, а также можно создавать новые узлы со своими скриптами.
Связи внутри графа обеспечивают автоматическое распространение изменений.
Рис. 4. Скрипт узла «круг»
Принцип построения модели в общих чертах тот же что и в более привычных САПР: берём плоскую фигуру, применяем к ней операцию построения трёхмерного тела (или сразу берем трёхмерный примитив), затем комбинируем это тело с другими при помощи булевых операций или применяем операции перемещения и деформации.
Модели могут быть как однотельными так и многотельными, жесткую параметрическую связь Antimony не навязывает, покуда пользователь сам не задаст связи. Выбор плоских фигур невелик, но все они являются замкнутыми областями, так что к ним применимы те же логические операции что и к твёрдым телам.
Пользовательский интерфейс представлен двумя основными окнами: окном графов и
окном видового экрана (вьюпорта). Можно открыть дополнительное окно видового экрана с комплексом четырех проекций.
Рис. 5. Минимализм во всём
Меню операций можно вызвать щелчком правой кнопки мыши из любой точки окна графов и окна видового экрана.
Кроме вышеупомянутых способов изменения параметров узлов, возможно взаимодействовать с примитивами и операциями, таская их мышью за активные точки.
Так как автор программы работает в Formlabs, то он позаботился о возможности материализации полученных моделей. Поэтому Antimony поддерживает экспорт моделей в виде 2.5D растра (карты высот в формате PNG) и в виде моделей в формате STL для 3D-печати. Команда для экспорта — тоже узел графа.
Рис. 6. Результат экспорта в STL
И немного о недостатках:
- Импорт моделей из других САПР отсутствует.
- Невозможность задавать произвольный плоский контур в качестве эскиза для трёхмерного тела существенно ограничивает возможности моделирования.
- Вопрос, как рационально делать фаски и скругления остается открытым.
- Уровень стабильности проекта оценивается как бета-версия, что-то серьезное пытаться делать в Antimony пожалуй не стоит, но поиграть будет интересно.
Ожидая негодование инженеров-конструкторов, должен заметить, что такая САПР создана в первую очередь не в практических целях, а из личного спортивного или научного интереса автора. Понятно, что ни о каких чертежах здесь речь не идёт, так как Antimony разработан исключительно для моделирования трёхмерных тел.
Озвучу личное впечатление, что поиграть с моделированием в Antimony довольно необычно и интересно, а почти полное отсутствие элементов пользовательского интерфейса способствует погружению в процесс моделирования и приятному времяпрепровождению.
Название для своей необычный САПР автор выбрал не случайно. Antimony переводится как сурьма — вещество, сочетающее в себе свойства металлов и неметаллов, и расширяющееся при застывании расплава.
Интересно посмотреть программу в работе на скринкасте Мэтта Китера:
GitHub
Antimony написан на C++ и Python. В репозитории присутствуют инструкции по сборке из исходников для Linux и macOS, и готовые DMG образы.
Комментарии (28)
sah4ez32
20.10.2018 21:38Очень занимательная САПР.
Было бы интересно посмотреть на работу со сборками. И перестроение сборок.
Ну и да, чертежи в современных реалиях — это все ещё важно. Но сам подход — завораживает!Marsikus Автор
22.10.2018 20:14В этой программе таких понятий как деталь и сборка нету, есть просто тела. Всё же
это экспериментальный проект, своего рода технологический демонстратор подхода.sah4ez32
22.10.2018 22:47Ну сборка — это композиция тел. Поэтому сделать простую сборку я не думаю что будет проблематично.
В целом такой экспериментальный подход из мира программирования к моделированию деталей выглядит крайне эффектно. Заставляет думать чуть-чуть больше над геометрией тела и позволяет ее визуализировать более наглядно геометрическое дерево.
Думаю было было не плохо добавить такой вид отображения к "классическим" САПР.
aliksumin
20.10.2018 22:02Такой подход используется в различных пакетах для 3D визуализации, текстурирования и создания игровой графики, а для твердотельного моделирования такой подход применяется, наверное, впервые.
А как же Grasshopper, который появился еще примерно в 2007 году и используется в огромном количестве реальных проектов, да и других аналогов достаточно много (Сверчок, Dynamo...). Или речь именно о чётком направлении и последовательности операций «строка за строкой», как в Blueprint? Но визуально, на скриншотах, Antimony больше напоминает Grasshopper, чем Blueprint.
gleb_kudr
21.10.2018 01:44Похоже это духовный наследник openscad'а?
FadeToBlack
21.10.2018 07:15Тут скорее упор на визуальные языки построения, что, на мой взгляд, позволит использовать такую программу не только программистам, но и инженерам без навыков работы с текстами программ.
FadeToBlack
21.10.2018 07:07Давно слежу за этим проектом, читал статью автора программы, очень увлекательная вещь, однозначно достойная перевода.
FadeToBlack
21.10.2018 07:33А еще очень интересно знать, что этот подход к моделированию построен на FRep — functional representation — функциональное представление. То есть это реально математически точное представление в отличие от NURBS B-Rep (граничного представления), используемого повсеместно в коммерческих САПР. Подход Signed Distance Fields (SDF) и методы геометрического моделирования описываются еще в древних советских книгах (товарищ Рвачёв писал про R-функции и их геометрические приложения). Если говорить о применении таких методов — то оно взрывает воображение, ибо современные видеокарты как раз таки легко могут делать огромное количество вычислений, а значит трассировка SDF будет очень быстрой в реальном времени(мой эксперимент с SDF — трассировка лучей, освещение, тени в реальном времени). Если говорить о применении — оно обширно. Всякие МРТ и КТ получают как раз такие данные, которые удобно представлять и обрабатывать в SDF. Облака точек и полигональный суп легко можно превращать в адекватные полигональные меши через SDF и ретесселяцию (cube marching). А уж для физического моделирования как полезны эти представления для задания граничных условий и решения задач аэродинамики, термодинамики, сопроматов (это вам не конечно-элементный анализ, это гладкое математически точное представление). Короче, тема очень крутая и я считаю, что на рынке САПР она до конца не раскрыта.
KwisatzHaderach
21.10.2018 08:57Houdini может с успехом быть такой САПР.)
FadeToBlack
21.10.2018 09:03Ну там только визуальные симуляции, ни о какой физической точности речи быть не не может.
KwisatzHaderach
21.10.2018 09:11Ничто не мешает с нуля собрать нужную вам физическую модель.
FadeToBlack
21.10.2018 09:40Ну можно и в ms paint создавать шедевры живописи. Можно и blender расширять до CAD. Можно обвешать плагинами 3d max и делать там физику. Один вопрос: с какой целью? Какое преимущество у этого странного хода?
KwisatzHaderach
21.10.2018 10:09Ну к чему юродствовать.В перечисленных вами программах есть работа с SDF+вся нужная математика нодами например для работы с вольюметриками+интерфейс для работы с opencl для кастомного кода?
Хорошо что вы вспомнили про плагины, как что-то написанное за вас.
В этом плане Гудини как 3d IDE от них выгодно отличается и опровергает «Ну там только визуальные симуляции, ни о какой физической точности речи быть не не может.»FadeToBlack
21.10.2018 10:27Вся эта база есть в любом 3д движке, а самое сложное — это как раз таки реализовать преимущество SDF, создание моделей, симуляицию (физически точную). И тут от гудини остается только каркас. Если с блендером все понятно — он опенсорс, то гудини — это как бы не опен и не сорс, так что смысла не вижу завязываться на такую сторонюю программу, преимуществ это не даст.
KwisatzHaderach
21.10.2018 10:33Я бы посмотрел как сейчас в Блендере сесть и собрать по какому-нить пейперу такой сетап.
vimeo.com/213569167
В нём даже внятной работы с OpenVDB нет до сих пор.FadeToBlack
21.10.2018 10:36Да крутая программа, я не спорю. Но слишком специфична область применения. И блендер вовсе не для того, чтобы собирать такие сетапы. Можно использовать MS Word как редактор векторных изображений, в единичных случаях успешно, но в промышленных масштабах бессмысленно.
KwisatzHaderach
21.10.2018 10:54Специфична ровно настолько насколько специфичны поставленные задачи.
И тут же на большой range таких задач никак не влияет, хотя о них вроде и речь и возможности как минимум быстрого прототипирования в огромном круге задач.
Конкретно в нашем контексте быстрая конвертация из вольюметрика в полигоны и обратно даже готовыми нативными нодами(не говоря что какой-нить свой кастомный мешер/ремешер собрать не сложная задача), нужная математика с представленными данными на любом этапе.
Всё в совокупности и превращает Гудини в удобный специфичный САПР, который даже сейчас удобнее и мощнее специализированного софта.
«Если с блендером все понятно — он опенсорс»+«блендер вовсе не для того, чтобы собирать такие сетапы», так к чему его было вообще вспоминать в контексте опенсорса, как это достоинство влияет на его нынешние возможности?
FadeToBlack
21.10.2018 12:02Ну вы же понимаете, что я разработчик. И я смотрю на вещи под другим углом — с точки зрения разработки. Вот, скажем, приходят физики в «Гудини», начинают создавать свою симуляцию. А тут в неожиданном месте симуляция перестает вычисляться. В 10 км от солнца вычисляется, а в 200 км от солнца — нет. Курят мануалы, пишут в службу поддержки «Гудини». А там оказывается, что ради оптимизации какие-нибудь мелкие значения, не оказывающие реального воздействия на результирующее изображение, отбрасываются. Любые запросы на исправления этого бага будут посланы подальше во вселенную, либо отодвинуты по приоритету в дальний ящик. ОпенСорс — идем и правим. Вот и все. Вся разница.
KwisatzHaderach
21.10.2018 14:21Для разработчика в Гудини есть HDK и с++.Помимо можно написать дубль нативного решения на python,vex или opencl с нужной вам точностью.
И поддержка у Сайдов наверное лучшая в индустрии.Вот у того же BF ждешь исправления или нужных фич годами.
Из разговоров я уже понял что вы если и ставили Гудини, то дальше иконок с полки дело не пошло, судя по фантазиям.
Если кого-то не устраивает отдельное родное решение в UE или Unity они лабают своё.Но не пилят же свой редактор.)
FadeToBlack
21.10.2018 21:41Да ну можно сделать, кто же сомневается-то. Но кто реально этим будет заниматься? Ну сделает пара физиков-извращенцев какой-нибудь модуль на коленке ради спортивного интереса, сделает свои рассчеты и закинет эту идею в дальний ящик. А я как программист пойду (уже пошел) писать свой CAD, поскольку я понятия не имею кому нужна будет моя разработка, основанная на программе, где базовая лицензия стоит немалых (уверен) денег. Вот, скажем я захочу бесплатно раздавать свои модули. Но даже в этом случае у меня будет два с половиной пользователя. Ну не вижу я логики в такой реализации.
SHVV
21.10.2018 13:15На мой взгляд как раз понятно, почему такой подход не особо популярен в САПР. Он более ограничен, так как заточен на представление объёма, нежели поверхности. А в САПР как раз более важны поверхности и их фичи. Например, я не очень представляю, как смоделировать такой штукой кузов автомобиля, или обводы кораблей, самолётов и т.д. Сплайновые поверхности для этого больше подходят. А фаски, упомянутые в статье? С поверхностями всё просто: ребро — это функция пересечения поверхностей, которые мы можем вычислить с любой точностью, а по ней построить фаски. Более того, эти рёбра в дальнейшем используются для вычисления оптимальных траекторий ЧПУ станков, чтобы максимально точно передать их в металле. С SDF — это становится более сложной задачей. И, скорее всего, опять же потребует построения B-Rep как промежуточного представления. Спрашивается, а зачем тогда F-Rep, если можно сразу в B-Rep моделировать?
А 3Д сканы, МРТ и прочее — это скорее воксельное представление. В ним да, можно прикрутить FRep, чтоб работать в том же виде. Да и для 3Д печати такое представление больше подходит.FadeToBlack
21.10.2018 21:52На самом деле, такой штукой можно смоделировать что угодно. А сплайны — это всего лишь формула поверхности, FRep не ограничивает пользователя, можно и сплайны строить, да вообще любые тела с произвольными функциями поверхности. Надеюсь, для вас не будет открытием то, что в обычном САПР вы не можете точно построить винтовую поверхность (читай, резьбу). Это будет всего лишь аппроксимация с помощью NURBS. Уверен, фаски тоже не проблема, по крайней мере, точно снять фаску со всего объекта. Траектории для ЧПУ даже проще, чем с другими подходами, поскольку offset curve/surface это то, что с помощью SDF сделать как два пальца. В том то и дело, что в FRep можно делать все и даже проще, чем с BRep. Просто прогресс не пошел этим путем из-за того, что на заре индустрии САПР все же тяжеловато было вычислять и визуализировать FRep, но с современными видеокартами это не проблема.
orignal
22.10.2018 20:15Точную модель вы действительно построите, в том смысле, что всегда будет ответ на вопрос, лежит ли точка внутри или снаружи твердого тела с заданной точностью. Но этим всё и исчерпывается. Практической пользы от такой модели мало. Самой же теме F-rep уже несколько десятилетий и дальше академических исследований дело не пошло по вполне понятным причинам.
gshamshurin
21.10.2018 16:14+1Автор программы умён
1. Сделать графопостроитель
2. Назвать словом CAD
3. Записать себе в резюме: в одиночку разработал CAD-систему.
Ожидая негодование инженеров-конструкторов, должен заметить, что такая САПР создана в первую очередь не в практических целях, а из личного спортивного или научного интереса автора. Понятно, что ни о каких чертежах здесь речь не идёт
Я тут уже писал про то что CAD это Computer Aided Design.
Претензий к автору программы не будет, назови он это «весёлая игра в CAD», «симулятор инженера-конструктора для программистов», «параметрический моделер» и.т.д.
Настоящий CAD — это то, в чём настоящие инженеры-конструкторы делают настоящие изделия. Это — не CAD и никогда не будет настоящим CADом. Автор начал проектировать систему не с того места, с которого нужно, а с того, с которого умеет. То есть изначально, фундаментально не правильно.kibizoidus
21.10.2018 18:56+1Программирование ради программирования, ну что вы. Это весело, тут автора можно понять…
Но с другой стороны — без упора на чертежи и генерацию G-кода толку чуть меньше чем нет воообще.
dom3d
Как увидел слова САПР и CAD/CAM, так аж забегал по комнате от возбуждения.
Моя любимая тема.
FadeToBlack
Тогда, надеюсь, вы прочитали мои статьи на эту тему )
dom3d
Спасибо, пошел читать.
Я честно говоря, несколько дней назад глянул на те, что сверху, а ниже вижу еще Параметрическое моделирование в САПР SolveSpace
Это тоже для меня вкусная тема.