Программа для создания 3 d модели sketchup python
Этот отчет в основном включает три подключаемых модуля ESRI ArcGIS9.3 (или 9.2), Sketchup6.0 и SketchUp6 ESRI, которые необходимо установить.
ArcGIS - важное программное обеспечение, с которым знакомы все, кто занимается этой специальностью. Я не буду здесь его представлять. В основном я расскажу о программном обеспечении Google Sketchup. Это набор инструментов проектирования, непосредственно ориентированных на процесс создания планов проектирования. Процесс создания может не только полностью выразитьДизайнерИдея полностью отвечает потребностям общения с клиентами в режиме реального времени. Она позволяет дизайнерам воплощать очень интуитивно понятные идеи прямо на компьютере. Это отличный инструмент для создания трехмерных архитектурных дизайнерских планов.
Теперь ArcGIS достиг 10, а Sketchup появился в версии 8.0, но поскольку плагин имеет только версию Sketchup6, эта версия плагина лучше всего работает с ArcGIS9.2, поэтому установите ArcGIS9.2 как можно чаще, так что будет избавьте от лишних хлопот. Поскольку на моем компьютере установлена профессиональная версия Win8, эта версия не поддерживает версию 9.2, поэтому я могу установить только 9.3.
Установка ArcGIS и Sketchup не будет вдаваться в подробности, есть некоторые ключевые этапы установки подключаемого модуля SketchUp6 ESRI, которые требуют внимания! Интерфейс установки, как показано на рисунке:
Среди них первый компонент «Плагин ГИС» позволяет пользователям импортировать модели в GDB в виде элементов Multipatch в SketchUp. Второй компонент «Поддержка 3D-символов 3D Analyst SketchUp», пользователи могут импортировать данные ГИС в SketchUp в ArcMap. Таким образом, подключаемый модуль GIS устанавливается в каталог установки Sketchup, а поддержка 3D-символов 3D Analyst SketchUp устанавливается в каталоге установки ArcGIS. Неверный путь не может быть установлен, иначе Sketchup и ArcGIS не могут быть подключены.
2. Активируйте плагин SketchUp6 ESRI в среде ArcGIS.
После установки подключаемого модуля Sketchup может экспортировать файл mdb без каких-либо настроек, но ArcGIS необходимо настроить. Перед 3D-моделированием мы должны выбрать, где заложить фундамент.Эту работу может выполнить ArcMap, поэтому нам нужно установить его в ArcMap, чтобы экспортировать данные в Sketchup. Настройка очень проста. Щелкните правой кнопкой мыши на панели инструментов и выберите «Настроить», как показано на рисунке ниже:
Нажмите «Добавить из файла», чтобы загрузить файл динамической библиотеки «FeaturesToSkp.dll», добавленный для продуктов ArcGIS после установки подключаемого модуля SketchUp:
После добавления подключаемой динамической библиотеки вы можете найти функциональные элементы SketchUp 6 в элементе Панели инструментов, выбрать компонент «Инструменты SketchUp 6» и нажать «Закрыть», после чего появится следующий значок:
Кроме того, для удобства использования я также установил комбинацию клавиш, нажмите на клавиатуре (внизу посередине) интерфейса настройки, чтобы установить ее.
На этом этапе ArcGIS и Sketchup могут выполнять совместное моделирование и управление.
два. Объединенный процесс 3D-моделирования в Sketchup и ArcGIS
Sketchup - это программное обеспечение с очень мощными возможностями 3D-моделирования и простым в эксплуатации. ArcGIS также является козырным программным обеспечением для управления данными и пространственного анализа, но его возможности построения и редактирования моделей не сильны. Их сочетание может дополнять друг друга. В проекте цифрового строительства или планирования такая комбинация программного обеспечения способствует разделению труда между разными работниками.Архитекторам необходимо использовать только знакомый им Sketchup для моделирования, а персонал, занимающийся управлением и анализом данных, может выполнять различные задачи с помощью пространственного анализа ArcGIS и управление данными.
Процесс объединения Sketchup и ArcGIS выглядит следующим образом:
(1) Используйте рабочий стол ArcGIS, ArcMap, для загрузки векторных данных;
(2) В среде ArcMap используйте инструмент расширения SketchUp, чтобы импортировать область, которую необходимо моделировать, в SketchUp.
(3) Создайте модель в SketchUp.
(4) Преобразуйте модель в файл элемента модели ArcGIS Multipatch в SketchUp и сохраните его в Personal GeoDatabase.
два. Пример использования ArcGIS и SKetchup
1. Источник данных
Данные в векторном формате в ArcMap можно экспортировать в Sketchup, поэтому полученные данные необходимо сначала преобразовать, чтобы они стали шейп-файлами или базами геоданных, поддерживаемыми ESRI. Обычно растровые данные необходимо векторизовать. Для других типов векторных данных (таких как векторные файлы САПР, данные в формате dwf), хотя ArcMap может быть загружен, они часто не содержат пространственных координат, поэтому создайте новую базу данных GeoDatabase или файл shp в ArcCatalog. , Импортируйте эти данные, а затем добавьте пространственную привязку. Новый метод создания очень прост: создайте новую персональную базу геоданных в целевом каталоге и следуйте инструкциям ArcCatalog для пошаговой загрузки исходных данных и пространственной привязки. После завершения генерации его можно загрузить с помощью ArcMap и импортировать в Sketchup.
2. Экспорт данных из ArcMap
Сначала загрузите в ArcMap векторные данные, которые вы хотите смоделировать, то есть файл GeoDatabase или Shp, упомянутый выше, и добавьте к нему атрибут высоты (Height), как показано ниже:
И добавьте значения атрибутов в атрибуты высоты некоторых полигонов:
Выберите элемент, который вы хотите экспортировать, и нажмите ctrl + s (горячая клавиша, установленная мной), чтобы открыть следующее диалоговое окно:
Система автоматически считывает класс объектов, в котором расположен выбранный векторный элемент, и предоставляет параметры автоматического моделирования. Поднять по полю: Установите высоту здания в соответствии с полем атрибута. Выдавливать по полю: установите высоту здания в соответствии с полем атрибута, то есть растяните его. Имя группыиспользование: для экспорта данных выберите имя группы. В этом примере установлен флажок «Выдавливать по полю».
Результат экспорта в Sketchup следующий:
Самая заметная часть - это значение высоты, присвоенное свойству «Высота» многоугольника перед экспортом, а затем проверьте результат «Вытягивание по полю», после чего дизайнер может смоделировать его в Sketchup.
3. Экспорт результатов моделирования Sketchup в MultiPatch.
Хотя моделирование в Sketchup несложно и легко освоить, есть некоторые базовые навыки рисования и дизайна для создания красивой и обширной модели. У меня нет таланта в этом аспекте, поэтому я могу просто добавлять и изменять модель.
Во-первых, невозможно напрямую редактировать экспортированную модель, потому что импортированные данные существуют группами. Для выполнения противоположной операции необходимо выделить группу и затем разнести ее.В противном случае вы не сможете выполнять различное моделирование (рисование, растяжку и т. Д.) На поверхности:
Затем вы можете редактировать отдельное лицо в группе.
После редактирования вы должны создать группу для отредактированной модели, иначе ее нельзя будет экспортировать. Причина в том, что недавно построенные здания или другие объекты в su состоят из граней, а не являются единым целым:
Кроме того, в этом примере я не делал специального редактирования, только добавил два здания.
Следующим шагом является экспорт этих моделей, что является еще одним важным шагом, потому что, если вы не будете осторожны, экспортированные результаты будут неверными. Только модели, выбранные в рабочем пространстве SketchUp, могут быть экспортированы как независимые элементы Multipatch. Невыбранная модель также будет экспортирована как объект мультипатч, но будет существовать как единый объект в слое мультипатч.
Шаги экспорта должны быть следующими:
Во-первых, вы должны создать новую базу данных GeoDatabase, которая создает новый MultiPatch для хранения экспортированных данных. Следующие поля должны быть добавлены в процессе создания, причина объясняется в следующем разделе:
Google SketchUp — программа для быстрого создания и редактирования трёхмерной графики. Удобство и простоту SketchUp оценят, как начинающие работу с трёхмерным моделированием, так и профессионалы.
Но не все знают, что SketchUp обладает мощным API, с помощью которого можно создавать модули, добавляя в программу новый функционал. В этом посте я попытаюсь объяснить общие принципы архитектуры SketchUp и процесс разработки плагина. Перед написанием нового велосипеда плагина стоит поискать на сайте Sketchucation уже готовые реализации с необходимой для Вас функциональностью. Найдя подходящий плагин с открытым исходным кодом, можно реализовать требуемый функционал, оставив основную часть кода нетронутой. Например, плагин делает какие-то расчеты и построения, а вы только изменяете их применение или визуализацию.
Плагины для SketchUp пишутся на языке Ruby.
На Google Code представлена официальная документация по разработке. Она состоит из 3 разделов: Introduction, Quick Reference и Object Reference.
1) Introduction – вводный раздел, в котором показан пример создания простого плагина.
2) Quick Reference – справочный раздел по классам, методам.
3) Object Reference – справочный раздел по объектной модели SketchUp. Объектная иерархия очень удобно разбита по группам, что позволяет быстро искать необходимые для написания кода классы.
Пример разработки плагина я возьму из собственной практики. Для удобства работы требовался дополнительный функционал, отсутствующий в SketchUp. Задача состояла в быстром и удобном определении размеров объекта (ширина, высота, толщина). Готовый плагин с данной функциональностью был найден — GetDimensions, но у него был большой минус: он показывал размеры в MessageBox’e, который необходимо было постоянно закрывать, что создавало определенное неудобство. Я решил исследовать его код и изменить вывод результата.
Код плагина GetDimensions:
require 'sketchup.rb'
def get_dimensions
model = Sketchup.active_model
mname = model.title
Sketchup::set_status_text(( "GET COMPONENT DIMENSIONS. " ), SB_PROMPT)
Sketchup::set_status_text( " " , SB_VCB_LABEL)
Sketchup::set_status_text( " " , SB_VCB_VALUE)
boundingBox = model.selection[0].bounds
dims = [ boundingBox.height,
boundingBox.width,
boundingBox.depth ]
dims.sort!
UI.messagebox( "Thickness: " + dims[0].to_s + "\nWidth: " + dims[1].to_s + "\nLength: " + dims[2].to_s)
end
if ( not file_loaded?( "GetDimensions.rb" ) )
add_separator_to_menu( "Plugins" )
UI.menu( "Plugins" ).add_item( "Get Dimensions" ) < get_dimensions >
end
* This source code was highlighted with Source Code Highlighter .
Код состоит из логики плагина ( get_dimensions ), добавления пункта меню (Plugins -> Get Dimensions) и загрузка самого файла плагина в систему (GetDimensions.rb).
Для установки, плагин необходимо скопировать в директорию “C:\Program Files\Google\Google SketchUp\Plugins\”, а программа автоматически подгрузит все скрипты из этой папки при запуске.
Главным объектом, хранящим в себе структуру рисунка, является model .
В данном плагине берется первый выделенный объект и его размеры. Размеры сортируются в порядке возрастания и показываются в MessageBox’е, а в панели состояния отображается название плагина.
Панель состояния меня сразу заинтересовала, и я решил перенести в нее вывод полученных размеров.
После небольшой модификации плагина мне удалось этого достичь:
def get_dimensions
model = Sketchup.active_model
entities = model.entities
boundingBox = model.selection[0].bounds
dims = [ boundingBox.height,
boundingBox.width,
boundingBox.depth ]
dims.sort!
Sketchup::set_status_text(( "Thickness: " + dims[0].to_s + ". Width: " + dims[1].to_s + ". Length: " + dims[2].to_s ), SB_PROMPT)
end
* This source code was highlighted with Source Code Highlighter .
После выбора элемента, с помощью инструмента Select, выбираем в меню команду Get Dimensions. В результате на панели состояния будут отображаться размеры выбранного элемента. Для более удобного вызова команды следует назначить горячую клавишу.
Следующим шагом было сделать так, чтобы размеры автоматически показывались при выделении объекта. В голову пришло два варианта: сделать свой инструмент, который бы выделял элементы как инструмент Select, но при этом показывал внизу размеры, либо модифицировать инструмент Select, что бы он при выделении показывал размеры объекта.
После поиска по Object Reference, родилась идея реализации второго способа.
Как оказалось, с помощью Observer Classes -> SelectionObserver можно подписаться на события инструмента Select.
После модификации логика плагина была разнесена на два файла:
Dimensions_load.rb
require 'sketchup.rb'
require 'Dimensions/GetDimensions.rb'
$PluginMenuName = "Tools"
$DimensionsMenuName = "Dimensions Tool"
$GetDimensionsMenuItem = "Get Dimensions"
$AutoDisplayMenuItem = "Auto Display Dimensions"
if (not file_loaded?( "dimensions_load.rb" ))
pluginMenu = UI.menu($PluginMenuName)
dimensions = Dimensions. new
pluginMenu.add_separator
getDimensionsSubMenu = pluginMenu.add_submenu($DimensionsMenuName)<>
getDimensionsSubMenu.add_item($GetDimensionsMenuItem)
autoDisplayItem = getDimensionsSubMenu.add_item($AutoDisplayMenuItem)
getDimensionsSubMenu.set_validation_proc(autoDisplayItem)
end
* This source code was highlighted with Source Code Highlighter .
GetDimensions.rb
def onSelectionBulkChange(selection)
get_dimensions(selection)
end
def get_selection_dimensions
get_dimensions(Sketchup.active_model.selection)
end
def get_dimensions(selection)
boundingBox = selection[0].bounds
dims = [ boundingBox.height,
boundingBox.width,
boundingBox.depth ]
dims.sort!
Sketchup::set_status_text(( "Thickness: " + dims[0].to_s + ". Width: " + dims[1].to_s + ". Length: " + dims[2].to_s ), SB_PROMPT)
end
def connect_observer
if (@usedObserver) then
return remove_observer
else
return add_observer
end
end
def add_observer
@usedObserver = true
Sketchup.active_model.selection.add_observer self
return MF_CHECKED
end
def remove_observer
@usedObserver = false
Sketchup.active_model.selection.remove_observer self
return MF_UNCHECKED
end
def menu_checked
if (@usedObserver) then
return MF_CHECKED
else
return MF_UNCHECKED
end
end
end
* This source code was highlighted with Source Code Highlighter .
Рассмотрим код подробнее.
Для того, чтобы иметь возможность перехватывать события инструмента Select, необходимо наследоваться от класса SelectionObserver , переопределить у себя метод onSelectionBulkChange(selection) , который будет вызываться при выделении объектов, и подписаться на события с помощью Sketchup.active_model.selection.add_observer .
Плагин был перемещен в меню Tool -> Dimensions Tool, которое содержит два подпункта: Get Dimensions и Auto Display Dimensions.
Как я уже говорил ранее, задача плагина сводилась к отображению параметров объекта автоматически при его выделении. Т.к. дополнительный функционал не всегда нужен, решено было сделать его отключаемым. Auto Display Dimensions — позволяет включать его в нужный момент, а Get Dimensions – вызов плагина по запросу — был оставлен для большей гибкости использования.
Как видите, модернизирование существующего плагина намного проще, чем писание его с нуля. Кстати, я впервые писал код на Ruby, но благодаря большому опыту программирования, понять синтаксис не составило труда.
Допустим, вам потребовалось на языке программирования python, построить трёхмерную модель некоторого объекта, затем визуализировать его, или подготовить файл для печати на 3D принтере. Существует несколько библиотек, помогающих в решении этих задач. Поговорим о том, как строить трёхмерные модели из точек, граней и примитивов в python. Как выполнять элементарные приемы 3D моделирования: перемещение, поворот, объединение, вычитание и другие.
Применяя каждую библиотеку, построим фрактал - Губку Менгера (Menger sponge), сохраним модель в stl файл и выполним рендеринг изображения. Попутно, кратко ознакомимся с используемыми структурами данных и терминами.
Примеры кода можно найти в репозитории на GitHub.
Docker для исполнения примеров Pymesh:
sudo sh get-docker.sh
Компилятор g++ для PyTorch3d:
sudo apt update
sudo apt install g++
Клонирование репозитория и установка библиотек:
pip install -r requirements.txt
pip install "git+https://github.com/facebookresearch/pytorch3d.git"
sudo apt-get install openscad
Numpy-stl: Обзор библиотеки
Изображение из Википедии
Vertices (вершины) - список точек. Каждая точка описана тремя числами - координатами в 3-х мерном пространстве.
Если вы не знакомы с Jupyter notebook
Вершины пирамиды
Несмотря на то, что пока описаны только вершины, уже можно взглянуть как будет выглядеть модель, если соединить их треугольниками:
Изоповерхность пирамиды
Выглядит так, будто грани уже существуют. Но пока у нас есть только вершины. Чтобы сформировать stl файл, опишем грани, что можно сделать вручную, или предоставить эту работу функции spatial.ConvexHull из библиотеки scipy
В результате, массив faces содержит описание граней:
faces (грани) - список граней. Каждая треугольная грань описана тремя вершинами, или точками. А точнее, позицией точек в массиве vertices.
Например, последняя грань содержит числа 3, 1, 0. Значит грань собрана из точек 0-го, 1-го и 3-го элементов массива vertices:
Принцип описания граней через позиции вершин
Mesh (сетка) - Набор вершин и граней, которые определяют форму многогранного объекта.
Грани пирамиды
Как видно из рисунка, одна грань пирамиды оказалась перевернута. В последующих примерах, при построении фракталов, метод ConvexHull применяться не будет, так как он располагает точки грани в произвольном порядке, что приводит к переворачиванию некоторых граней.
Для просмотра stl файлов разработано довольно много программ. Одна из них называется Blender, доступна для скачивания и не требует оплаты за использование
Снимок экрана. Blender: numpy_stl_example_02.stl
Метод spatial.ConvexHull предназначен для вычисления выпуклой оболочки и хорошо справляется с пирамидой и кубом. Но в объектах, имеющих впадины, часть точек будет потеряна и при сборке stl произойдет ошибка из-за несоответствия количества граней количеству точек.
Это хорошо видно на примере в двух измерениях: numpy_stl_example_03.ipynb
В hull.simplices содержится описание граней:
Отобразим вершины и грани на графике:
Центральные точки не связаны с гранями
Для таких случаев придется найти альтернативу ConvexHull, или описать грани вручную:
Добавлено две грани: одна для нижней точки, одна для верхней
Numpy-stl: Построение фрактала
Пришло время построить фрактал. В numpy-stl нет функции булева вычитания. Для построения фрактала Menger Sponge пойдем от обратного. В нашем распоряжении два метода:
Построение элементарного mesh куба. Назовем его voxel.
Объединение нескольких voxel в единый mesh.
Построим фрактал из кубиков, как из конструктора.
Описание логики построения фрактала
Договоимся что длина стороны грани фрактала - единица. Глубина фрактала это, грубо говоря, количество уникальных размеров отверстий. Длина вокселя зависит от глубины фрактала, она делится на 3 с каждым новым уровнем глубины.
Найдем сторону вокселя на глубинах 1 и 2. Упростим задачу, свернув фрактал с 3-х до 1-мерного случая:
Если фрактал второго уровня, длина стороны куба составит 1/(3**2) или 1/9. Составим набор кубов так, чтобы своим расположением они заполнили исходный куб. Получится воксельный куб. Вычислим области отверстий. Исключим воксели, которые входят в области отверстий. В завершение, объединим оставшиеся воксели в один объект и сохраним.
Снимок экрана. Blender: numpy_stl_example_04.stl
Numpy-stl: Рендеринг изображения
Для рендеринга, в функцию вывода plot_mesh, будем передавать mesh, загруженный из stl файла.
Один из кадров анимации Показать анимацию
PyMesh: Обзор библиотеки
К сожалению, библиотека PyMesh не установилась у меня ни через менеджер пакетов PIP (несмотря на упоминание этого способа в документации), ни через Anaconda. Есть два способа установки.
Следуя инструкции, собрать из исходников.
Используя Docker контейнер. Выберем этот вариант, как более интересный. Запуск контейнера будет инициирован с параметрами. При помощи параметров запуска смонтируем в контейнер папку скриптов. Передадим необходимые параметры в скрипт. После завершения работы скрипта, контейнер будет удален. Если Docker вы уже установили следуя инструкции в начале статьи, более ничего устанавливать не нужно.
Если Docker вам не подходит, скомпилируйте PyMesh, следуя инструкции в документации. Такой вариант тоже будет работать.
Начнем с простого куба. В папке pymesh_examples находится скрипт pymesh_example_01.py. В дальнейшем, контейнер будет брать файлы именно из этой папки.
Из корня проекта запустим контейнер:
Что тут происходит?
Запускается контейнер pymesh. При первом запуске будет загружен образ, это займёт некоторое время.
Папка pymesh_examples монтируется в контейнер
В контейнере запускается python скрипт /pymesh_examples/pymesh_example_01.py
Импортируется библиотека pymesh
функция generate_box_mesh генерирует куб на основании двух противоположных вершин в точках [0,0,0] и [1,1,1]
функция save_mesh сохраняет объект в stl файл.
После исполнения, в папке pymesh_examples появляется файл pymesh_example_01.stl
Снимок экрана. Blender: pymesh_example_01.stl
Квадратное отверстие сделаем при помощи булева вычитания. Строим параллелепипед и вычитаем его из основного куба.
Снимок экрана. Blender: pymesh_example_02.stl
Функция boolean проста. Первым параметром передаётся объект из которого вычитаем. Вторым - который вычитаем. Следом передаются операция и движок.
Здесь boolean применяется не только для вычитания. Всего доступно 4 операции:
Difference: A∖B (два последних примера)
Symmetric difference: A XOR B (изображение не представлено)
Чтобы лучше понять как перемещать и вращать объект, бывает удобно временно заменить операцию Difference на Union.
Сделаем второе отверстие, переместим и повернем его.
В этом скрипте добавлены функции перемещения и поворота. При перемещении создается новый mesh объект на основании измененных вершин и граней исходного объекта. Для поворота, сначала при помощи класса Quaternion, описывается поворот, а затем, аналогично случаю с перемещением, используется создание нового, повернутого объекта, на основании вершин и граней исходного объекта, а также описания поворота.
Кватернионы - система гиперкомплексных чисел, образующая векторное пространство размерностью четыре над полем вещественных чисел.
О кватернионах есть довольно подробная статья:
В результате исполнения скрипта, получается куб с двумя пересекающимися отверстиями:
Снимок экрана. Blender: pymesh_example_03.stl
Перечисленных инструментов достаточно для построения фрактала.
PyMesh: Построение фрактала
В этом скрипте добавлен входящий параметр для передачи глубины вычисления фрактала. Для каждой глубины создается параллелепипед, который затем дважды копируется, поворачивается и смещается. Получается всего 3 параллелепипеда, которые вычитаются из основного куба. По одному на каждую грань. Операция повторяется x и y раз, чтобы заполнить все строки и колонки грани. Проверка на вычитание из пустого пространства не выполняется.
На этот раз при запуске необходимо явно указать глубину фрактала:
Исполняться он будет 5-15 минут. После исполнения, в папке pymesh_examples появляется stl файл:
Снимок экрана. Blender: pymesh_example_04_3.stl Если запросить фрактал 4-го уровня
Построение займет около 4-х часов, а размер файла составит 73 мб:
Снимок экрана. Blender: pymesh_example_04_4.stl
Menger sponge 4-го уровня, напечатанный на 3D принтере
PyMesh: Рендеринг изображения
Mesh мы уже поворачивали, на этот раз повернём камеру.
Один из кадров анимации Показать анимацию
PyTorch3d: Обзор библиотеки
Подход очень похож на аналогичный в numpy-stl. Но так, как предполагается работа на GPU, будем разделять понятия хоста и устройства. Хост - наш компьютер. Устройство - GPU карта. Если карты нет, пользоваться библиотекой тоже можно, тогда в роли GPU будет выступать CPU. У хоста и устройства своя память. Чтобы передать объект с хоста на устройство и обратно, необходимо произвести небольшой ритуал.
В примере ниже, сразу на устройстве описываем вершины, копируем их с устройства на хост. На основании вершин вычисляем грани. Сохраняем объект. Файл в формате obj можно импортировать в blender:
Снимок экрана. Blender: pytorch3d_example_01.obj
Обратите внимание на команду verts.cpu().numpy()
Вершины копируются с устройства на хост. Если вы работаете с GPU, каждое копирование будет замедлять работу алгоритма. В планировании архитектуры программы, количество операций копирования между хостом и устройством, по возможности, лучше свести к минимуму. Например, изначально имея на хосте список вершин, можно вычислить грани, не прибегая к копированию вершин с устройства на хост, как это будет сделано в следующем примере.
Снимок экрана. Blender: pytorch3d_example_02.obj
PyTorch3d: Построение фрактала
Использование GPU даёт некоторый прирост производительности.
В этом скрипте объявляем вершины минимального для указанной глубины вокселя. По знакомому из прошлого примера алгоритму вычисляем координаты отверстий в двух измерениях. Заполняем первичный куб вокселями, которые не попадают в пределы отверстий.
Снимок экрана. Blender: pytorch3d_example_03.obj
Cкорость расчета увеличилась на порядок, что позволило примерно за 5 часов построить фрактал 5 уровня:
Снимок экрана. Blender Menger Sponge 5 lvl
Размер stl файла составил 1.9 ГБ. При построении фрактала 5-го уровня, программа останавливалась из-за переполнения памяти видеокарты. Пришлось сборку объекта выполнять пакетами. Создавалось по 10 слоев “двумерных” фракталов, затем они присоединялись к основному объекту, до тех пор, пока не построился полный фрактал.
PyTorch3d: Рендеринг изображения
Помимо plotly визуализаций, pytorch3d отдельно выделяет рендеринг и подход нему тут довольно основательный, с текстурами и шейдерами.
Один из кадров анимации Показать анимацию
SolidPython: Обзор библиотеки
SolidPython Самая богатая методами моделирования библиотека, среди перечисленных. 3D сцена описывается на python, в формате, очень похожем на openscad, генерируется openscad код, который пишется в scad файл и далее его можно редактировать в openscad или сразу сохранить в stl.
Для указания разрешения сферы, вместо привычного для openscad параметра $fn, используем слово segments.
Снимок экрана. Openscad: solidpython_example_01.scad
solidpython удобно отлаживать. С одной стороны экрана открыт scad файл, с другой jupyter notebook. При исполнении scad_render_to_file картинка в openscad автоматически обновляется.
Если нужен stl, openscad умеет рендерить файлы этого формата через команды консоли. Пример вызова из jupyter notebook:
Снимок экрана. Blender: solidpython_example_01.stl
Общий принцип такой: Любая функция возвращает объект. Если над объектом необходимо произвести некоторое действие, объект (или список объектов) передается в круглых скобках после вызова соответствующей функции.
Тут разрешение регулируется параметром slices.
Снимок экрана. Openscad: solidpython_example_02.scad
SolidPython: Построение фрактала
Снимок экрана. Openscad: solidpython_example_03.scad
SolidPython: Рендеринг изображения
Сформируем серию изображений последней сцены, поворачивая камеру в каждом изображении.
Один из кадров анимации Показать анимацию
Кроме того, solidpython предлагает формирование анимации средствами openscad. В документации об этом есть небольшой раздел с примером.
Напоследок рассмотрим код, использованный для построения сцены из заголовка статьи.
Результат
Сравнение библиотек
Сравнение производительности не совсем объективно, так как имеются значительные различия в алгоритмах. В Pymesh и SolidPython применялось вычитание, тогда как в Numpy-stl и Pytorch3d объединение mesh.
Существуют сотни различных бесплатных программных инструментов для 3D-моделирования для новичков, желающих создать свои собственные 3D-модели. Пользователи могут экспортировать свои модели и либо напечатать их на 3D-принтере, либо разместить в интернете, чтобы другие могли загрузить их бесплатно или за деньги.
Эти программы варьируются от простых в использовании для новичков до профессиональных, на изучение которых могут уйти годы. Поэтому мы создали свой список лучших бесплатных программ для 3D-моделирования, чтобы помочь вам сделать выбор.
Некоторые бесплатные онлайн-программы работают полностью в браузере, другие нужно загрузить. Но все они, по крайней мере в краткосрочной перспективе, бесплатны.
Список лучших бесплатных программ для 3D-моделирования в 2021 году:
TinkerCAD — лучшая программа для начинающих
3D Slash — простая программа для начинающих
FreeCAD — бесплатная программа с открытым исходным кодом
Blender — расширенная бесплатная программа
Критерии, которые использовались для оценки:
Простота использования. Бесплатными программами часто пользуются новички, поэтому это важно.
Наличие хорошо проработанного набора инструментов для создания профессиональных 3D-моделей.
Наличие новых инструментов, которые дают возможность использовать совершенно новый подход к созданию 3D-дизайнов.
1. TinkerCAD — лучшая бесплатная программа для начинающих
Страна разработчика - США. Доступна к работе в браузере.
Это одна из многих программ 3D CAD-гиганта Autodesk, TinkerCAD. Инструмент обманчиво выглядит примитивным, прост в использовании, но снова и снова попадает в топ лучших бесплатных программ.
TinkerCAD позволяет создавать детализированные 3D-модели, используя базовые формы, соединяя их вместе. Процесс обучения намного проще, чем в других программах. Она идеально подходит для новичков и детей, для обучения детей 3D-печати. Ее чаще других используют в школах и классах по всему миру. Можете начать работу за считанные минуты в браузере без загрузки. Более того, можно скачать приложение TinkerCAD и поиграть с моделями на смартфоне или планшете!
2. 3D Slash — простая бесплатная программа для начинающих
Основная версия бесплатная, премиум версия требует оплату $2 в месяц.
Идеально подходит для новичков. 3D Slash не похожа на обычную программу, больше похожа на дружественный, интерактивный 3D-мир, где вы можете создавать, что угодно. Команда разработчиков четко продумала, как сделать пользовательский интерфейс максимально естественным, понятным не дизайнерам, без сложного процесса обучения. Функционал интуитивно понятен и удобен.
В то же время вы не ограничены только базовыми формами. Можете создавать впечатляющие и более сложные объекты. Стандартная версия бесплатная, премиум - с небольшой ежемесячной оплатой. Также доступны школьные и профессиональные тарифные планы.
3. FreeCAD — бесплатная программа с открытым исходным кодом
FreeCAD была выпущена еще в 2002 году, и несмотря на то, что все еще находится в стадии бета-тестирования, ее разработка значительно продвинулась. Она предназначена для того, чтобы сделать процесс создания 3D-версий реальных объектов максимально эффективным и простым.
Очень полезная функция - возможность начать со статического 2D-эскиза, из которого затем можно построить конечную 3D-модель. FreeCAD хорошо работает в Windows и Mac, можно легко экспортировать модель в виде файлов STL, OBJ или даже DXF, например, для ЧПУ.
Хотя FreeCAD была разработана в основном для станков, ее можно использовать и для 3D-печати. Более того, FreeCAD - программа с открытым исходным кодом, поэтому можно работать с Python.
FreeCAD идеально подходит для пользователей с некоторым опытом проектирования, так как часть инструментов может оказаться сложной для начинающих. Но в целом это очень мощный бесплатный инструмент для 3D-моделирования.
4. SketchUp
Основная версия бесплатная, версия Pro стоит $299 в год. Страна разработчика – США.
Программа - ветеран индустрии программного обеспечения для 3D-моделирования, была создана в 2000 году компанией Lastsoftware. В 2006 году ее выкупил Google, чтобы внедрить этот универсальный и мощный инструмент в свои сервисы. С тех пор она была продана Trimble Inc., которая и предложила бесплатную версию. SketchUp - отличный выбор для начинающих дизайнеров. Ее, как и TinkerCAD, освоить легче, чем большинство других 3D-программ. Содержит практически все инструменты, которые могут понадобиться.
Несмотря на то, что SketchUp пользуются в основном архитекторы, она приобретает все большую популярность в 3D-печати. Инструменты удивительно хорошо подходят создателям 3D-CAD-файлов. Вы можете загрузить расширение SketchUp STL, чтобы создавать файлы в STL.
SketchUp имеет простой интерфейс, не перегруженный информацией. Вы можете легко разобраться в нем за несколько часов и в первый же день создать очень реалистичную 3D-модель.
5. Blender — расширенная бесплатная программа
Страна разработчика – Нидерланды.
Возможно, это самое популярное программное обеспечение для 3D-дизайна. Blender имеет огромное активное сообщество, которое делится своими STL-файлами и 3D-моделями, а также информацией в интернете. Быстрый поиск Google и YouTube выдаст тысячи ссылок, где пользователи демонстрируют свои 3D-проекты и обмениваются опытом работы в Blender 3D. Такая популярность обусловлена прежде всего тем, что программа на 100% бесплатная и с открытым исходным кодом. В ней можно создать практически все, что угодно. Выбор инструментов огромен.
Процесс обучения более сложный, чем у предыдущих программ. Однако благодаря своему набору инструментов Blender универсальная программа для 3D-моделирования. Она используется в различных областях, начиная от создания VFX для фильмов, видеоигр, дизайна 3D-моделей, заканчивая 3D-печатью. Кроме того, Blender поставляется с интегрированным игровым движком, а также детализированными инструментами для моделирования и возможностью редактирования видео. Это невероятное бесплатное программное обеспечение идеально подходит для разработчиков игр и опытных 3D-моделистов.
6. MeshMixer
Страна разработчика – США.
Meshmixer – уникальная программа, не вписывающаяся ни в одну конкретную категорию. Еще одна разработка Autodesk, Meshmixer выгодно отличается от конкурентов тем, что позволяет редактировать существующие модели с помощью различных инструментов, включая анимацию, выгибание/заполнение, восстановление. Meshmixer хорошо подходит для модификации конструкций и обеспечения качества. Полезна как для начинающих, так и для экспертов. Позволяет улучшать и готовить свои модели к 3D-печати.
Еще одно важное преимущество программы – возможность ее использования в топологической оптимизации. Благодаря простым инструментам, детали можно сделать легче и экономичнее. Это особенно полезно для последующей 3D-печати в таких отраслях, как аэрокосмическая и автомобильная промышленность, где очень важен вес модели.
В целом, Meshmixer - универсальный вариант для тех, кому нужно улучшить 3D-модель. Новички могут изменять свои модели, эксперты - оптимизировать промышленные проекты.
7. Fusion 360
Программа бесплатна для личного пользования в течение года, Pro версия стоит около $500 в год.
Страна разработчика – США.
Очередная разработка Autodesk для школ и академических институтов. Это, несомненно, инструмент для экспертов, однако достаточно удобный в использовании для образованного новичка. Fusion 360 - программа для совместного использования, позволяет обмениваться файлами STL через облако для совместного редактирования и оптимизации моделей.
Обладает мощными инструментами для работы практически над любым промышленным 3D-дизайном. Имеет встроенные функции для оценки нагрузки, с которой столкнутся компоненты 3D-модели. Это позволяет дизайнерам находить потенциально слабые места перед печатью. После создания можно легко экспортировать модель в STL-файл или любой другой формат. Программа недавно стала бесплатной для студентов, стартапов и многих других. Если у вас есть некоторый опыт, или вы хотите повысить свои навыки в 3D-дизайне, это 3D-программное обеспечение идеально подойдет.
8. Vectary
Бесплатная программа с премиальными функциями за $12 в месяц.
Vectary появилась в 2014 году и называет себя самой доступной платформой 3D- и AR-дизайна. Это бесплатная веб-программа для 3D-моделирования. Vectary предлагает шаблоны с предварительно отрисованными и освещенными экранами, перед которыми вы можете разместить свои 3D-модели для съемки продукта и других художественных целей. Простой рабочий интерфейс с необходимым набором инструментов делает работу с освещением и моделированием легкой. Вы можете легко экспортировать готовый дизайн или сцену в виде AR-модели.
Бесплатный пакет включает в себя доступ к Vectary Studio для создания и проектирования моделей, а также возможность экспортировать ваши творения в форматы OBJ или STL. Для других форматов вам потребуется обновление. Бесплатно можно создать до 25 проектов, а также получить доступ к библиотеке 3D-активов, материалов и иконок Vectary. Платное обновление дает доступ к инструментам предварительного просмотра AR, а также к функциям совместного использования проектов и командам для лучшей и быстрой обратной связи между несколькими людьми.
9. SelfCAD
Бесплатная программа для сферы образования. Для остальных стоит $4,99 в месяц.
Страна разработчика – США.
SelfCAD фокусируется на том, чтобы быть лучшей браузерной бесплатной программой для 3D-моделирования для студентов по всему миру, которую не надо скачивать. Она популярна в американских школах, обучающих студентов 3D-дизайну. Простая и удобная в использовании, требующая короткий период обучения, SelfCAD имеет все необходимые инструменты для создания моделей. Также в ней есть инструменты нарезки для подготовки файлов STL или G-кода к 3D-печати.
SelfCAD - простая программа для 3D-дизайна с очень понятным интерфейсом, подходит новичкам.
10. BlocksCAD
Программа предоставляется бесплатно. Есть платные учебные версии для школ.
Страна разработчика – США.
В свободной галерее имеется широкий выбор проектов, которые можно использовать в личных и классных работах, начиная от снеговиков, ювелирных колец, рыб и даже печально известного кафетерия. Отлично взаимодействует с OpenSCAD, предназначена для простой, веселой и удобной работы для детей. 3D-модели можно создавать с помощью красочных, простых в управлении блоков, и экспортировать либо в виде STL-файлов, либо в виде файлов для открытия и редактирования в OpenSCAD. Для новичков BlocksCAD предлагает обширные учебные пособия по основам 3D-моделирования и использованию 3D-программного обеспечения.
11. OpenSCAD
OpenSCAD – бесплатная загружаемая программа. Выглядит устрашающе, поскольку «окутывает» кодами и скриптами. Это мощный инструмент. Но имейте в виду, что он для тех, кто привык к кодированию. Программа была создана еще в 2010 году Мариусом Кинтелем и Клиффордом Вольфом. Регулярно выходят новые обновления и патчи. OpenSCAD любят 3D-дизайнеры, которые предпочитают скриптовый, а не художественный метод проектирования. Стоит также отметить, что 3D-деталь в OpenSCAD можно создать использую лишь мышь, но это не единственная фишка программы.
В целом, мы впечатлены OpenSCAD: она предлагает что-то новое и бесплатно. Однако необходимо, по крайней мере, промежуточное знание языков сценариев. В противном случае лучше использовать один из других вариантов из нашего списка.
12. Wings 3D
Wings 3D - полностью открытое и бесплатное программное обеспечение для 3D-моделирования, которое активно разрабатывается и совершенствуется с 2001 года. Программа не такая современная и удобная в использовании, как Vectary или TinkerCAD, но очень хорошо работает с персонажами, настольными моделями и другими проектами по созданию 3D моделей. Довольно легко работать с функциями по настройке моделей, например, лепкой, соединением, резкой, сгибанием - просто даже для начинающих.
Каждый пункт меню контекстный, поэтому, когда вы щелкаете правой кнопкой мыши, появляются различные опции в зависимости от того, что вам может понадобиться. Этот продвинутый инструмент экономит время и делает программу отличным инструментом для 3D-моделирования для начинающих и экспертов.
Подготовить эффектный рекламный ролик, сконструировать проект интерьера, создать анимацию для приложения или просто яркую презентацию — всё это позволяет делать 3D-графика. Чтобы создать качественную объемную визуализацию, понадобятся специальные программы. Ниже мы перечислили наиболее популярные программы для 3D-моделирования. Они подойдут как новичкам — например, для быстрой визуализации своего дизайна интерьера, так и продвинутым специалистам, которые хотят отрисовать видео с максимальной реалистичностью. Выбирать программу для изучения советуем по своему уровню:
С чего начать
Autodesk TinkerCAD
Назначение: обучение моделированию, создание простых моделей.
Стоимость: бесплатно.
Пожалуй, самая простая программа для 3D моделирования, самая настоящая песочница. TinkerCAD взаимодействует с Minecraft и Scratch, имеет специальные программы для обучения разным дисциплинам, так что если думаете, чем полезным можно увлечь своего ребёнка 一 выбор перед вами. Вишенкой на торте служит возможность экспортировать созданную модель для 3D-печати, так что на базовом уровне она будет полезна и взрослым.
DesignSpark Mechanical
Назначение: моделирование инженерных конструкций.
Стоимость: бесплатно.
Mechanical ориентирован в первую очередь на начинающих специалистов и просто любителей в части 3D моделирования. Возможности по сравнению с AutoCAD куда скромнее, зато бесплатно, и эффективно 一 без труда можно создать почти любую объёмную деталь для дальнейшего использования в более сложных композициях или отправки на 3D-печать. О сложных текстурах и динамическом представлении здесь речи не идёт, но техническим специалистам они особо и не нужны.
SketchUp
Назначение: быстрая визуализация архитектурных идей.
Стоимость: бесплатно для личного пользования и профессионально от 119 долларов в месяц.
SketchUp очень распространен среди простых пользователей в качестве программы 3D моделирования дизайна, быстрой визуализации моделей квартир, комнат и внутренних коммуникаций. Однако возможности программы куда шире, благо несколько лет продукт разрабатывался командой Google. На профессиональном уровне SketchUp позволяет решать сложные архитектурные задачи, будь то конструирование целых зданий и даже районов, не затрачивая на это много времени и сил.
FreeCAD
Назначение: моделирование деталей и конструкций.
Стоимость: бесплатно.
FreeCAD 一 классический представитель свободного ПО, с помощью которого любой пользователь может сделать первые шаги в мире 3D-моделирования, не углубляясь в тонкости визуализации. Будет очень полезна и тем, кто не понаслышке знаком с Python 一 продукт позволяет создавать и интегрировать собственные модули, написанные на этом языке. Так что если вы мечетесь в будущей специализацией между программированием и дизайном, FreeCAD станет идеальный помощником.
Продвинутый уровень
Autodesk AutoCAD
Назначение: моделирование инженерных конструкций.
Стоимость: от 10250 рублей в месяц.
Программа, изначально заточенная под создание двухмерных инженерных чертежей, сегодня имеет очень мощные возможности для 3D-моделирования. Во всяком случае, это касается всего за пределами конечной визуализации и наложения текстур. Будь то техническая деталь с множеством маленьких элементов или модель огромного здания 一 AutoCAD справится одинаково хорошо. Поэтому работникам технических специальностей освоить эту программу надо едва ли не в обязательном порядке. Также он будет полезен для работы с 3D-печатью или резкой.
Cinema 4D
Назначение: графическая визуализация сцен.
Стоимость: от 5350 рублей в месяц.
Несмотря на простой интерфейс Cinema4D имеет достаточно широкие возможности по скульптурированию, рендерингу, созданию текстур и эффектов в анимации. Плюс здесь есть целый ряд инструментов, призванных упростить и ускорить процесс создания сцен. При этом не стоит думать, что с программой справится любой пользователь 一 опыт хотя бы базового 3D моделирования крайне необходим, да и сцены сами себя не построят.
ZBrush
Назначение: скульптурирование моделей.
Стоимость: от 40 долларов в месяц.
Все, кто в реальном мире любит возиться с глиной и гипсом, от работы с ZBrush получат колоссальное удовольствие. Здесь точно также основная область творчества лежит в области скульптурирования. После получения желаемых очертаний лица или тела, программа поможет вам добавить нужные текстуры, блики и тени для достижения финального результата. Работать с ZBrush настолько комфортно, что можно его воспринимать не только, как профессиональный инструмент, но и полноценное развлечение. Посетив любое из многочисленных сообществ программы вы сами в этом убедитесь.
Blender
Назначение: скульптурирование моделей и анимация.
Стоимость: бесплатно.
Blender является уникальным симбиозом качества и доступности. Здесь есть инструменты для создания качественных 3D-моделей, наложения на них текстур, в том числе волос и тканей, дальнейшей анимации и постобработки видео. И всё это запаковано в менее 200 мегабайт пространства. При этом, как и любой крупный проект с открытым кодом, Blender имеет мощное комьюнити и постоянно обрастает всё новыми возможностями.
Для профессионалов
Autodesk 3ds Max
Назначение: создание качественных графических 3D-моделей.
Требуемый уровень подготовки: профессионал.
Стоимость: от 9790 рублей в месяц.
Пожалуй, одна из наиболее мощных программ для 3D моделирования, используемая повсеместно: в играх, киноиндустрии, архитектуре, интерьерном и ландшафтном дизайне, презентациях любых продуктов. Здесь на высочайшем уровне реализованы возможности обработки текстур, рендеринга, трассировки лучей, взаимодействия объектов, что позволяет реализовать задумки любой сложности. Строго рекомендуется для всех специалистов, кто отвечает за визуальное представление объектов, как в статике, так и динамике.
Autodesk Maya
Назначение: графическая визуализация сцен.
Требуемый уровень подготовки: профессионал.
Стоимость: от 9800 рублей в месяц.
Maya идеально подойдёт для всех, кому предстоит создавать отрисовать сюжеты с максимальной реалистичностью, то есть представителям кино, мультипликации и игр. Возможности для создания эффектов здесь ограничены только вашей фантазией. К примеру, используя только встроенные модули, вы сможете реализовать взаимодействие ветра, дождя, тканей, взрывов, волос и много другого. Одновременно и в одной сцене. Разумеется, для этого придётся потратить много времени на обучение Maya и грамотное планирование сцен, но это того стоит.
Заключение
Безусловно, это не полный список программ для 3D-моделирования, однако он содержит самые востребованные инструменты для дизайнеров и конструкторов. Поэтому неважно, хотите ли вы найти что-то для визуализации интерьера будущей квартиры или построить с нуля успешную карьеру 一 здесь вы найдёте эффективное решение.
Читайте также:
- Создание распространение или использование компьютерных программ либо иной компьютерной информации
- Как посчитать эффективную ставку по кредиту в эксель
- Corel photo paint как убрать фон
- Программа для андроид для проверки микрофона
- Какой континент завоевал браузер название которому дало данное животное