Технологии иллюзий

Итак, постепенно мы подбираемся к 3D-иллюзиям. Эти иллюзии работают над одним стереотипом мышления человека, выраженного в том, что в любом 2D-изображении человек пытается увидеть объем. Именно об "издевательствах" над этими стереотипами мы и поговорим.


Тени задают траекторию трехмерного движения

Вашему вниманию представлен рисунок с четырьмя шариками. Видно, что они движутся в осях X и Y.

Добавим к этому же рисунку новые элементы - тени, сделанные из однотонно окрашенных овалов разных размеров. Расставим их сообразно предполагаемому движению.

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

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

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

На данном рисунке представлены три одинаковых фигуры с различными тенями. Закройте средний шарик пальцем. Два крайних покажутся разными по размерам. Получится эффект типа этого:

"Почему так?" - спросите вы. Представьте, что серый фон - это стена. Свет направлен от нас. Естественно, большая тень будет у объекта, который ближе к нам. По мере приближения объекта к стене тень уменьшается. Тем самым правый объект смотрится более удаленным, а значит - меньшим. К тому же не исключено, что тень, так как она темная, в 2D-пространстве сообщает некий иррадиационный эффект.


Белый, черный и… или просто цвет с различными степенями яркости

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

Например, когда я программировал в Delphi, пару лет назад в широкой моде были компоненты 3D Label (3D-надписи). Делались они очень просто: брались три одинаковых элемента Label (текст в 2D) и ставились с небольшим смещением относительно друг друга, а потом для каждого в отдельности выбирался свой цвет (см. на рисунок). Из чего после формировался эффект объемности объекта. Кстати, таким же образом можно было рисовать кнопки, выделять фигурные графические элементы. Они могут быть как вдавленными, так и выпуклыми. Не знаю, как эти элементы смотрятся в печатном варианте (поэтому и не привожу их много), но создать собственные 3D-объекты вы сможете сами. Например, попробуйте на сером фоне нарисовать вогнутую вглубь экрана линию. У вас это получится. И, кстати, вы увидите, что для создания одного объемного компонента достаточно трех плоских. Оперируя ими, можно получить нужный нам эффект.

Теперь рассмотрим немного другую тему. Если у вас на рабочем столе установлена стандартная схема Windows, то можно заметить, что в палитре для создания 3D-эффекта используется три цвета: белый, черный и серый. Или же можно "перевернуть" и сказать, что использован серый цвет с различными степенями яркости. Меняем серый на зеленый. Объемная картина сохранится. То есть, мы просто работаем с разными степенями яркости одного и того же цвета. И получаем иллюзию присутствия источника света, обращенного к экрану. И создается эта иллюзия путем "наложения" плоских элементов друг на друга таким образом, чтобы картинка получилась объемной. Почему нельзя нарисовать все тени и объекты сразу? Разделение на плоские объекты более приемлемо, так как таким образом удобнее менять свойства этих объектов. Например, при нажатии на кнопку в программе меняется не картинка, а просто "плоские" объекты, составляющие эту кнопку, меняют свои свойства. Схему применения смены нарисованных элементов можно увидеть во множестве реализаций кнопок в интернет-ресурсах, но это громоздко. И как вы думаете: программистам Quake лучше рисовать каждую стену или же создать ее из компонентов, а потом просто управлять их свойствами? Мы говорим об автоматизации схемы 3D.

Идеальная картина - та, которую мы наблюдаем в природе. Если, например, источник освещает желтую стену, то мы видим огромное количество цветов (от самого яркого желтого до самого темного желтого, если не брать в учет цвет, сообщаемый самим источником). В компьютере это более минимизировано, хотя в современных играх столкнулись с тем, что видео, создававшегося ранее, в основном, для ПО и 2D-игр, не хватает. Поэтому мы и имеем наличие мощных "движков" по поддержке цвета. Огромное внимание уделено оттенкам, теням. Система максимально оптимизирована. Попросту говоря, если на расстоянии трех точек друг от друга находятся белая и черная точки, то эти три точки между ними заполняются различными оттенками серого. И мы говорим о сглаживании цвета, вернее, об эмуляции природного процесса. Поэтому для современных игр рекомендованы видеокарты с максимальными параметрами.


Влияние фона на размеры объектов

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

Кто больше: убегающий или догоняющий? Когда смотришь на рисунок впервые, то, конечно же, удивишься глупости данного вопроса. На самом деле персонажи абсолютно одинаковые - и по форме, и по размеру.

Смотрим на вторую, не менее известную иллюстрацию:

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

Кристофер,
christopher@tut.by

Версия для печатиВерсия для печати

Номер: 

52 за 2000 год

Рубрика: 

Компьютер и жизнь
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!