Главная » Статьи » Мои статьи

Отрисовка карты глубины.

 

 

 
1. Что такое Карта Глубины и для чего она нужна
Карта глубины (КГ), это один из способов представления объемных (3D) изображений в виде плоского изображения, каждому пикселю которого присваивается дополнительный параметр - «глубина», показывающий, на каком расстоянии от плоскости изображения расположен данный пиксель. Значения глубины записываются в графический файл такого же размера, что и само изображение так, что при наложении двух этих файлов, под каждым пикселем изображения оказывается пиксель глубины. Обычно, значение глубины имеет 256 уровней, от 0 до 255, причем 0 соответствует максимальной глубине «за экраном», 255 - максимальный «вылет перед экраном», а среднее значение 127 соответствует плоскости экрана или, как ее еще называют, плоскости стерео окна. КГ содержит более полную информацию об объеме сцены, чем, например, стереопара, поэтому данный способ позволяет не только получать из одного изображения любое нужное количество перспективных видов (ракурсов), но и корректировать в широких пределах глубину 3Б сцены и отдельных объектов, а также их взаимное расположение. КГ незаменимы при конвертации исходных плоских изображений в объемные (2Б-3Б преобразование), например, для  последующего использования с линзовыми растрами. Правда, автоматическое преобразование такого рода возможно только в очень ограниченном ряде случаев, поэтому важным этапом является рисование (или построение, как кому больше нравится) КГ.


2. Технология построения Карт Глубины
Процесс построения КГ состоит из нескольких этапов, следование которым значительно упрощает и ускоряет всю работу. Рассмотрим его на конкретном примере.

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

 

 

 


Исходя из этого, мы определяем положение человека чуть дальше стереоокна, глубина которого, как мы уже говорили, 127 (или 50% по шкале серого), скажем, 110-115. Вот теперь можно на конец-то переходить к следующему этапу.
 
Второй этап. Рисуем базовую плоскость.
Создаем новый слой поверх изображения, называемого КГ, и все дальнейшие операции выполняем в этом слое. Слой изображения полезно заблокировать от редактирования. Базовая плоскость призвана помочь нам установить правильные значения глубины для всех объектов сцены. Чаще всего, в качестве базовой плоскости выступает поверхность земли (или пола, если на снимке интерьер), но бывают случаи, когда в качестве базовой может быть выбрана другая плоскость, например, стена. Главное, чтобы на этапе планировки можно было определиться с ее пределами по глубине, и чтобы с ней соприкасались другие объекты. В данном случае, это безусловно плоскость земли. Нарисовать ее очень просто: поскольку плоскость ровная и уходит от экрана к горизонту, значит самый подходящий инструмент - заливка градиентом. Этот инструмент найдется в любом графическом редакторе, который есть у вас под рукой. Чтобы нарисовать нужный градиент, зададим цвет фона 0 (черный), а основной цвет примерно 90 (напоминаю, все приводимые цифры – градации шкалы серого в диапазоне от 0 до255). Откуда взялось «примерно 90»? Вспомним, что человек, когда до него дойдет дело, будет иметь глубину 110, стало быть, земля в том месте, на котором он стоит, должна иметь то же значение глубины. Внимание! Это очень важный принцип, который позволяет выстроить всю карту глубины быстро и без ошибок: если объекты соприкасаются между собой в некоторой точке, их глубина в этой точке одинакова! Итак, в той воображаемой точке, находящейся за нижней кромкой изображения, глубина плоскости 110, а в той точке, где она показывается из-за кромки, ее глубина будет примерно 90. Теперь делаем заливку градиентом, задав начальную точку на нижней кромке изображения, а конечную – на линии горизонта. Кстати, некоторые редакторы позволяют задать начальную точку градиента за границей изображения, тогда начальный уровень можно задать 110 и нарисовать градиент от ступней ног, которых невидно. Вот результат второго этапа.

 

 


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

Третий этап. Задание глубины объектов.
Заучим несколько правил.
1. Начинаем отрисовку с самых дальних объектов
2. Рисуем объекты так, как будто объектов расположенных ближе не существует.
3. Задаем глубину объекта с помощью инструмента «пипетка», беря цвет из точки соприкосновения объекта с базовой плоскостью или ранее отрисованным объектом.
4. Отрисовываем объект целиком одним цветом, в результате чего получаем плоский («картонный») объект, расположенный на заданной глубине. Это эквивалентно заданию базовой плоскости, от которой будет производится дальнейшая детализация объекта на следующем этапе, но на уровне объекта. Существуют различные приемы отрисовки объектов, но пожалуй самый простой из них состоит из трех шагов: 1) выключаем слой КГ и выделяем объект; 2) включаем КГ и берем пробу пипеткой в точке касания с базовой плоскостью (автомобиль, например, касается земли колесами); 3) выполняем заливку объекта (Редактирование -> Выполнить заливку)

 

 

 

 
 
