1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Как сделать position пасс в 3dsmax?

Тема в разделе "Общие вопросы", создана пользователем mantra, 2 фев 2010.

Модераторы: Артер
  1. mantra

    mantra Активный участник

    С нами с:
    15.04.2008
    Сообщения:
    250
    Симпатии:
    0
    Баллы:
    12
    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)
     
  2. GoodMan

    GoodMan Мастер

    С нами с:
    20.04.2005
    Сообщения:
    2.792
    Симпатии:
    9
    Баллы:
    254
    Ну скрипт-эффект такой написать не сложно я думаю.. Но нюансов тут может быть много:
    - записываются мировые координаты каждого пикселя или объекта?
    - делается ли это только для выделенного объекта или для всех объектов в сцене?
    - RGB значения я так понимаю записываются как float?
    - как расчитывать (отображать) отрицательные координаты?
    - антиалиаз тут получается отпадает?
    и т.п. вопросы которые могут возникнуть в процессе написания..
     
  3. mantra

    mantra Активный участник

    С нами с:
    15.04.2008
    Сообщения:
    250
    Симпатии:
    0
    Баллы:
    12
    ухты блин, надо узнать)
     
  4. mantra

    mantra Активный участник

    С нами с:
    15.04.2008
    Сообщения:
    250
    Симпатии:
    0
    Баллы:
    12
    узнал: вот что ответили

    -записываются мировые координаты каждого пикселя
    -антиалиаз тут отпадает
    -"Нюанс там только один - как записать отрицательные координаты. Надо работать только в положительном сегменте.
    Для отсчета Position pass в максе, можно использовать VRaySamplerInfoTex texture.
    В майке mental ray смог записать отрицательные координаты в .exr формат. Последний нюанс разрешен.

    ну да, в float есть и отрицательный цвет )
    32 битовый цвет прекрасно подошел бы для XYZ. Position pass это он и есть :)

    Проблема в том, что этот отрицательный цвет пишет не всякий рендер и не во всякий формат. В Hdr хоть он и 32bit, mental не пишет.
    А то, что в 32 float можно засунуть отрицательные значения и так понятно."
     
  5. GoodMan

    GoodMan Мастер

    С нами с:
    20.04.2005
    Сообщения:
    2.792
    Симпатии:
    9
    Баллы:
    254
    хех.. только я не использую Vray, я думал стандартными средствами МАХ-а попробовать..
     
  6. mantra

    mantra Активный участник

    С нами с:
    15.04.2008
    Сообщения:
    250
    Симпатии:
    0
    Баллы:
    12
    это даже лучше
     
  7. GoodMan

    GoodMan Мастер

    С нами с:
    20.04.2005
    Сообщения:
    2.792
    Симпатии:
    9
    Баллы:
    254
    попробую что-нибудь такое написать на выходных :cool:
     
  8. mantra

    mantra Активный участник

    С нами с:
    15.04.2008
    Сообщения:
    250
    Симпатии:
    0
    Баллы:
    12
    интересно буду ждать)
     
  9. GoodMan

    GoodMan Мастер

    С нами с:
    20.04.2005
    Сообщения:
    2.792
    Симпатии:
    9
    Баллы:
    254
    Кое что выходит - но есть вопросы и предложения..

    1. Во-первых скрипт будет строить позишн-пасс только для пикселей геометрических объектов. Т.к. он использует функцию пересечения (по сути прямой рэй-трайсинг) который "пуляет" лучем с камеры и распознает пересечения только с геом. поверхностями..
    Ну и тут соотв. вопрос - что делать с лучами которые ничего не пересекают.. Пока я им (пикселям) присваиваю нулевые значения.

    2. Сохранять в hdr или exr или любой другой 32 или даже 64 bit-ный формат не проблема.. Но эти форматы сразу преобразуют эти значения в свой диапазон - т.е. клампят.
    Получается что-то вроде этого [-12543.343, 50.0, 1932.34] -> [0.243, 0.004334, 431.0].
    Вообщем суть в том что они после этого в любом случае уже не читаемы..

    Может проще сохранять в какой-нибуть ASCII подобный формат. Грубо говоря как обычный txt где в каждой строке будет записаны координаты каждого пикселя. А количество строк будет ровнятся высоте картинки.
    Я думаю что если этот файл потом будет читаться скриптом - то так будет даже проще.
    Мне бы например было легче написать читалку такого файла чем какого-нибудь hdr :)
     
  10. Alexander Dvorovenko

    Alexander Dvorovenko Активный участник

    С нами с:
    26.02.2007
    Сообщения:
    54
    Симпатии:
    0
    Баллы:
    5
    тема очень интересная, я вот что нашел. позишен пасс для врей

    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
     
  11. mantra

    mantra Активный участник

    С нами с:
    15.04.2008
    Сообщения:
    250
    Симпатии:
    0
    Баллы:
    12
    надо попробовать
     
Модераторы: Артер

Поделиться этой страницей