Cделай сам 3D-сканер

Олег Татарников

Профессиональные технологии 3D-сканирования

Установка для 3D-сканирования

Подготовка каркаса для лица

NURBS-кривые

Дублирование и отражение кривых

Текстурирование лица

Альтернативы

 

Технология моделирования

 

Профессиональный лазерный 3D-сканер будет не по карману не только вам, но и крупной голливудской студии. Конечно, существуют менее дорогие решения, но и их стоимость выражается четырех-пятизначными цифрами (в американских долларах и европейских евро). Но, обладая изобретательностью, вы можете перевести чье-нибудь лицо в третье измерение всего лишь с помощью обычного диапроектора, цифровой камеры и базового трехмерного программного обеспечения...

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

3D-художнику даже довольно простые на первый взгляд объекты могут доставить немало хлопот, если речь зайдет об объеме, цвете и фактуре поверхности. Поэтому перед тем, как приступать к 3D-моделированию, необходимо приобрести определенные навыки в этой области, и пройдет немало времени, прежде чем новичок сможет приступить к конкретной творческой работе.

Но даже если вы знакомы с трехмерным моделированием не понаслышке, работа с антропоморфными объектами, а тем более с человеческими лицами, представляется делом довольно сложным и весьма трудоемким. 3D-художники порой тратят так много времени на изготовление моделей трехмерных людей, что на другую важную работу у них его просто не остается. А ведь не менее сложной и трудоемкой является анимация таких объектов, и любые огрехи в моделировании в этой области начинают проявляться особенно ярко и могут свести на нет работу в целом.

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

Методы, используемые при построении 3D-моделей, могут варьироваться от проекта к проекту. Смоделировать трактор или воссоздать динозавра — это, естественно, вовсе не одно и то же. Если речь идет о последующей сложной анимации, то, бесспорно, лучше делать модель «вручную», в каком-либо 3D-пакете. Первоочередная задача в этом случае — построить корректный рабочий скелет и создать аккуратную и не слишком сложную по структуре поверхность. В процессе работы широко используются скульптуры, фотографические материалы, черновые чертежи и рисунки. Казалось бы, почему не автоматизировать процесс моделирования? Однако различные методы автоматической оцифровки объектов (3D-сканирование) широкого распространения не получили. В чем причина?

Профессиональные технологии 3D-сканирования

Рассмотрим для начала наиболее популярную технологию 3D-сканирования «для бедных» — так называемую сколку. На 3D-дигитайзерах, работающих по этой технологии, специализируется компания Immersion Corporation. Ее устройства MicroScribe 3D вполне доступны (их стоимость от 1000 до 3000 долл., в зависимости от величины объекта, который можно обрабатывать) и просты в использовании, однако они не могут оцифровать текстуру объекта (рисование которой — один из самых сложных этапов моделирования), поэтому не настолько радикально оптимизируют процесс изготовления моделей, чтобы отказаться от ручной работы, и используются, как правило, только при недостаточной квалификации 3D-дизайнера.

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

Но одно из основных преимуществ таких систем — высокая степень контроля за процессом оцифровки со стороны оператора. Причем само это устройство может быть довольно сложным: в нем, например, применяются система противовесов и автоматическая компенсация изменения температуры и соответствующих расширений и сжатий металла. При моделировании на исходный объект карандашом или маркером наносятся контрольные линии; затем оператор решает, где к сетке нужно добавить деталей, а где оставить возможность деталировки 3D-дизайнерам — все это зависит от назначения модели. Цель таких предварительных работ — убедиться, что окончательная сетка будет достаточно точной и максимально рациональной. Когда же рисование на модели невозможно, приходится лепить вместо нее макет.

Причем после любой оцифровки все равно неизбежно потребуется довольно трудоемкая обработка в 3D-пакете, но при правильном планировании создаваемой сетки такую работу можно значительно оптимизировать еще на этапе сколки. К сожалению, этого преимущества лишены более сложные, оптические системы оцифровки 3D-объектов (поэтому после их работы объект, как правило, приходится заново моделировать вручную). Однако оптические системы обладают другим преимуществом — они автоматически «снимают» трехмерную текстуру объекта, которую затем можно будет использовать с минимальной доработкой. В этом смысле лазерная, или оптическая, технология сканирования 3D-объектов является более передовой. Из трех основных направлений, по которым развивалась эта технология (сканирование по точкам, по зонам и по полосам), наилучшие результаты показала технология сканирования по полосам (как правило, со световой разметкой).

Суть данной технологии заключается в том, что на поверхность модели проецируется световая полоса или сетка и ее положение записывается внешними видеокамерами. Постепенно, по мере сканирования модели от одного края до другого, выстраивается точный образ ее поверхности и записывается трехмерная текстура.