Повторяем эти действия для всех достаточно крупных объектов. На мелкие или слишком тонкие объекты (такие, как забор на заднем плане) обращать внимание не нужно. Выделение визуально должно быть чуть шире объектов, чтобы захватить зону размытия контура, иначе в конвертированном изображении появятся неприятные «тянучки». Последнее действие третьего этапа - отрисовка силуэта человека. Еще одно правило: чем ближе и крупнее объект, тем тщательнее он должен быть прорисован. Результат третьего этапа. Все объекты прорисованы «плашками».

 

 

 


Четвертый этап. Детализация Объектов.
Содержание данного этапа зависит от того, на сколько высоки требования к конечному изображению. Как правило, детализации подвергаются только крупные объекты переднего плана, да и то не всегда. В данном случае, нам нужно поработать над человеком: придать некоторый объем лицу и туловищу, а главное, вытянуть руку. В  самом начале мы говорили о невозможности нахождения данного объекта в пред экранном пространстве. Но посмотрите, если человек стоит за окном (вернее, за проемом в стене, в котором нет ни рамы, ни стекол), никто не мешает ему протянуть руку из «заэкранья» в «нашу реальность». Однако, все по порядку. Правило «сначала дальние объекты, затем ближние» не должна нарушаться и здесь, ведь для руки, туловище тоже является задним планом. Если вы уже сняли выделение объекта, верните его (Выделение -> Выделить снова), оно поможет не затронуть фон. Теперь выберите инструмент Осветлитель, установите размер мягкой кисти примерно с голову человека на изображении, а экспонирование установите на уровне 7-8%. Пройдитесь осветлителем по всем выпуклым частям фигуры: плечи, грудь, живот, лицо. Помните, что дважды проходя по одному месту, вы подвергаете его двойному воздействию инструмента, а нам нужен совсем неглубокий рельеф, всего3-5 единиц шкалы серого. При определенной сноровке, можно научиться рисовать осветлителем и градиенты, например, туже руку: сначала проводим по всей руке от локтя до ладони, потом начинаем не с локтя, а чуть повыше и опять проводим до ладони, потом еще повыше и последний раз проводим только по ладони. Но мы сделаем по-другому: выделим руку от локтя до ладони и воспользуемся градиентной заливкой. Начальный уровень возьмем пипеткой на локте, конечный уровень установим на 15-20 единиц больше начального. Задаем направление градиента от локтя до ладони. Если хочется дальнейшей детализации, замечаем, что ладонь тянется еще ближе к нам. Выделяем ладонь, берем пипеткой начальный уровень у запястья, конечный устанавливаем большена10-12 единиц. Проводим градиент от запястья до кончиков пальцев. Этим же приемом можно пользоваться, если объект имеет большую протяженность по глубине, например, если бы здесь была стена дома с боку от нас: выделяем стену, берем пробы пипеткой в начале стены для основного цвета и в конце стены для фонового, заливаем выделение градиентом от ближней точки к дальней. Очередное правило: чтобы получить на КГ горизонтальную плоскость (пол, потолок), нужно чтобы градиент был задан строго вертикальной линией, чтобы получить вертикальную плоскость(стена), линия градиента должна быть строго горизонтальной, а не вдоль перспективных линий стены. Если линия направления градиента отклонится от горизонтали, то стена будет выглядеть не вертикальной, а наклонной. Будем считать, что полученный результат нас устраивает.

 

 

 


Анимация.

 

 

 

 


Сергей Книгин.

 

 

Категория: Мои статьи | Добавил: Коряк (03.10.2011)
Просмотров: 10519 | Комментарии: 2 | Рейтинг: 4.1/7
Всего комментариев: 2
avatar
1 Владимир01 • 20:54, 03.08.2014
Очередное правило: чтобы получить на КГ горизонтальную плоскость (пол, потолок), нужно чтобы градиент был задан строго вертикальной линией, чтобы получить вертикальную плоскость(стена), линия градиента должна быть строго горизонтальной, а не вдоль перспективных линий стены. Если линия направления градиента отклонится от горизонтали, то стена будет выглядеть не вертикальной, а наклонной.

Скажите, это правило распостраняется на все детали в картинке?
avatar
0
2 Коряк • 22:57, 29.09.2014
Да, конечно.
avatar