Продолжаем серию уроков “как сделать 3d-панораму”
В предыдущих статьях было рассмотрено:
1. По каким принципам надо снимать, чтобы фотографии сшились в единую панораму
В этой статье отредактируем изображение панорамы, полученное в предыдущем уроке, достроим зенит и создадим 3d-панораму.
Скачать панораму, полученную во второй части серии уроков (6.6 Мб)
1. Программное обеспечение для работы с панорамами
Нам потребуются программы:
1) Для работы с проекциями: Pano2VR (ссылка на триал-версию).
2) Для создания 3d-панорамы на основе сферической проеции: Autopano Tour. В версии Autopano Giga 2.0.6. эта программа уже поставляется в комплекте. Для версии 2.5 можно скачать программу Panotour. Функционал у нее достаточно схож с Autopano Tour.
Данные программы основаны на функционале просмотрщика панорам krpano (уроки по работе с krpano). Этот просмотрщик имеет широкие возможности по созданию 3d-панорам, но при этом не имеет графического интерфейса. Все редактирование панорамы осуществляется через командную строку и редактирование xml файлов.
Autopano Tour предлагает функционал krpano в более удобном и привычном виде, но вместе с тем требует лицензию на krpano (на старших версиях лицензия интегрирована в программу). Без этой лицензии у вас будут ограничения на разрешение 3d-панорамы.
Купить лицензию на krpano можно тут.
3) Для работы с изображениями, само собой, потребуется Adobe Photoshop.
2. Заполнение зенита
На этом этапе необходимо панораму привести к необходимым размерениям.
У полной сферической проекции панорамы обзор составляет 3600 по горизонтали и 1800 по вертикали. Следовательно в сферической проекции соотношение сторон должно быть два к одному.
В нашей панораме получилось разрешение 7066х3272, а для сферической проекции необходимо 7066х3533.
По прошлому уроку мы видели, что исходя из значения угла Phi, у нас получилось что от горизонта до надира у нас полное заполнение (т.к. Phi Min = 900), а от горизонта до зенита нет (т.к. Phi Max < 90). Значит в данном случае нужно заполнить панораму в верхней части
Открываем панораму в Photohop-е
Главное меню (которое в самом верху) -> Image -> Canvas Size. Ставим Anchor в нижнюю часть квадрата и устанавливаем Height = 3533.
А что делать если в панораме присутствуют недостроенные и зенит и надир?
В этом случае определите линию горизонта, и дозаполните до 1/4 ширины выше и ниже горизонта.
Например, получившаяся панорама имеет разрешение 10000х3500, а линию горизонта на уровне 2000 пикселей от верхней границы.
Получается, что необходимо достроить вверх (10000/4)-2000=500 пикселей, а вниз (10000/4)-(3500-2000)=1000 пикселей.
В результате получится высота 3500+500+1000=5000 пикселей, т.е. ровно половина от ширины. Условия соотношения сторон два к одному соблюдаются.
3. Преобразование из сферической проекции панорамы в кубическую
Из-за того, что в сферической проекции (подробнее о проекциях в статье о теории фотосъемки панорам ) в верхней и нижней границе присутствуют сильные искажения, редактирование изображений в этих областях очень затруднительно.
Для того чтобы достроить зенит – преобразуем панораму из сферической проекции в кубическую.
Здесь для преобразования проекций используется программа Pano2VR, но если вы уже освоились с krpano, то можете использовать его дроплеты для преобразования.
Запустите программу Pano2VR.
В область Импорт из проводника или файлового менеджера перетащите файл панорамы.
Программа автоматически попытается определить тип проекции. В данном примере Pano2VR тип проекции установила верно – эквидистантная (другое название сферической проекции)
Вместе с тем, если присутствует предварительное заполнение надира или зенита, то иногда она это делает неправильно. Если такое произошло – нажмите кнопку Выбрать и вручную укажите нужный тип.
Для того чтобы изменить тип проекции нажмите кнопку Изменить, после чего откроется окно преобразования текстуры.
Выберите тип проекции Стороны Куба и нажмите Process
Программа Pano2VR может работать с несколькими типами проекций: эквидистантная, цилиндрическая и кубическая.
Кроме того в списке типов есть различные стрипы, кресты, Т -проекции. По сути это таже кубическая проекция, отличающаяся лишь тем как расположены отдельные стороны куба в изображении панорамы. Данные типы могут пригодится, когда необходимо редактировать в панораме объекты которые находятся сразу на нескольких сторонах куба. Например, если большую часть панорамы занимает длинное здание, на котором получились дефекты (изломы, засечки). В этом случае, при устранение дефектов, в таких проекциях удобно следить, чтобы стороны куба хорошо стыковались друг с другом. Вместе с тем, здесь есть минус – большой размер выходного файла, так как изображение панорамы в таких проекциях имеет большее разрешение. Поэтому его сложнее будет редактировать в графических редакторах.
4. Редактирование панорамы
Итак, после преобразование панораму из сферической в проекцию Стороны Куба мы получили 6 файлов. Особое внимание следует уделить сторонам надира и зенита (они под номерами 5 и 6). В данной панораме сторона надира не имеет дефектов, а вот в центре зенита – черный многоугольник, соответствующий той области, которую мы заполняли в сферической проекции.
Откроем сторону зенита в photoshop-е и достроим кадр зенита. Для этого скопируем часть изображения в новый слой и расположим его поверх черного многоугольника.
Отредактируем его так, чтобы провода располагались по одной линии. Для этого воспользуемся инструментом Free Transform (Главное меню -> Edit-> Free Transform). Напомню, что вы можете перемещать углы редактируемой области при помощи мыши если зажать клавишу Ctrl.
Применим к слою маску (Главное меню -> Layer->Layer Mask->Reveall All) и при помощи кисти замажем резкие границы слоя.
После чего воспользуемся штампом, чтобы скрыть небольшой перепад яркости.
Теперь кадр зенита достроен.
Выделим все 6 файлов сторон куба и перетащим мышкой в область импорта в программе Pano2VR.
Затем нажмем кнопку Изменить и преобразуем панораму из кубической проекции обратно в эквидистантную.
В результате получилась полная сферическая проекция панорамы с углами обзора 360х180
5. Создание 3d-панорамы
Запустим программу Autopano Tour.
Перетащим файл панорамы из проводника или файлового браузера в левую верхнюю область окна программы и кликнем по самой панораме.
Меню Hotspot Editor
Здесь можно указать месторасположение солнца (для создания линзовых эффектов), и обозначить точки перехода между панорамами.
Точки перехода применяются в виртуальных турах, и при их помощи можно перейти от просмотра одной панорамы к другой.
В текущем уроке мы пока не создаем виртуальный тур, а солнца на панораме не видно за низкими облаками. Поэтому в данном меню нам настраивать нечего.
Меню 3D Editor
Здесь вы можете посмотреть превью будущей 3d-панорамы. Покрутите проекцию, определите понравившийся ракурс, нажмите правую кнопку мыши и выберите set a start position. С этой точки будет запускаться ваша 3d-панорама.
В этом эдиторе Yaw, Pitch- это углы по горизонтали и вертикали на которые повернута камера.
Fov -угол зрения. Влияет на угловые размеры изображаемого пространства и перспективные искажения картинки. Тут угол можно поставить исходя из своих предпочтений (я обычно ставлю fov = 55)
Вкладка Panorama Properties
Здесь указываются основные свойства панорамы.
Field of view. Углы обзора панорамы. В данном случае у нас панорама с полным обзором, поэтому выставлено Horizontal=360, Vertical=180.
Autopano Giga при сборке панорамы сохраняет значения углов в самой панораме (в файлах изображений имеются специальные служебные области, куда программы могут прописывать необходимые им данные).
Autopano Tour считывает параметры оставленные Autopano Giga или пытается автоматически вычислить углы (как в нашем случае).
Но иногда происходит следующая ситуация: Autopano Giga прописала углы в файл, а мы отредактировали панораму через Photoshop и Pano2VR. В процессе редактирования искусственно изменили реальные значения углов. Например, как в нашем случае, мы достроили зенит и довели вертикальный угол обзора до 180. И получается что в файле прописаны старые углы обзора, а исходя из соотношения сторон панорамы, видно что углы изменились. Autopano Tour в такой ситуации не всегда может правильно выставить углы обзора. Поэтому необходимо перепроверять значение этих параметров.
А что тогда такое Vertical offset?
Данный параметр показывает насколько градусов надо сместить линию горизонта если угол Phi Min не равен Phi Max (подробнее об этих углах в предыдущей статье, о том как сшить фотографии в панораму).
Горизонт в 3d-панораме должен проходить через центр, когда камера находится горизонтально. Но если Phi Min не равен Phi Max, то расстояние в пикселях от горизонта до верхней границы и от горизонта до нижней не равны друг другу. В этом случае необходимо сместить панораму по вертикали, чтобы выровнять положение горизонта.
Vertical offset = (Phi Min+ Phi Max)/2
Здесь следует учитывать, что Phi Min идет со знаком “-”.
Pictures parameters
Preview Width.
Перед тем как панорама полностью загрузится, чтобы пользователь не скучал перед черным экраном, показывается превью. Здесь задается ширина данного превью. По умолчанию данный параметр равен 800, что вполне подходит для большинства случаев.
Jpeg Quality
Изображение для панорамы кодируется в jpeg-файл. Здесь устанавливается значение качества. Если панорама подготавливается для интернета, то рекомендуется устанавливать качество 6-9.
Cube Face Size /Partial Panorama Width
Изображения для 3d-панорамы сохраняются в кубической развертке. Если панорама сферическая – то предлагается ввести ширину стороны куба (Cube Face Size). Для интернета в этом случае подойдет значение 1500-2000.
Если панорама с углом обзора по вертикали не 180, то здесь необходимо ввести ширину панорамы в сферической развертке. Опять таки, если панорама подготавливается для размещения в интернете, подойдет значение 5000-7000.
Если нажать на кнопку Compute Optimal Size, то программа предложит свое значение с точки зрения оптимальности Cube Face Size /Partial Panorama Width. Вместе с тем предложенные значения не всегда подходят.
Nadir Patch
Если в надире вы хотите разместить логотип, или какое-либо изображение то выберите здесь файл и отрегулируйте размер этого изображения (параметр Scale)
В данном примере мы не будем использовать эту возможность.
Camera Parameters
Yaw, Pitch определяет начальные углы камеры (эти параметры определяются автоматически, если в 3d editor-е использовалась функция set a start position)
Fov- угол обзора камеры.
Следует заметить, что Fov камеры и Fov в 3d Editor-е это независимые значения. Для создаваемой 3d-панорамы необходимо выставить Fov именно в Camera parameters. В данном случае установим Fov=55.
Параметры Min и Max определяют соответственно минимальный и максимальный fov камеры, если пользователь будет изменять масштаб. Т.е. эти параметры определяют в каких пределах пользователь может приближать и удалять картинку.
Поставим Min=20, а Max=100.
Вкладка Project Properties
First Displayed Panorama
Если вы создаете виртуальный тур, состоящий из нескольких панорам, то здесь здесь можно выбрать, какая панорама будет показываться первой.
Insert navigation menu
Позволяет вставить навигационное меню. Оно показывается в нижней части панорамы.
Use auto rotation
Использовать автовращение. Если пользователь некоторое время не двигает мышкой, то панорама начинает плавно вращаться по горизонтали.
Add full screen button
Позволяет возле навигационного меню поместить кнопку для просмотра панорамы в полноэкранном режиме.
Insert panoramas list
Позволяет разместить разворачивающийся список панорам (актуально для виртуальных туров с множеством панорам). После выбора данной опции есть возможность определить угол, в котором будет выводиться данный список.
Logo
Данная опция позволяет вывести логотип поверх панорамы. Также можно задать ссылку на сайт, которой будет открываться при клике по логотипу. После выбора данной опции появится возможность определить угол, в котором логотип будет выводиться.
Export
В данном пункте можно настроить параметры экспорта.
3d-панорама собирается из нескольких файлов:
- Swf – исполняемый флеш файл панорамы.
- Xml – текстовый файл с описанием настроек панорамы.
- Ряд jpg файлов панорамы, которые представляют собой набор файлов изображений панорамы в кубической проекции.
Напрямую работать с этими файлами нет необходимости, программа Autopano tour может сама все оформить. Вместе с тем надо указать как именно ей необходимо собирать 3d-панораму.
Embed all data
Данная настройка позволяет упаковать все вышеобозначенные файлы в единый swf-файл. Это удобно для размещения 3d-панорамы в интернете, и для распространения на дисках.
Embed XML files
Эта настройка позволяет определить, надо ли упаковывать XML файл в общий swf-файл. В этом файле прописан скрипт работы панорамы. Возможность “неупаковки” может потребоваться если вы хотите вручную настроить данный XML-файл.
HTML Template
Определяет шаблон создания HTML файла для размещения панорамы в интернете. Данный шаблон показывает в каком разрешении выводить панораму, и возможность разворачивания панорамы на весь монитор.
По умолчанию данные шаблоны находятся в:
папка_куда_вы_инсталировали_Autopano_Giga\Temlates\html
Сюда можно разместить свои шаблоны и после перезагрузки Autopano Tour автоматически добавит в список.
В данном примере выберем шаблон simpleWithFullScreen.html. Это простой шаблон вывода 3d-панорамы c возможностью развернуть полностью на экран.
6. Создание 3d-панорамы и размещение ее в интернете
Теперь мы настроили экспорт изображения панорамы в flash-файл и запускаем на просчет.
- Export Flash
В результате получим 2 файла: swf файл панорамы, и html шаблон для размещения ее в интернете. Оба типа файла можно посмотреть при помощи браузера.
Для того чтобы разместить 3d-панораму в интернете, разместите оба файла на вашем хостинге, и укажите ссылку на html-файл.
Финальная 3d-панорама
Эта же 3d-панорама Черекского ущелья на сайте 1panorama.ru
Таким образом мы пошагово создали 3d-панораму. В этих трех уроках было показана на практическом примере общая последовательность действий, работа со специализированными программами и основные принципы создания 3d-панорам.