Наибольшего успеха в производстве 3D-сканеров, работающих по оптической технологии, добилась компания Cyberware. За ее первым сканером с прагматическим названием Head Scanner (сканирующим только небольшие объекты, такие как человеческая голова) в начале 90-х годов последовал Whole Body Scanner (сканер всего тела) и др. Технология оказалась довольно популярной, и в течение нескольких лет появилось целое семейство производителей подобных устройств. Причем работают эти устройства довольно быстро и точно (например, сканирование головы занимает всего несколько секунд, и за это время генерируются 3D-объекты с полумиллионом вершин), но они до сих пор остаются довольно дорогими (их цена достигает полумиллиона долларов) и имеют целый ряд серьезных недостатков, которые приводят к тому, что полученные с их помощью модели совершенно непригодны для анимации.

Из серьезных недостатков можно выделить следующие:

  • полученные модели очень сложны и тяжеловесны;
  • возникают проблемы с отражающими поверхностями (что не удивительно, если учесть, что используется световая разметка);
  • чем сложнее рельеф поверхности, тем больше вероятность перекрывающихся плоскостей и близких точек, с которыми потом отказываются работать 3D-пакеты;
  • поскольку процесс полностью автоматизирован, 3D-дизайнер не может оказывать на него влияние и приступает к работе только тогда, когда закончится сканирование.

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

Сейчас на рынке появляются и более дешевые сканеры, основанные на цифровой фотосъемке (10-20 тыс. долл.), но и их применение тормозится по вышеописанным причинам.

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

Итак, рассмотрим, как получить модель человеческого лица на дешевом оптическом оборудовании...

В начало В начало

Установка для 3D-сканирования

Пусть у вас есть довольно сложный объект, с которого вы хотите получить трехмерный образ в компьютере. Вам понадобится также слайд- или оверхед-проектор (впрочем, можно воспользоваться популярным во времена наших бабушек дешевым диапроектором, если, конечно, вы сумеете его где-нибудь отыскать). Кроме того, необходим фотоаппарат (желательно цифровой, чтобы оперативно переносить полученное изображение в компьютер). Для слайд- или диапроектора понадобится изготовить специальную «маску», которая будет проецировать на фотографируемый объект вертикальную решетку. Можно, например, взять засвеченную пленку и процарапать по ней иголкой тонкие параллельные линии по всей длине кадра. Для оверхед-проектора можно изготовить пленку с нанесенными на нее черной тушью вертикальными линиями (если проектор отображает непрозрачные листы, то можно начертить такие линии на обычной бумаге). Помещаем сканируемый объект непосредственно перед проектором, а фотоаппарат закрепляем на штативе таким образом, чтобы он снимал объект под углом 45°.

После этого делаем по два снимка: первый с проецированием вертикальной решетки на лицо модели, а второй — просто фотографию для получения соответствующей текстуры. Проецируемые линии должны располагаться максимально близко друг к другу (от 0,5 до 1 см) и должны быть хорошо видны на фотографии, для того чтобы вы могли в дальнейшем уверенно воспользоваться ими при моделировании.

Итак, снимаем: один раз с проектором, а второй раз — без него (можно просто закрывать его листом бумаги, а камерой управлять дистанционно). Если у вас цифровая камера, то лучше сразу проверить качество полученного изображения и, возможно, повторить серию, отодвинув или придвинув проектор поближе, чтобы получить уверенно читаемые линии по лицу на фотографии. Естественно, пленочный фотоаппарат значительно менее удобен — придется печатать фотографии и использовать сканер для ввода изображения в компьютер.

В начало В начало

Подготовка каркаса для лица

После того как достаточно четкие фотографии будут получены, мы должны перейти в какой-нибудь пакет трехмерного моделирования. Лучше, если там будет достаточно развитой инструментарий сплайнового или так называемого NURBS-моделирования. NURBS — это сокращение от Non-Uniform Rational B-Spline (то есть неоднородный рациональный B-сплайн). Выбор современных программ достаточно велик: от профессиональных Alias|Wavefront Maya и 3DS MAX до дешевых Hash Animation Master или Caligari True Space. Идеальный выбор для использования технологии NURBS-моделирования — это Rhino 3D (или Rhinoceros).

Rhinoceros — это профессиональная система концептуального 3D-проектирования и моделирования для операционной среды Windows 95/NT. Основой моделирования в этом пакете является NURBS-технология моделирования. Rhino 3D позволяет создавать, редактировать, анализировать кривые, поверхности и твердые тела и работать с NURBS-объектами. Система эффективно работает с объектами любой сложности и размеров. Это может быть как техническое моделирование — от клапана до лайнера, так и моделирование биологических объектов — от мышонка до человека. Функциональные возможности системы ставят ее на одну ступень с системами верхнего уровня, при этом Rhino 3D выгодно отличается по цене от других профессиональных пакетов для трехмерного моделирования. И начинающие пользователи, и опытные профессионалы во всем мире отдают предпочтение легкому в освоении и эффективному в использовании пакету Rhino 3D.

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

