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

Multipass rendering

Тема в разделе "RenderMan", создана пользователем -, 13 сен 2001.

Модераторы: Moderator.
  1. Guest

    Честно говоря, после предыдущего поста от kidd-a, даже не знаю, уместно-ли снова спрашивать про alfred ;-)
    Но просто очень хотелось выяснить, кто как обустраивает subj в RAT-e.
    Проект -- 3D фона в cartoon-like стиле.
    Пока я использую такую схему для одной и той-же сцены:
    1. Рендерю сцену с cartoon shader (color pass)
    2. Для обработки контуров в Custom Renderer прописываю toon.bat файл, вызывающий prepare.pl perl-script (thanks to kidd!!!), заменяющий все поверхности на nizid: -->(prepare.pl %1|prman -progress)
    В Rendering Service -->pixarRender (иначе запускается одновременно для всех кадров несколько prman-ов !!!)
    В Custom Imager: -->(toonline.bat "50%%" ) батник, в котором вызывается perl-script, обрабатываюший и уменьшающий картинку на 50%. (ink pass)
    3. Для просчета теней опять в Custom Renderer -- shadow.bat
    -->(shadow.pl %1|prman -progress), shadow.pl заменяет все поверхности на ratBackplaneS (shadow pass).

    Несколько наворочано получается :-(
    Возможно по неведению....
    Может, кто поделится более оптимальными решениями?
     
  2. Guest

    Незнаю насчет оптимальности и скорости но поскольку
    сведение всеравно осуществляется в композере то почему бы
    просто не написать шейдер который просчитывал бы необходимую
    инфу в дополнительные файлы (ID, Normal, а ля ratBackplaneS и
    все что еще может пригодиться) одновременно с основным (Toon)
    и поручить всю работу композеру (в том числе и соболиную)
    Имеем всего 1 проход и свободу эксперементов с композеровским
    соболем.
    P.S
    А вот скейлить до 50% помоему лучше уже сведенную картинку
     
  3. Guest

    В общем случае Андрей, конечно, прав: удобнее сразу из одного риба через шейдер сразу считать в несколько файлов. Другой момент, что я, например, не знаю, как RAT'у дать понять, что надо считать в несколько файлов - RIB боксом?

    А композеровский собель имхо не лучший вариант, поскольку универсальный. Я бы предпочел что-либо более скоростное и заточенное - например, собственные программы ;-))
     
  4. Guest

    Я так понимаю, Андрей имеет в виду Display->Secondary и имя файла на User Defined variable в Mode. Так?
    Но смущает излишняя продвинутость всех шейдеров в сцене, чтобы они все отрабатывали свой результат в отдельных переменных.
    К тому же я, честно говоря, не знаю, как реализовать аналог ratBackplaneS, чтобы иметь информацию о тени :-(
     
  5. Guest

    Именно это я имел ввиду.
    Но какая там продвинутость...все очень просто и быстро.
    Простейший пример:
    http://www.render.ru/forum/read.php?f=13&i=815&t=799
    Я немного невкурсе....что делает ratBackplaneS ?
    Я как то давно делал что то типа ShadowMate (считает только тени)
    но он работал только со спецательным источником света (делается из любого методом вставки 2 строк) так как инфа о тени передавалась в сурфшейдер
    через mesage passing.
     
  6. Guest

    В догонку....про mesage passing....

    light
    shadowspot(
    ....Параметры
    ....
    ....
    ....
    ....
    output varying float __InShadow = 0; /*Первая строка*/
    )

    {
    .....
    .....
    .....
    .....
    __InShadow = shadow(shadowname, Ps, "samples", samples,"swidth",width, "twidth", width); /*Вторая строка*/
    }



    surface
    ShdCatch()
    {
    varying float Shadow;
    Shadow = 0;
    color Shd = 1;
    illuminance( P ) {
    lightsource("__InShadow", Shadow);
    Shd *= 1-Shadow;
    }
    Ci = Shd;
    }
     
  7. Guest

    ratBackplaneS, насколько мне известно, собирает тени от всех источников.
    Т.е. получается белая поверхность с черными тенями. Если все поверхности в сцене после рибогенерации заменить на subj. -- получим только картину с тенями.
    Хотя версия ShadowMate с передачей параметров от спец. источников, действительно выглядит заманчиво...
     
  8. Guest

    ....и делает то же самое (чисто белая картинка и черные тени)
    Я ее использовал в композе в режиме multipli
    Хотя в шейдер можно вставить строчку и для альфаканала:
    Oi = 1-Shd;
    Кстати __InShadow кажется уже есть во всех слимовских light темплах.
     
  9. Guest

    А ем сори.
    Облажался...
    С альфой будет бред так как ее устанавливает последний
    источник учавствующий в illuminance цикле.
    К тому же совсем забыл что источники могут быть цветными и
    в сцене могут быть другие лампочки которые
    имеют свойство убивать (высветлять) тени.
    Помоему так будет правильнее:
    surface
    ShdCatch()
    {
    varying float Shadow;
    Shadow = 1;
    color Shd = 0;
    float Mask = 1;
    normal Nn = faceforward(normalize(N),I);
    illuminance(P,Nn,PI/2) {
    lightsource("__InShadow", Shadow);
    Mask *= 1-Shadow;
    extern color Cl;
    Shd += Cl;
    }
    Ci = max(color Mask, Shd);
    }

    Делает белый фон с серо-черно-цветными тенями
    (в зависимости от условий освещения)
     
  10. Guest

    Вроде все стало ясно. Спасибо.
    Однако на практике столкнулся с траблом -- как вставить из mtor-a
    в RIB "Declare "myShadow" "varying color" ",
    чтоб он оказался до объявления Display?
    "frame" и "world" в названии RIBboxa не дотягиваются до самого начала ;-)
    Навешивать скрипт на препроцесс -- не хотелось бы...
     
  11. Guest

    "declare" для RIBboxa оказывается есть!
     
  12. Guest

    Я так мыслю, что решение вполне нормальное. Разве что можно было бы по идее не делать два вызова двух батников, а сделать оба вызова в одном батнике, типа

    prepare.pl %1|prman -progress
    shadow.pl %1|prman -progress

    чтобы оно сразу считало и инки, и тени.

    Кстати, встречный вопрос. Ink-pass считается на перле? Каким образом? Вызывается ImageMagick? imconvert? С какими параметрами?

    Ну и классический вопрос - можно посмотреть на результаты? ;-)
     
  13. Guest

    kidd wrote:
    >
    > Я так мыслю, что решение вполне нормальное. Разве что можно
    > было бы по идее не делать два вызова двух батников, а сделать
    > оба вызова в одном батнике, типа
    >
    > prepare.pl %1|prman -progress
    > shadow.pl %1|prman -progress
    >
    > чтобы оно сразу считало и инки, и тени.
    Да, а как быть с именами просчитанных файлов в таком случае?
    И кстати, prepare.pl %1|netrender %H
    почему то рендерит только на localhost :-(

    > Кстати, встречный вопрос. Ink-pass считается на перле? Каким
    > образом? Вызывается ImageMagick? imconvert? С какими
    > параметрами?
    Из перла вызывается пока (пока не дошли руки отладить свою версию;-)
    твой convert.exe, а за ним "imconvert.exe -geometry 50% ,$_,$_"

    > Ну и классический вопрос - можно посмотреть на результаты? ;-)
    Пока это на 90% готовые планы и не в финальном качестве,
    но я думаю можно...
    http://www.properstudio.com/3D/ChildRoomInkShadow.0010.jpg
    http://www.properstudio.com/3D/ChildRoomAll.0010.jpg
    http://www.properstudio.com/3D/ChildRoom-(00011).jpg
    http://www.properstudio.com/3D/ChildRoom-(00018).jpg
     
Модераторы: Moderator.

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