Удерживай и вращай
Давно известно насколько важна визуализация и ее роль в донесении дизайна до конечного потребителя с помощью наглядных фотореалистичных изображений. Как легко и просто налаживается понимание у клиента и дизайнера без необходимости вдаваться в чертежи, планы, условные эскизы, развертки... Но что если просто серии статических изображений недостаточно? Что если заказчику хочется большего ощущения присутствия и объема, чем растровые 2d изображения, а делать анимацию непрактично из-за существенных временных и вычислительных затрат? Ответом на этот не риторический и вполне актуальный вопрос является псевдотрехмерное представление 2d изображения с помощью технологии интерактивной 3d панорамы. Такое представление позволит увидеть трехмерную картину визуализации с помощью виртуальной камеры, вращая ее и наблюдая за любой точкой вокруг на все 360 градусов, а также имея возможность приближения и отдаления.
По сути, при первом рассмотрении, интерактивная панорама представляет из себя трехмерный куб, на каждую сторону которого натянута соответствующая текстура со специфическим искажением (проекции сферы на куб), а внутри этого куба и находится виртуальная камера из которой наблюдается панорама.
На куб натянуты текстуры таким образом, чтобы на его углах не было видимых швов и создавалась иллюзия целостности изображения, которое на самом деле состоит из шести отдельных сопрягающихся картинок - по одной картинке на одну грань куба. Картинки на гранях куба, в свою очередь, охватывают все 360 градусов относительно точки обзора. То есть фронт, право, тыл, лево, верх, низ. Единственной особенностью, на которую стоит обратить внимание, это то, что картинки, натянутые на грани виртуального куба, должны быть не просто плоскими снимками шести сторон относительно точки обзора. Это должны быть проекции сферы на грани, с диаметром сферы, равным диагонали этого куба, в следствии чего эти шесть изображений будут иметь соответственные искажения.
Весь процесс создания такой 3d панорамы состоит в том, чтобы изготовить эти сопрягающиеся картинки-текстуры. После чего "склеить" их в изображение специального формата, так называемую кубическую проекцию.
Когда кубическая проекция готова, нужно с помощью специализированной программы натянуть ее на 3d-куб, превратив в интерактивную панораму.
Сферические 3d панорамы уже давно используются в современной фотографии. Теоретически самый тривиальный путь создания такой панорамы это фотографирование окружающей среды из одной точки (нодальная точка) в шести направлениях: фронт, тыл, право, лево, низ, верх. После чего полученные изображения склеиваются в кубическую проекцию и конвертируются в интерактивную 3d панораму. Однако, на практике получить хорошо сопрягающиеся шесть снимков практически невозможно, и тем более, если это снимки с необходимыми искажениями (проекция сферы на куб), что оставляет такой способ только в теории.
На практике, для создания интерактивных панорам более предпочтительными являются иные методы. А именно те, которые позволяют получить прямоугольную развертку изображения, спроецированного на сферу, так называемуюэквидистантную (еще называют равноугольной) проекцию. Самый простой пример эквидистантной проекции этокартографическая проекция, которая позволяет нанести на прямоугольную карту мира изображение сферы планеты Земля, как бы разворачивая ее круглую поверхность на прямоугольный лист бумаги.
Существует несколько методов получения эквидистантной проекции.
Например, фотографируют окружающую среду вокруг точки обзора серией снимков, охватывающих все 360 градусов пространства.
После чего, с помощью специального ПО и ручной ретуши в растровом редакторе сшивают полученные снимки вэквидистантную проекцию.
Или же, получают развертку сферы, фотографируя окружающую среду специальным объективом, так называемымрыбьим глазом (фишай), имеющим угол обзора почти в 180 градусов, что эквивалентно проекции полусферы окружающей среды на плоскость. После чего делают серию снимков (два и более), получая изображение охватывающее 360 градусов.
Либо, фотографируют зеркальную сферу широкоугольным объективом (объективом с большим углом обзора) получая аналогичные снимки полусфер в 180 градусов. После чего, как и в первом случае, с помощью специализированного ПО сшивают эти изображения, получая всю ту же развертку сферы.
Когда развертка сферы, та самая эквидистантная проекция получена, то ее конвертируют непосредственно вкубическую проекцию для последующего натяжения на куб виртуальной 3d панорамы.
Итак, для создания интерактивной панорамы необходимо получить кубическую проекцию и натянуть ее на кубвиртуальной 3d панорамы.
По аналогии с реальной фотографией, теоретически это можно сделать и в 3d графике, просто отрендерив фронт, право, тыл, лево, верх и низ относительно выбранной точки, охватив таким образом все 360 градусов обзора. Сшить из полученных рендеров кубическую проекцию и конвертировать ее в виртуальную панораму.
И опять же нужно повториться - на практике такой способ оказывается очень неэффективным.
Во-первых, для его реализации нужно устанавливать шесть камер (или анимировать одну камеру), идеально точно их позиционировать в шести разных направлениях и делать шесть визуализаций.
Во-вторых, у полученных таким образом визуализаций будет наблюдается неидеальное сопряжение на швах при сшивании их в кубическую проекцию.
Это обусловлено спецификой работы рендер-программы, а именно случайностью получаемого результата. В частности, так работают адаптивные рендер-движки, основанных на теории Quasi-Monte Carlo, которая базируются на принципах выборок наиболее существенных для общего результата значений и отсечении менее важных (принцип Buffon's Needle).
Разумеется, полученные таким образом результаты вычислений будут иметь значительную долю случайности, что и приведет к неоднородности и сложной сопрягаемости изображений. Разумеется, как выход, можно просто завысить настройки рендер-программы, отвечающие за качество визуализации, чтобы увеличить однородность получаемых изображений, но от этого неизбежно существенно возрастет и время вычислений.
В-третьих, как правило, главной ошибкой является то, что в этом случае полученные визуализации не будут, как говорилось ранее, проекциями сферы на куб, а будут просто плоскими снимками окружающей среды из шести разных камер. В следствии чего, в созданной таким образом панораме будет заметна квадратность, так как отчетливо будут различимы грани виртуального куба. Даже в случае установки угла обзора камеры в 90 градусов, данный способ не является удобным.
Также существует еще один метод получения кубической проекции путем визуализации сцены кубической камерой (Camera type - box). Результатом такой визуализации будет вертикально расположенная кубическая карта, так называемаяVertical Cross.
К сожалению, даже этот способ неудобен ввиду необходимости преобразования Vertical Cross карты с помощью растрового редактора в необходимую кубическую проекцию, которая имеет вид Horizontal Cross.
Учитывая сказанное выше, более рациональным и вполне правильным как и для фото так и для 3d графики является способ создания интерактивной панорамы с помощью эквидистантной проекции.
ПРИМЕЧАНИЕ
Далее, процесс создания виртуальной панорамы будет описан на примере 3d редактора 3ds Max 2008 и рендер-движка V-Ray 1.5 с описанием некоторых особенностей использования именно этого программного обеспечения. Однако, все описанные принципы абсолютно справедливы и для любого другого 3d ПО, имеющего возможность производить рендер из сферической камеры с углом обзора в 360 градусов. Поэтому, если необходимо создать панораму, пользуясь альтернативным пакетом 3d моделирования или рендер-движком, то следует просто опустить конкретные особенности связки 3ds Max + V-Ray и смело применять указанную технику создания интерактивной панорамы в любом другом аналогичном программном обеспечении.
Для создания эквидистантной проекции трехмерной сцены в 3ds Max + V-Ray необходимо визуализировать ее из заданной точки камерой с углом обзора равным 360 градусов. К сожалению, специализированная VRayPhysicalCamera V-Ray рендерера версии 1.5 не поддерживает угол обзора в 360 градусов и не имеет режима сферической камеры. Чтобы получить эквидистантную проекцию, следует использовать только стандартную 3ds Max камеру.
ПРИМЕЧАНИЕ
Если сцена изначально настроена для работы с VRayPhysicalCamera, то для перехода на стандартную 3ds max камеру,сцену следует перенастроить с помощью нескольких несложных приемов. Подробно о переходе с VRayPhysicalCamera на стандартную 3ds Max камеру можно узнать из урока Замена VRayPhysicalCamera стандартной.
Стандартная 3ds Max камера имеет встроенную регулировку угла обзора, но она не является сферической и максимальный угол обзора, который возможно там установить, равен 175 градусов.
Для обхода этого ограничения V-Ray рендерер имеет специальный инструмент, расширяющий возможности стандартной камеры.
ПРИМЕЧАНИЕ
Все изменения, сделанные с помощью этого инструмента не отображаются во вьюпорте 3ds Max и будут видны непосредственно на визуализации.
Для доступа к этому инструменту в закладке V-Ray диалогового окна Render Scene: (F10) следует найти раскрывающейся свиток V-Rray: Camera. В нем, в разделе Camera type в выпадающем списке Type выбрать тип камерыSpherical. Таким образом, стандартная 3ds Max камера станет сферической. После чего необходимо активировать функциюOverride FOV, установив напротив нее галочку для подмены угла обзора и установить в, теперь уже активном, поле FOVнеобходимое значение подмены угла обзора в 360 градусов.
ПРИМЕЧАНИЕ
Особенностью эквидистантной проекции является фиксированное соотношение сторон два к одному.
Чтобы получить корректное изображение проекции следует установить соотношение сторон 2:1 для финальной визуализации. Для этого необходимо перейти к закладке Common диалогового окна Render Scene: (F10) и в разделеOutput Size выставить значение параметра Image Aspect равным 2. Также следует нажать на иконку в виде замка, чтобы при задании значения одной из сторон визуализации, разрешение второй подбиралось автоматически и сохраняло нужные пропорции между шириной и длиной картинки.
Когда все вышеуказанные настройки произведены, можно смело приступать непосредственно к визуализации, результатом которой и будет заветная эквидистантная проекция.
Сохранять полученную визуализацию следует в стандартные растровые форматы, такие как jpg, png и т.д. Если, например, необходима постобработка, то, разумеется, можно сохранять визуализацию в любой удобный формат, hdr, exrи т.д. Однако, когда все необходимые изменения внесены, следует конвертировать или пересохранить нужное изображение в стандартный растровый формат.
Теперь, получив в распоряжение изображение эквидистантной проекции в стандартном растровом формате, необходимо приступить непосредственно к созданию интерактивной 3d панорамы путем конвертации эквидистантной проекции в кубическую и натягиванию ее на виртуальный 3d куб интерактивной панорамы.
Существует несколько специализированных программ для этих целей, в частности Pano2QTVR. Главной положительной особенностью данной программы является то, что конвертация эквидистантной проекции в кубическую и натяжке ее на виртуальный 3d куб интерактивной панорамы происходит автоматически, незаметно для пользователя, избавляя его от необходимости предварительного преобразования эквидистантной проекции в кубическую.
Скачать данную программу и приобрести на нее лицензию можно непосредственно на сайте разработчика:
Кроме того, там же имеется демо-версия, отличающаяся от полнофункциональной наличием только QuickTimeформата.
После запуска Pano2QTVR автоматически откроется вкладка Start и предложит создать новый проект, либо открыть уже существующий.
Для создания нового проекта необходимо кликнуть на большую горизонтальную кнопку Create a new Project и указать в открывшемся диалоговом окне имя и путь для нового проекта.
После этого откроется вкладка Project, где следует указать путь к эквидистантной проекции, нажав на кнопку с троеточием напротив поля Equirectangular image и выбрав на диске нужное изображение, а именно полученную ранее сферическую визуализацию.
Затем внизу, в списке Output format выбрать необходимый формат будущей панорамы.
Если панораму необходимо презентовать на экране монитора, то отличным выбором будет квиктайм видеофайл с расширением mov. Для его выбора в выпадающем списке Output format следует указать значение QuickTime.
При необходимости опубликовать панораму на страничке веб-сайта, прекрасно подойдет флеш файл с расширениемswf. Для его выбора в выпадающем списке Output format следует указать значение Flash.
Когда выбран файл эквидистантной проекции, указан формат будущей панорамы, последнее что необходимо сделать, это нажать на кнопку Create, находящуюся рядом с выпадающим списком Output format для запуска процесса создания панорамы.
По нажатию кнопки Create временно откроется вкладка Console, где можно пронаблюдать логи процесса конвертации и после его завершения программа опять вернется во вкладку Project.
Теперь панорама готова и находится в указанной ранее папке с проектом.
Если возникнет необходимость изменить установленные по умолчанию настройки панорамы, такие как разрешение окна обзора панорамы, величина компрессии и т.д., то их можно изменить воспользовавшись функциями расположенными во вкладке Settings.
Интерактивная панорама хорошая вещь. Не стоит ее рассматривать только лишь как финальный продукт для заказчика. Ее особая прелесть в том, что при черновом варианте визуализации нет необходимости возится с разными ракурсами камер, пытаясь охватить все элементы окружения для проверки ошибок и соответствий техническому заданию. Панорама это прекрасное средство синхронизации для утверждения рендера и выбора ракурсов финальной визуализации. Она полностью избавляет от необходимости создавать множество кадров сцены на стадии превью, что займет уйму времени не только на настройку сцены, но и на собственно вычислительный процесс большого количества изображений.
Всем быстрых рендеров и красивых панорам! :)