Такой подход особенно эффективен в том случае, когда вам необходимо с максимальной достоверностью передать черты лица и использовать мимику при анимации. Поскольку обычно направление кривых совпадает с направлением мускулов, такое построение значительно облегчает анимацию мимики. Это относится в первую очередь к областям в районе рта, которые являются наиболее подвижными. Помимо наших «автоматических» полосок на лице нам придется построить массу дополнительных кривых. Но прежде чем их строить, рекомендуется изучить различные мускулы лица и их назначение. Читая об этих мускулах, вы можете пользоваться зеркалом, чтобы посмотреть, как они действуют при разных выражениях лица, и соответственно обнаружить области, на которых вам потребуется максимальная детализация.

Откроем свое полосатое изображение, поместим его в качестве фона в соответствующее окно 3D-пакета (лучше если вы сами подготовите это окно, развернув прямую проекцию на 45° и включив перспективу) и начнем моделирование одной половинки лица. Для создания основных формообразующих кривых мы будем пользоваться спроецированными полосками, обводя их максимально эффективно (с созданием наименьшего количества контрольных точек). Для таких процедур всегда используется вид сбоку. Завершив обведение полосок кривыми, можно удалить лишние точки и, напротив, добавить точек в районе рта, носа или глаз. Но, вообще говоря, построенная нами кривая не должна содержать более двух-трех десятков точек и большинство из них должно быть сконцентрировано в районе губ, носа и рта. Однако не слишком удобно вставлять дополнительные точки впоследствии, когда дело дойдет до более мелких деталей. И помните, что большинство пакетов трехмерного моделирования, поддерживающих инструменты так называемого лофтинга или скининга (то есть тех, которые используются для натягивания поверхностей на формообразующие кривые) предпочитают, чтобы у всех кривых было одинаковое количество точек. Впрочем, некоторые пакеты позволяют перестроить кривые так, чтобы у них было одинаковое количество точек. Значит, вам самим не придется об этом беспокоиться. Общее количество кривых для одной половины лица тоже не должно быть слишком большим (как правило, ограничиваются магическим числом 13). Помните, что если вам удастся свести к минимуму число точек и кривых, то в дальнейшем анимация лица существенно упростится. Кроме того, поверхности, состоящие из меньшего количества точек и кривых, получаются более гладкими.

Обычно бывает полезно создавать лофт непосредственно по мере рисования кривых (то есть постепенно вытягивать поверхность от одной кривой к другой). Тогда вы сразу будете получать общее представление о конечном результате и у вас появится надежда впоследствии избежать неприятных сюрпризов. Поэтому лучше начинать обводить кривые последовательно, от носа к уху. Если вы не ставите целью сделать только маску, то должны продолжать рисовать кривые от лицевой стороны объекта (по сфотографированным полоскам) через затылок до основания шеи (можно просто закруглить затылок). Тогда у вас будет моделироваться не только лицо, но и вся голова целиком.

Если у вашего пакета есть опция history, как у Maya или Rhinoceros, вы можете перемещать точки следующей кривой на каркасе до тех пор, пока не останетесь довольны видом поверхности.

После лофтинга должны быть видны ребра каркаса. Они должны быть гладкими и не иметь резких изломов. Так вы заметите области, которые в дальнейшем могут оказаться проблемными. Обычно это происходит там, где кривые резко поворачивают.

Процесс создания кривых и исправления поверхностей наиболее утомителен при моделировании головы, но дополнительное время, затраченное на этом этапе, избавит вас от чрезмерных усилий после финального скининга. Почаще пользуйтесь увеличением (Zoom), чтобы проконтролировать наиболее ответственные места.

В начало В начало

NURBS-кривые

Если вы не обладаете достаточным опытом 3D-моделирования и не можете работать сразу в трехмерном пространстве, то рекомендуем воспользоваться некоторыми вспомогательными приемами. Сначала просто обведите полоски на фотографии NURBS-кривыми (в результате, работая на плоской фотографии, вы получите сплайновые кривые на плоскости). Затем дублируйте ваше рабочее окно (то есть вид вашего окна должен совпадать с соседним), поверните вид второго окна на 450 в обратную сторону (то есть новое окно — это фронтальная проекция будущего объекта) и выключите там перспективу. В таком ракурсе, следуя логике процесса проецирования, ваши кривые должны превратиться в вертикальные линии. Вот вы и должны добиться от них такого расположения, не меняя соответствия кривых линиям в первоначальном окне.

