Опубликовано: July 27, 2020

Dynamo: что нового в Python, 3D и нодах

views
1262 просмотра
В начале июля текущего года сообщество разработчиков Dynamo опубликовало Дорожную карту платформы на ближайшие месяцы. В ней сообщалось о намерении модернизировать код для роста производительности, улучшения графики и удобства использования. Рассмотрим, над какими функциями идёт работа.
Dynamo: что нового в Python, 3D и нодах

Dynamo — инструмент визуального программирования с открытым исходным кодом для архитекторов и инженеров-проектировщиков. С помощью скриптов на Dynamo удобно управлять процессом создания BIM-модели, исследуя разные варианты динамики её элементов. Таким образом, Dynamo в 3D-графике органично дополняет функции программного комплекса Autodesk Revit.

image-0 Источник: сайт Dynamobim.org

В результате автоматизируется проектирование и строительство зданий различного назначения, железнодорожных и автомобильных дорог, трубопроводных и электрических сетей, промышленных и горнодобывающих предприятий. И не только. Например, возможности Dynamo использовались при создании 10 моделей чиллеров Clint компанией холодоснабжения «Ингеохолод». Алгоритм скрипта учёл правила комплектации и позволил быстро специфировать более трёх десятков опций этого сложносоставного оборудования.

В начале июля текущего года сообщество разработчиков Dynamo опубликовало Дорожную карту платформы на ближайшие месяцы. В ней сообщалось о намерении модернизировать код для роста производительности, улучшения графики и удобства использования. Рассмотрим, над какими функциями идёт работа. 

Ключевая модернизация — переход от Python 2 до Python 3 

image-0 Дорожная карта Python 2 -— Python 3: Зелёным выделены обновления, включённые в релиз Dynamo 2.7, красным — ещё ведутся работы, синим — планируемые шаги.

Python как один из самых популярных скриптовых языков помогает решать множество задач в любом проекте. Так, Dynamo напрямую интегрирует код Python для взаимодействия с API Revit. Ранее это осуществлялось NET-совместимым интегратором IronPython, однако на сегодняшний день его версии для Python 3 отсутствует. Учитывая, что старый движок и новый CPython 3 — концептуально разные, то и портирование кода к версии Python 3 имеет свои нюансы и требует внесения большого количества изменений в код. Вот почему команда прилагает большие усилия, чтобы период замены версий прошёл незаметно для пользователей.

Помимо обновления функций и исправления ошибок в системе безопасности, новый встроенный интегратор CPython даёт доступ к популярным библиотекам NumPy, SciPy, Pandas, Keras и многим другим. Поддержка Python 3 технологий машинного обучения (ML), искусственного интеллекта (AI) и больших данных (Big Datа) создает условия для реализации более широких функциональных возможностей, которые отсутствуют в прежних пакетах Dynamo. Такова причина работы комьюнити над внедрением новой версии Python.

Доступ к Python в Dynamo легко получить как через прежний интегратор IronPython2, так и через новый — CPython3. Оба доступны на Python Scriptу. Соответственно, любой специалист, если пожелает, способен самостоятельно переписать код. В помощь — всплывающие сообщения об ошибках и документация, в которой подробно рассказано о всех изменениях.

Модернизация 3D-графики

Дорожная карта решает проблему 3D-визуализации. В недавнем релизе Dynamo 2.7 отмечено значительное обновление функций трёхмерной графики. Теперь фреймворк Helix Toolkit для фонового рендеринга предпросмотра содержит более современный и производительный 3D-интерфейс, с улучшенными характеристиками. 

Наряду с улучшением действующих функций, Helix предлагает и дополнительные преимущества, в частности — лёгкую в обслуживании кодовую базу.

Среди новшеств:

  1. оптимизация интеграции с хостами; 
  2. модернизация шейдеров и управления зависимостями; 
  3. максимально приближены к реальности освещение объектов и цвета;
  4. масштабирование вспомогательных объектов;
  5. рост скорости рендеринга.
image-0 Возможности графики Dynamo 2.7

Кроме того, в новом улучшенном движке Helix пофикшена довольно досадная ошибка при рендеринге, когда слишком большая графика приводила к сбою Dynamo из-за нехватки памяти. Проблема была решена путём динамического отключения предпросмотра 3D-рендеринга. Однако если для работы необходимо больше рендеринга геометрии, то пользователь может в любой момент отключить предпросмотр или понизить точность рендеринга.

Разработчики Dynamo не останавливаются на достигнутом и в ближайшие месяцы обещают ещё больше новых функций для 3D-визуализации. 

Ноды с автозаполнением

По давней просьбе пользователей, в Dynamo 2.7 добавлена возможность выбирать геометрию в фоновом режиме и выделять соответствующий узел при 3D-визуализации. 

Ноды визуального скрипта представляют собой часть граф и являются элементами Revit, свойства которых можно редактировать. Они используются для моделирования паритетных отношений между объектами. В таком контексте график состоит из вершин, узлов, соединенных дугами, ребрами или линиями. Сложность в том, что нод много и они взаимодействуют друг с другом. Например, бесплатные расширения DynamoCivil3d, DynamoCore, DynamoRevit имеют много сотен нод. Пользователю неясно, какую из них надо использовать и когда. 

Чтобы придать интерфейсу лёгкость восприятия, разработчики добавили функцию автозаполнения узлов. За счёт исключения незадействованных нод, в процессе создания 3D-графики возникает меньше ошибок. Визуализация идёт быстрее и более понятным способом, причём скрипт показывает только контекстно-релевантные параметры. 

Также исправлены ошибки автозаполнения Codeblock и Node2Code, что повысило качество ElementResolver. Графика стала более плавной и последовательной. 

В целом, модернизация выходит за рамки семантического управления версиями, которого обычно придерживался Dynamo. В результате на порядок выросла производительность рабочего процесса. 

Дорожная карта Dynamo содержит ещё много приятных сюрпризов. Большинство устаревших компонентов разработчики исключили из новой версии. Так что, в скором времени работа с платформой станет ещё проще, согласованнее, а её функции будут полностью соответствовать современным запросам специалистов к 3D-визуализации.

Нравится
0
Не нравится
0