Pull to refresh

Реализация настоящего 3D эффекта в своих проектах

Reading time3 min
Views7.8K
image

Сегодня я попробую без nVidia 3D Vision, специальных очков и 120Hz монитора добиться настоящего 3D картинки. Работа будет произведена с помощью графической библиотеки GLScene для Delphi/Lazarus/Borland C++ на ПЭВМ с посредственными характеристиками. Вы можете повторить указанные действия, используя фотоаппарат, программы с функцией моделирования 3D изображения (например, MathCAD, Maya, etc) или любым GAPI. В конце статьи мы должны получить объемное изображение вне монитора, к которому можно будет «прикоснуться». Это не революция в технологиях, а простой стереоскопический эффект, который в быту является небольшой, но полезной для зрения забавой.

Стереоизображение


Я не буду описывать здесь все то, что может рассказать гугл. Только самое главное и необходимое для работы.
Стереопара – вид стереоизображения, представленный парой плоских перспективных изображений объекта, полученных с двух разных точек зрения расположенных между собой на расстоянии соответствующем межзрачковому расстоянию человека.
Прежде всего, нас интересует горизонтальная стереопара (side-by-side), которая бывает двух видов: параллельная и перекрестная.

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

Ниже можно посмотреть пример параллельной стереопары, а справа изображение, иллюстрирующее направление взгляда.
image


В перекрестных стереопарах все наоборот: левое изображение предназначено для правого глаза, а правое изображение – для левого. Для наблюдения стереоскопического эффекта нам необходимо скрестить глаза. Мнимое изображение будет расположено между вами и монитором, что позволит попробовать к нему «прикоснуться».

Пример из прошлого случая. Просто переставили изображения местами:
image


Для каждого стереоизображения есть два мнимых – основное объемное, и зеркальное, вывернутое наизнанку. Если вы увидели зеркальное изображение, то просто поменяйте фокус на другой (с перекрестного на параллельный или наоборот). Для наглядности можете потренироваться со следующим изображением. В нем будет изменяться глубина расположения цифр относительно друг друга:
image

Если самое дальнее число 5, а самое ближайшее 4, значит вы сейчас смотрите на пример, как на перекрестную стереопару. Если наоборот – как на параллельную.

Просмотр подобных картин является отличной тренировкой зрения для людей, у которых точка фокуса длительное время располагается на одинаковом расстоянии от глаз. Под это описание попадают люди, занимающиеся бумажной работой или за ПК. При хорошей тренировке с различными стереоизображениями можно избавиться от очков и проводить профилактику мышц глазных яблок. Но не стоит забывать меру, здесь как в спорте: если мало, то полезно, если профессионально, то можно покалечиться. Параллельные стереопары более благоприятны для нашего зрения, так как это естественный взгляд человека, но чтобы научиться их видеть, надо хорошо потренироваться.
Совсем не могут видеть стереоизображения лишь около 5% людей. Эти люди не способны видеть мир в объеме и прав на вождение автомобиля им не предоставляют.

Реализация


Для реализации на фото/видео камере нам необходимо расположить 2 аппарата на одной горизонтальной планке с расстояниями между объективами в 7-8 см. После чего готовые фотографии или видеодорожки совместить по горизонтали. Не забывайте, что смотреть на изображения надо без наклона головы.

Теперь реализуем данный эффект с использованием графической библиотеки GLScene. Запускаем используемую IDE, создаем VCL/LCL приложение, размещаем на форме TGLScene и два TGLScreenViewer. Размер формы установим равным 800x400 и разместим на ней вьюверы по левую и правую стороны. В TGLScene создаем две камеры, источник света, который следует поместить во вторую камеру, шар, пару кубов, плоскость. Поместим обе камеры в TGLDummyCube, установим даммик как TargetObject. Координаты камер (3,0,-0.1) и (3,0,0.1). Не забываем присвоить каждому вьюверу по своей камере. Кодить нет необходимости. Желательные системные требования: широкоформатный монитор.

Вот, что у меня получилось (камеры выставлены для перекрестной стереопары):
image

Скачать пример.
На основе этого можно сделать игру, демосцену, либо в математическом пакете посмотреть сложный график.

Всем спасибо за внимание!

Полезные ссылки


fishki.net/comment.php?id=65203
images.google.com
google.ru

Примеры параллельной и перекрестной стереопар были взяты из википедии, остальные картинки многократно повторяются на различных сайтах со стереоизображениями без указания авторства.
Tags:
Hubs:
+32
Comments65

Articles

Change theme settings