Наблюдая за стремительным развитием компьютерной техники, мы одновременно становимся свидетелями того, насколько быстро меняются системы моделирования – системы для создания графических образов. Они становятся все более интуитивными и понятными в работе, все более нарастает впечатление, будто мы работаем не с точками, кривыми и цветом, а с реальными объектами, которые так же ощутимы, как и окружающие нас предметы. Первым шагом вперед был переход от двумерных систем моделирования к трехмерным. Следующим кардинальным шагом является переход от традиционных систем моделирования, таких, как 3DStudioMax (http://www.3dmax.com) к системам моделирования по наброскам пользователя, а также системам трехмерной реконструкции. Использование систем моделирования по наброскам пользователя обусловлено тем, что они значительно ускоряют и упрощают процесс создания различных образов, что позволяет художнику, архитектору, дизайнеру или ученому сконцентрироваться на самой идее, которую он хочет воплотить, а не на тонкостях ее реализации. Что касается систем трехмерной реконструкции, то они позволяют быстро создавать физически точные модели объектов, в то время, как в системах типа 3DStudioMax это потребовало бы уйму времени и усилий.
В данной статье приведен обзор нескольких наиболее популярных систем моделирования и одной системы 3D-реконструкции. Рассмотрено, какого типа объекты можно моделировать в каждой из них, какие инструменты даются пользователю, описан алгоритм создания объекта по шагам. Также проведен анализ преимуществ и недостатков каждой системы, отмечены особенности, на которых следует заострить внимание, ибо они могут пригодиться для построения собственной системы моделирования.
Официальный сайт: http://www.curvy3d.com
Программа в основном рассчитана на построение гладких выпуклых объектов произвольной формы. Эти объекты также могут быть симметричными относительно вертикальной оси или плоскости.
Основными инструментами моделирования являются:
Самый простой объект, который можно построить – тело вращения с прямой осью симметрии и произвольной образующей, т.е. в сечении тела – круг и сечение всегда перпендикулярно оси. Для этого необходимо взять инструмент Create Lathe Tool, перейти в окно вида сбоку или спереди и нарисовать образующую (один из контуров) объекта (рис. 1).
Затем имеется возможность изменить одну из образующих в одном из видов: сбоку или спереди с помощью инструмента Add Curve Tool (рис. 2).
Объект можно сделать симметричным в каком-либо из видов, нажав на клавиатуре кнопку «М».
С помощью инструмента Paint Brush Tool можно нарисовать неровности (рельеф) непосредственно на объекте в 3D или в отдельном окне нарисовать карту неровностей (curvy map). Последнее является довольно занимательным свойством, так как это позволяет придавать достаточно простым объектам практически любые формы (в рамках типа объектов, упомянутого выше). Также это может использоваться для bump-mapping’а модели по информации, содержащейся в фотографии.
Программа позволяет легко и быстро создавать свободные формы, что делает ее полезной для художественного моделирования. Она не ориентирована на создание точных, параметрически задаваемых объектов.
Официальный сайт: http://www.sketchup.com
В отличие от вышерассмотренной программы – Curvy3D, базовые функции SketchUp в основном рассчитаны на построение объектов неживой природы, обладающих определенной симметрией и/или четкой геометрической формой (здания, техника и т.п.). Но в программе предусмотрены расширения – специальные инструменты для моделирования ландшафтов и органических форм.
Основные инструменты для создания и редактирования объектов:
В зависимости от типа объекта, который хочет получить пользователь, или его конкретных соображений по алгоритму создания объекта, можно выбрать тот или иной метод моделирования.
Начинать построение объекта можно с параллелепипеда. Это можно сделать методом непосредственной прорисовки каждого ребра инструментом Line Tool или, что более эффективно, создать одну грань инструментом Rectangle Tool, а затем «выдавить» ее инструментом Push/Pull Tool (отрегулировать высоту параллелепипеда). Далее можно выделять по отдельности ребра и грани объекта и поворачивать, перемещать, добавлять и удалять их.
Выдавливание можно производить для любой замкнутой области и по любому пути (Push/Pull Tool – только по прямой, Follow Me Tool – по произвольному пути (рис. 3)).
Над объектами можно производить булевы операции – объединение, пересечение и разность.
Программа также предоставляет пользователю набор расширений, в т.ч. Sandbox Tools (инструменты для создания и редактирования поверхностей, состоящих из треугольников), которые не входят в базовый набор инструментов. Можно либо сразу построить поверхность по набору кривых в пространстве (Sandbox From Contours Tool), либо построить плоскость (Sandbox From Scratch Tool) и затем редактировать ее, создавая выпуклости, вогнутости, углы или натягивая поверхность на другие объекты.
SketсhUp предоставляет пользователю достаточно большой набор дополнительных свойств и инструментов для большего удобства работы с программой:
Программа предоставляет пользователю достаточно обширные возможности для создания объектов, но не совсем оправдывает свое название. “Sketch” означает “набросок”, и присутствие этого слова в названии предполагает, что основной метод моделирования – наиболее автоматизированная генерация 3D-объекта по достаточно малому числу линий, проведенных пользователем. А в этой программе построение объектов по большей части сводится к применению различных инструментов и операций.
Но, если не смотреть на название, можно отметить простоту и удобство работы с программой. Есть все необходимые инструменты и функции, но интерфейс не перегружен и выглядит интуитивно понятным. Дополнительно к этому, хорошо организована система помощи.
Официальный сайт: http://immi.inesc.pt/~brar/blobmaker/index.html
По типу моделируемых объектов эта программа напоминает Curvy3D. В ней можно создавать гладкие выпуклые объекты.
Основные инструменты:
Создание объекта начинается с рисования произвольной линии инструментом Drawing Tool. Инструмент работает корректно, когда линия замкнутая, либо расстояние между начальной и конечной точками кривой достаточно небольшое. По ней автоматически генерируется 3D-форма по принципу «надувания» области, ограниченной контуром (рис. 4).
Затем можно изменять контуры объекта, пририсовывать к нему детали инструментом Oversketching Tool. Если инструментом Drawing Tool нарисовать другую линию так, чтобы она пересекалась с уже созданным объектом, то новый объект сольется со старым, но стыковка не будет плавной. Инструментом Merging Tool можно обеспечить плавную стыковку объектов, а также слить воедино объекты, находящиеся на расстоянии друг от друга. Объекты можно выделять, поворачивать, перемещать, копировать. Можно перейти в режим показа каркаса объектов.
Программа предоставляет пользователю удобные инструменты и красивый интерфейс. Вмешательство пользователя в процесс создания объекта сведено к минимуму. Программа идеально подходит для моделирования сказочных персонажей, игрушек и т.п.
Официальный сайт: http://www-ui.is.s.u-tokyo.ac.jp/~takeo/teddy/teddy.htm
Эта программа, в отличие от Curvy3D и Blob Maker, располагает меньшим количеством инструментов – всего двумя, но, пожалуй, даже бОльшими возможностями.
Инструменты:
Алгоритм работы с программой достаточно прост и весьма оригинален. Практически весь процесс создания объекта от начала и до конца производится одним инструментом – Init Tool – при помощи операций, интуитивно понятных пользователю.
Вначале строится исходный объект. Инструментом Init Tool рисуется произвольная замкнутая кривая (или с небольшим расстоянием между начальной и конечной точками) (рис. 5).
Затем на поверхности объекта можно что-нибудь нарисовать, если рисовать на рабочем поле программы в пределах контура уже созданного объекта. Нарисованные линии не должны быть замкнутыми. Линию можно стереть, нарисовав на ней зигзагообразную линию.
К существующему объекту можно пририсовать другой объект, изобразив на его поверхности замкнутую линию (область стыковки), а за пределами его поверхности – контур нового объекта.
От объекта можно отрезать часть, проведя поперек него линию.
Стыковку двух объектов можно сделать плавной, если обвести замкнутой линией то место, которое необходимо сгладить, и провести по нему зигзагообразную линию.
Можно непосредственно изменять контуры и ось объекта инструментом Bend Tool, если нарисовать исходную линию, а затем желаемую линию (рис. 6).
Из рассмотренных выше программ в данной программе принцип построения объектов наиболее приближен к рисованию карандашом на бумаге. Активно используется в основном только один инструмент. Но за счет этого, для того, чтобы программа поняла, что хочет пользователь, ему необходимо производить в 2-3 раза больше манипуляций этим инструментом для осуществления одной-единственной операции. А это бывает не всегда удобно. Поэтому следует искать компромисс между количеством инструментов в программе и количеством действий на каждую операцию.
Официальный сайт: http://www.vrmesh.com
VRMesh - наиболее мощная система моделирования из всех вышеперечисленных. Она позволяет строить любые объекты.
Инструменты делятся на 4 группы, каждая из которых делится на подгруппы:
Моделирование можно начинать либо с рисования стандартных примитивов, либо с создания объектов по профильным кривым и сечению или по одной кривой, либо с загрузки моделей из сторонних редакторов (3DStudioMax, Maya и т.д.). Далее можно производить множество операций над объектом с помощью технологии Digital Clay – набора кистей для коррекции формы объекта и рисования неровностей на его поверхности. С помощью обычных инструментов можно разрезать объекты, сглаживать края, симметрично отражать части объектов и т.д.
После создания множества объектов можно объединять их в группы, сливать, производить булевы операции.
Одна из самых полезных идей – представление объекта в виде дерева, в узлах которого группы подобъектов, из которых он состоит, а также поверхностные кривые. Из рассмотренных в данном статье программ VRMesh, как упоминалось выше, предоставляет самые широкие возможности, при том, что моделирование основано действительно на набросках пользователя, в отличие от, например, SketchUp (рис. 7).
Официальный сайт: http://imagemodeler.realviz.com
Теперь, после описания программ моделирования по наброскам пользователя, перейдем к рассмотрению системы 3D-реконструкции. На самом деле алгоритм работы с этой программой напоминает процесс моделирования. И действительно, в ней есть все необходимые для этого инструменты и примитивы. Но главное отличие от систем моделирования состоит в том, что построение объекта идет не «с нуля», а на основе его изображений. Это означает то, что, используя имеющуюся в изображениях объекта информацию, необходимо восстановить или, скорее, приблизить его 3D-форму. На последнем этапе работы с программой эти же изображения используются для текстурирования объекта.
Инструменты, предоставляемые пользователю, разделены на несколько категорий, каждая из которых содержит инструменты, необходимые на определенном этапе построения объекта:
Работа с программой начинается с загрузки изображений объекта. Их должно быть как минимум два, чтобы впоследствии их можно было скалибровать.
Далее надо отметить точечные особенности - соответствующие друг другу точки на изображениях. Это могут быть углы предметов, края рисунка и т.п. Таких точек должно быть минимум 7 на каждом изображении. Если точечные особенности хорошо распределены по сцене и отмечены достаточно точно, процесс калибровки запускается автоматически. (Эту опцию можно отключить и запускать процесс вручную). Затем, если необходимо, можно повысить точность калибровки. Полученные точки в трехмерном пространстве можно увидеть в любом из окон рабочей области.
Теперь можно задать систему координат, связанную со сценой, измерить углы и расстояния между объектами или их частями.
Основной этап работы с программой – моделирование. Можно создать один из 6 примитивов – плоскость, куб, цилиндр, сферу или диск – в зависимости от того, какой объект необходимо реконструировать. Исходный примитив привязывается к маркерам на изображении объекта (рис. 8).
Также можно создать отдельную грань или сетку из облака точек. С объектами можно выполнять различные операции – перемещать, вращать, масштабировать, соединять, разбивать. Можно работать не только с объектами, но и их гранями, ребрами, вершинами.
Имеется удобная система навигации по сцене.
После того, как создан хотя бы один объект, его можно текстурировать. Для этого его необходимо выделить и указать, какие изображения будут использоваться для извлечения его текстуры. Использовать лучше всего только те изображения, где текстура выглядит наиболее четко и не загорожена другими объектами. Текстурировать можно и отдельные грани. Можно указать, между какими гранями плавный переход – тогда текстуры «сольются» на стыке, а между какими гранями угол – тогда переход будет резким.
Трехмерные объекты, а также текстуры можно импортировать из сторонних редакторов.
После создания и текстурирования объекта можно его экспортировать в другой редактор. Получившуюся сцену можно отрендерить и получить либо статическое изображение (.jpeg), либо QTVR-movie (.mov).
Помимо вышеупомянутых инструментов программа предоставляет пользователю обширные дополнительные возможности на каждом из этих 4 этапов работы.
Для повышения точности калибровки камер кроме выделения соответствующих друг другу точек на разных изображениях и указания прямых углов можно отметить точки, принадлежащие одной плоскости – Oxy, Oxz или Oyz. Также, если заранее известны какие-либо метрические данные о сцене – расстояния, длины, углы - то можно задать трехмерные координаты некоторых точек перед процессом калибровки. После процесса калибровки можно легко оценить ее точность.
Инструменты Define Reference Distance (задание известных расстояний) и Add Distance Ruler (измерение расстояний) входят в базовый набор инструментов программы, но, хотелось бы рассмотреть их подробнее. Вначале необходимо с помощью инструмента Define Reference Distance отметить какое-нибудь известное расстояние в сцене и написать, чему оно равно в метрах. После этого можно будет инструментом Add Distance Ruler измерять любые расстояния в сцене. Это может оказаться чрезвычайно полезным на практике, т.к. можно проводить по фотографиям такие измерения, которые были бы весьма трудоемкими в реальности. Например, можно измерять высоту зданий, далекие расстояния на ландшафте, расстояния до труднодоступных предметов и областей.
Если после текстурирования сохранить проект, то текстуры запишутся в отдельные файлы и их можно редактировать в графических редакторах. Эта возможность позволяет подкорректировать недостатки неточной калибровки камер, а также добавить новые детали к текстуре объекта.
Несмотря на обширные возможности программы, алгоритм работы с ней достаточно прост и интуитивен.
В интерфейсе используются такие интересные решения, как Magnifier Window – автоматическое увеличение области изображения, на которой выделяется точечная особенность. Таким образом, пользователю, чтобы отметить соответствующие друг другу точки, не приходится предварительно использовать Zoom и перемещать картинку в нужное положение. Это делает процесс быстрым и удобным (рис. 9).
Очень удобно то, что процесс калибровки запускается автоматически, когда отмечено нужное число точек. Соответственно, пользователю не приходится после проставления каждого маркера проверять, достаточно ли этого для калибровки.
После калибровки в списке маркеров, отображаемом в отдельном окне, хорошо отмеченные маркеры выделены зеленым цветом – значит, ошибка репроекции достаточно невелика, не очень точно отмеченные – желтым, а плохо отмеченные – красным цветом. Также есть возможность узнать ошибку репроекции в пикселях отдельно для каждого маркера. Если точность калибровки не устраивает пользователя – есть красные или желтые маркеры, – ее всегда можно повысить, меняя положения маркеров, добавляя новые маркеры, задавая плоскости и углы и т.д. Коррекция радиальной дисторсии – искажений, привносимых в снимок оптическими свойствами камеры, - производится программой автоматически.
Разбиение инструментов по секциям дает хорошее представление о последовательности моделирования, о стадиях процесса. Каждый инструмент сопровождается подсказкой, которая появляется динамически внизу окна.
Что касается собственно процесса моделирования/реконструкции, то очень полезной оказывается возможность ставить дополнительные маркеры не только на тех точках, которые заданы явно – углы предметов, элементы текстуры, - но и на тех, которые явно не заданы на изображении – например, произвольная точка посередине грани или ребра. Это делает возможным реконструкцию таких объектов, как плохо текстурированные тела вращения.
Вообще говоря, программа предназначена для реконструкции широкого класса объектов. Используя последовательно ее алгоритмы и инструменты можно реконструировать практически что угодно. Основная идея реконструкции объектов состоит в том, что под них подгоняются трехмерные простые или составные, видоизмененные объекты. Но это бывает не всегда самый удобный способ. Например, для реконструкции цилиндра приходится выделять как минимум 3 точки на его основании, помещать на них примитив-цилиндр, а затем регулировать его высоту. А на самом деле, пользователь мог бы просто выделить две его образующие на каждом из хотя бы двух изображений и этой информации было бы достаточно для реконструкции цилиндра. Что касается реконструкции более сложных тел вращения, а также, например, обобщенных цилиндров с постоянным радиусом сечения, с REALVIZ Image Modeler это неоправданно трудоемкий процесс. Аналогично, в случае с обобщенными коробками – параллелепипедами, у которых грани – произвольные линии – удобнее было бы воспользоваться реконструкцией по наброскам, а не подгонкой примитивов.
Вывод: система, которая претендует на то, что может реконструировать/смоделировать практически все, вызывает большой интерес с точки зрения практики, но еще больший интерес она могла бы представлять, если бы она была дополнена методами реконструкции, более удобными для конкретных классов объектов.
Комментарии
Привязка точки к сетке построения каркасов в 3D
VRMESH видимо лучшая про. для построения сетей.
Спасибо за обзор.
Жаль, что дорогая.
В AUTOCAD надо самому прграммировать эту функцию.
Может быть есть доступные про. для этого.
Отправить комментарий