Плагин для рендеринга

Руководство для программистов

 линзы

Как работает 3D дисплей?

На одном квадратном метре расположены 416 х 608 микроскопических линз. На тыльной стороне фотопластины, толщиной 8 мм, за каждой микролинзой-микрообъективом, на специальном оптическом скотче, размещено микроизображение, снятое с учетом ракурса каждой отдельной микролинзы. Таким образом, каждая микролинза излучает совершенно разные световые пучки в 512 горизонтальных и 512 вертикальных направлениях. Когда зритель смотрит на микрообъектив с расстояния, то он видит только то сфокусированное изображение, которое соответствует его направлению наблюдения. Стоит зрителю немного поменять свое положение, его взгляд тут же переключается на другой пиксель. Можно сравнить каждый микрообъектив с имитацией замочной скважины. Например, если просверлить 250 000 отверстий в стене, то мы как бы получаем окно в трехмерное пространство.

Угол обзора ограничен вверх, вниз, вправо и влево на 20° (вкруговую). Площадь от -20° до +20° соответствует таким образом площади 512 х 512 пикселей. Осветительная оптика - тета-объектив (в отличие от синус-тета объектива), т. е. расстояние от центра пикселей рендерного изображения линейно растет с углом луча тета относительно оптической оси.

Что делает плагин?

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

- ... над "каждой микролинзой": задается позиция в верхнем левом углу (в модели) для линзы_X_Y (1, 1). Задается питч в X и Y (в модели). В готовом изображении расстояние между линзами равно 2 мм.

- ... "Камера":  направлена всегда по оси Z.

- ... "Линза": угол -20° до +20° - в формате FOV (field of view) = 40.

- ... "Разрешение микрообъектива": задается 512 х 512.

- ... "Сохраняет":  в наст. время в расширении PNG, без альфа-канала, 24 бит RGB.

- ... "Построчно ": задается количество линз по осям Х и Y.

- ... "Рендерит": луч света начинается не с позиции объектива, а (регулируется) перед камерой, например, 100 см до нее, как будто ближняя плоскость отсечения (clipping plane) находится на расстоянии 100 см. Таким образом, каждая замочная скважина может отображать объекты также перед плоскостью изображения.

Изображение после рендеринга выглядит несколько необычно: к примеру рыба перед плоскостью изображения перевернута "с ног на голову" и "справо-налево". Наш плагин создает конечную картинку в два этапа. Одна картинка для положительного расстояния до объектива и одна картинка для отрицательного расстояния до объектива, которые затем накладываются друг на друга.

Выбор

Разрешение для каждого изображения объектива: 512 х 512 было когда-то стандартным, а сейчас стандарт составляет 256 х 256. При этом снижаются затраты на рендеринг в четыре раза, качество изображения едва заметно хуже (около 1%). Другие размеры, отличные от 2 дополнительно обрабатывать затруднительно.

Полезные плагины для тестирования и чтения кодов:

− RealEyes_at2_source_(rev4276).rar (13kB) - простой плагин для C4D, вкл. Source Code

− 3dsMaxVrayCameraPlugin.zip (51MB) - простой плагин 2009 года для 3DS Max, вкл. Source Code

− realEyes_mental_ray_shader.rar (93kB) - следующая версия плагина 2012 года. Установить "галочку" на „Still variant“ (неточн. перевод), вкл. тестовую версию для анимированных 3D дисплеев, но, к сожалению, без кодов Source Code

Расширенный плагин для рендеринга за ¼ времени

Основная идея заключается в том, чтобы определить любой микрообъектив, который для каждого пикселя получает свой собственный начальный вектор и направление. В одном визуализированном (рендерованном)изображении, размером 4096 х 4096 пикселей сохраняется соответственно по 8 х 8 линзовых картинок (каждая по 512 х 512 пикселей) или 16 х 16 линзовых картинок (каждая по 256 х 256 пикселей). Число линз должно быть соответственно кратно 8 и 16. Таким образом, если в простой плагин-версии позиция объектива сочетается с анимацией, то теперь для каждой отдельной позиции линзы-микрообъектива в пределах каждого визуализированного изображения, из каждого отдельного пикселя, создается начальная позиция и направление векторов для рендеринга. В данном случае, как и в случае с простым плагином, строка за строкой проходятся пакеты с 8 или 16 картинками (8 или 16 линз по направлениям X и Y).

Оказывается, что 22% времени рендеринга можно сэкономить, если изображения, которые находятся за пределами 20-градусного круга, не рендировать в виде луча, направленного на черную маску, а вообще не трогать. Эти области изображения и так черные, поэтому рендировать их не нужно. Кроме того, большим преимуществом является то, что вам не придется возиться с невероятно большим количеством маленьких файлов изображений. Вместо 250 000 файлов для формата R0 для анимации используются всего около 6000 файлов размером 512 х 512 пикселей и 1500 файлов размером 256 х 256 пикселей. Время рендеринга тем самым сокращается на десять 12-ядерных компьютеров от 1 до 5 дней за один квадратный метр 3D дисплея вместо от 4 до 20 дней.