position pass выглядет следующим образом: в цвет каждого пикселя записываются его мировые координаты. Red - X world position, Green - Y world position, Blue - Z world position. Можно конечно и поменять последовательность, но RGB -> XYZ всетаки наглядней.
В майе мировые координаты каждого пикселя можно получить нодой sampler info. Цепляем на red канал свойства Incandence -> samplerinfo.pointworldX, на green->samplerinfo.pointworldY, на blue->samplerinfo.pointworldZ)
Ну скрипт-эффект такой написать не сложно я думаю.. Но нюансов тут может быть много:
- записываются мировые координаты каждого пикселя или объекта?
- делается ли это только для выделенного объекта или для всех объектов в сцене?
- RGB значения я так понимаю записываются как float?
- как расчитывать (отображать) отрицательные координаты?
- антиалиаз тут получается отпадает?
и т.п. вопросы которые могут возникнуть в процессе написания..
-записываются мировые координаты каждого пикселя
-антиалиаз тут отпадает
-"Нюанс там только один - как записать отрицательные координаты. Надо работать только в положительном сегменте.
Для отсчета Position pass в максе, можно использовать VRaySamplerInfoTex texture.
В майке mental ray смог записать отрицательные координаты в .exr формат. Последний нюанс разрешен.
ну да, в float есть и отрицательный цвет )
32 битовый цвет прекрасно подошел бы для XYZ. Position pass это он и есть 🙂
Проблема в том, что этот отрицательный цвет пишет не всякий рендер и не во всякий формат. В Hdr хоть он и 32bit, mental не пишет.
А то, что в 32 float можно засунуть отрицательные значения и так понятно."
1. Во-первых скрипт будет строить позишн-пасс только для пикселей геометрических объектов. Т.к. он использует функцию пересечения (по сути прямой рэй-трайсинг) который "пуляет" лучем с камеры и распознает пересечения только с геом. поверхностями..
Ну и тут соотв. вопрос - что делать с лучами которые ничего не пересекают.. Пока я им (пикселям) присваиваю нулевые значения.
2. Сохранять в hdr или exr или любой другой 32 или даже 64 bit-ный формат не проблема.. Но эти форматы сразу преобразуют эти значения в свой диапазон - т.е. клампят.
Получается что-то вроде этого [-12543.343, 50.0, 1932.34] -> [0.243, 0.004334, 431.0].
Вообщем суть в том что они после этого в любом случае уже не читаемы..
Может проще сохранять в какой-нибуть ASCII подобный формат. Грубо говоря как обычный txt где в каждой строке будет записаны координаты каждого пикселя. А количество строк будет ровнятся высоте картинки.
Я думаю что если этот файл потом будет читаться скриптом - то так будет даже проще.
Мне бы например было легче написать читалку такого файла чем какого-нибудь hdr 🙂
тема очень интересная, я вот что нашел. позишен пасс для врей
You can get a world position pass using the VRaySamplerInfoTex texture http://www.spot3d.com/vray/misc/vraysamplerinfotex.rar
You can use this in a VRayExtraTex render element (but be sure to turn off the "consider for antialiasing" option).
Best regards,
Vlado
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
mantra
В майе мировые координаты каждого пикселя можно получить нодой sampler info. Цепляем на red канал свойства Incandence -> samplerinfo.pointworldX, на green->samplerinfo.pointworldY, на blue->samplerinfo.pointworldZ)
GoodMan
- записываются мировые координаты каждого пикселя или объекта?
- делается ли это только для выделенного объекта или для всех объектов в сцене?
- RGB значения я так понимаю записываются как float?
- как расчитывать (отображать) отрицательные координаты?
- антиалиаз тут получается отпадает?
и т.п. вопросы которые могут возникнуть в процессе написания..
mantra
mantra
-записываются мировые координаты каждого пикселя
-антиалиаз тут отпадает
-"Нюанс там только один - как записать отрицательные координаты. Надо работать только в положительном сегменте.
Для отсчета Position pass в максе, можно использовать VRaySamplerInfoTex texture.
В майке mental ray смог записать отрицательные координаты в .exr формат. Последний нюанс разрешен.
ну да, в float есть и отрицательный цвет )
32 битовый цвет прекрасно подошел бы для XYZ. Position pass это он и есть 🙂
Проблема в том, что этот отрицательный цвет пишет не всякий рендер и не во всякий формат. В Hdr хоть он и 32bit, mental не пишет.
А то, что в 32 float можно засунуть отрицательные значения и так понятно."
GoodMan
mantra
GoodMan
mantra
GoodMan
1. Во-первых скрипт будет строить позишн-пасс только для пикселей геометрических объектов. Т.к. он использует функцию пересечения (по сути прямой рэй-трайсинг) который "пуляет" лучем с камеры и распознает пересечения только с геом. поверхностями..
Ну и тут соотв. вопрос - что делать с лучами которые ничего не пересекают.. Пока я им (пикселям) присваиваю нулевые значения.
2. Сохранять в hdr или exr или любой другой 32 или даже 64 bit-ный формат не проблема.. Но эти форматы сразу преобразуют эти значения в свой диапазон - т.е. клампят.
Получается что-то вроде этого [-12543.343, 50.0, 1932.34] -> [0.243, 0.004334, 431.0].
Вообщем суть в том что они после этого в любом случае уже не читаемы..
Может проще сохранять в какой-нибуть ASCII подобный формат. Грубо говоря как обычный txt где в каждой строке будет записаны координаты каждого пикселя. А количество строк будет ровнятся высоте картинки.
Я думаю что если этот файл потом будет читаться скриптом - то так будет даже проще.
Мне бы например было легче написать читалку такого файла чем какого-нибудь hdr 🙂
Alexander Dvorovenko
You can get a world position pass using the VRaySamplerInfoTex texture http://www.spot3d.com/vray/misc/vraysamplerinfotex.rar
You can use this in a VRayExtraTex render element (but be sure to turn off the "consider for antialiasing" option).
Best regards,
Vlado
mantra