Редактирование кривых в новом окне можно произвести простой функцией типа Snap to Grid (или подобной ей в вашем пакете). Кроме того, таким образом можно выровнять кривые на определенном расстоянии друг от друга (поскольку они должны были проецироваться равномерно). После такого редактирования вы можете добиться трехмерного представления, даже не обладая достаточным опытом работы в пространстве.

Используйте и такой метод, хотя небольших искажений, особенно в области носа, губ и подбородка, при этом вам никак не избежать. Вам, вероятно, все равно придется редактировать некоторые кривые, уменьшая или увеличивая плотность контрольных точек, и осуществлять корректуру в трехмерном пространстве.

В начало В начало

Дублирование и отражение кривых

Теперь, когда вас устраивает расположение кривых и точек на них, выберите все, за исключением центральной кривой, и удвойте. Пока скопированные кривые остаются выбранными, отразите их так, чтобы они перешли на другую сторону лица. Начиная со средней кривой, опять выбирайте их, обходя против или по часовой стрелке. После этого создайте финальный лофт и закройте объект (например, функцией close или подобной). В пакете Rhino для генерации поверхности из кривых можно воспользоваться функцией Surface from Curve Network. Когда возникнет диалог Tolerance и Edge Matching, нажмите OK. В Rhino, кстати, можно просто объединить два набора кривых (для правой и левой стороны лица).

Итак, трехмерная модель лица (или головы в целом) готова и теперь можно приступать к ее тонкому редактированию, изготовлению глаз, рта, языка, ушей и прочих частей человеческого тела. Позже вы можете возвращаться к NURBS-кривым, чтобы совершенствовать поверхность вручную. Лишние изопараметрические кривые (isoparms — изопармы) можно удалять и вручную, используя функцию Remove Knot в Rhino или подобную ей. Если вы работаете с пакетом Maya, то для сглаживания каркаса можно применить Artisan. В этот момент вы можете разобраться со всеми проблемными точками, манипулируя исходными кривыми или работая непосредственно с поверхностью, а не с контрольными точками. Поскольку теперь вы работаете с обеими половинками лица, вам придется выбирать соответствующие точки с обеих сторон. Чаще всего вам будет достаточно инструмента move, однако иногда, когда две точки потребуется сблизить или разнести подальше, может понадобиться инструмент scale.

В начало В начало

Текстурирование лица

Заключительная стадия предполагает тонирование модели при помощи второй, нормальной фотографии (без вертикальных полосок), используя ее как карту текстуры и отображая ее на обе половины лица для получения единого целого. Это ваша будущая карта текстуры. Rhino (как и другие достаточно профессиональные пакеты) может накладывать на модель плоские текстуры (посредством UV-координат), но 3DS MAX или Maya делает это лучше. Применяя специальный инструментарий (UV-модификатор плоской карты), можно точно подобрать место, где фотография должна ложиться на модель. Однако точно подбирать, масштабировать и монтировать UV-карту на вашей 3D-модели вам все же придется вручную. Так же как и при построении модели, вы должны будете зеркально отобразить текстуру, полученную из фотографии, на другую половинку лица. Впрочем, текстура лица получится симметричная, а поскольку человеческие лица никогда не обладают точной симметрией, вам придется отредактировать вторую половину лица в каком-нибудь графическом редакторе, чтобы придать ему уникальность, живость и подлинность.

В начало В начало

Альтернативы

Метод, который мы обсудили, может привести к достойным результатам только в том случае, если вы обладаете достаточным опытом в области 3D-моделирования. Однако в любом случае он сохранит вам время и деньги, которые вы могли бы бессмысленно потратить на какой-нибудь дорогостоящий прибор для 3D-сканирования.

Однако давайте обсудим возможные альтернативы. Достаточно сложная 3D-модель стоит на Западе от 500 до 1000 долл., а довольно эффективные аппараты для 3D-сканирования — и того больше. Даже такие миниатюрные системы, как Roland LPX-250 или весьма примитивный фотосканер Minolta VI-700 (который практически ничем не отличается от нашей системы), стоят по нескольку тысяч долларов и при этом вовсе не гарантируют достойного результата. А цены профессиональных устройств начинаются уже с сотен тысяч долларов!

Так что единственной альтернативой нашему методу является моделирование вручную, без использования каких бы то ни было аппаратных средств. Однако обычные фотографии вам в этом случае все равно понадобятся, так почему бы не использовать еще и бабушкин диапроектор?

КомпьютерПресс 11'2002

Наш канал на Youtube

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует