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

Projections in RibArchive

Тема в разделе "RenderMan", создана пользователем -, 31 июл 2002.

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

    Привет всем!
    Можно ли в принципе устроить так, что бы в шейдер использующий slim-овскую проекцию в RibArchive (DelayedRibArchive) подставлялась уникальное имя координатной системы для каждого инстанса?
    Понимает ли DelayedRibArchive stdout вместо rib-файла?
    Пока я притормозил пытаясь запустить perl-скрипт дублирующий в stdout содержимое rib-a:
    Procedural "RunProgram" \["perl.exe test.pl" "Rib_arch/vcr-6.rib"\] \[...\]
    Prman просто молчит и ничего не делает.

    Может попытка править rib "на лету" не самое правильное решение?

    Спасибо.
     
  2. Guest

    Идея такова...

    Первое ...

    Возмоно это и не нужно ... Зачем может обеснить плиз ????...
    Если ты хочеш повесить текстуру на прожекше то координатная система будет перопределятся для каждого подвложеного куска риба ..Тоесть для каждой лятяшй тарелки с шейдром со ссылкой на координатную сиестему xxx она будет в превильно и хорошем месте ...

    Второе ...

    В конце работы test.pl нужно напечатать \n\377
    Что бы прман понимал конец потока .... И закрывал его, ну поток ...
    ---
    print "\n\377";
    ---

    А впринуципер править риб на лету всегда куртуо если это не очень долго и рибов мало ... :)
     
  3. Guest

    Да все очень просто, с виду ;-)
    Идея, чтобы подставлять один и тот риб-архив для кучи прокси объектов.
    В архиве объект с шейдером использующим "coordsys SysShapeName" для проекции в SurfacePoint.
    Пока у меня рендерится правильно только последний объект :-(

    А c Procedural "RunProgram" странности.
    test.pl:
    foreach (<>) {
    print;
    }
    print "\n\377";

    RibBox:
    Procedural "RunProgram" \["perl.exe test.pl" "Rib_arch/vcr-6.rib"\] \[[mattr "$OBJPATH.boundingBoxMinX" $f] [mattr "$OBJPATH.boundingBoxMaxX" $f] [mattr "$OBJPATH.boundingBoxMinY" $f] [mattr "$OBJPATH.boundingBoxMaxY" $f] [mattr "$OBJPATH.boundingBoxMinZ" $f] [mattr "$OBJPATH.boundingBoxMaxZ" $f]\]

    Prman доходит до первого BoundingBox и замирает :-(
    Вроде ж все правильно!!!
     
  4. Guest

    Так еще раз ...Только что делал подобные весши ..У меня тут машинки летают как в пятом элементе :) ..

    Идея такова ...

    Выделяем в риб оббект вместе с координатной системой и говорим экспорт выделенного ну и там типа Mtor_Rib_Archive (или как эго там) .. Тобиш в рибе вышло ...
    ----
    AttributeBegin
    TransformBegin
    ConcatTransform [aaaa]
    CoordinateSystem "MersCsRedShape"
    TransformEnd
    AttributeBegin

    Surface "flatshader/carBody" XXX "string place_Space" [ "MersCsRedShape" ]
    <Geometry>

    AttributeEnd

    xxxxxxxx

    AttributeEnd
    ----

    Ну и все потом будет шеколадно чесное слово...




    Так ответ на вторую часть ...

    Идея такова ... Как писать правильно писать я не знаю..
    Но делать по опыту нужно так ....

    ---Rib'box--
    Procedural "RunProgram" \["perl $WSRoot/scripts/test.pl $WSRoot/Rib_arch/vcr-6.rib $OBJNAME" ""\] \[[mattr "$OBJPATH.boundingBoxMinX" $f] [mattr "$OBJPATH.boundingBoxMaxX" $f] [mattr "$OBJPATH.boundingBoxMinY" $f] [mattr "$OBJPATH.boundingBoxMaxY" $f] [mattr "$OBJPATH.boundingBoxMinZ" $f] [mattr "$OBJPATH.boundingBoxMaxZ" $f]\]
    ---Rib'box--

    1. первое нужно указать полный путь до ресурсов (скрипт+ входные данные)...
    2. Не использовать вторые ковычки ....За их не понятной работой в дальнейшем .. Это долгий разговор ...
    3. Переменная $OBJNAME используется для создания уникального вызова в рибе ... Типа если повторяется, то будет глючить и повисать как у тебя..

    (вообшем пункты 2 и 3 можно не обойти если вы пишите на C++ если нет, то просто вначале запускается cmd, а потом и perl вообшем с этим то и проблема .. Ну ладно это вообшем совсем длинный разговор...)

    ---test.pl--
    $Rib =$ARGV[0];
    open (RIB,$Rib);
    foreach (RIB) {
    print $_;
    }
    print "\n\377";
    ---test.pl--
     
  5. Guest

    Сорри за беспокойство. Таки разобрался наконец :p
    Дело в том, что все нормально экспортилось только видно этого не было.
    Проекция была чуть больше прокси-объекта по которому считается баунд,
    а текстура была с клампом. И когда объекты складывались рядом, текстура
    с последнего архива клампилась на рядом стоящие.
    Такой себе артифакт :-(
    Переименование на лету не потребовалось ;-)
    Хотя перловый скрипт тоже заработал в "RunProgram" .
    Ругнулся правда на open (RIB,$Rib); но с foreach (<>) все пошло...

    Спасибо огромное, еще раз!
     
  6. Guest

    Ну и круто ... Вообшем ... :)

    Сори уточненный текст "программы" таков .... :)

    ---
    open (FL,$ARGV[0]);
    while (<FL>) {
    print $_;
    }
    close (FL);
    print "\n\377";
    ---
     
  7. Guest

    Вобщем переименовывать все же приходится :-(
    Потому как объекты с одинаковым проекциями все равно нужно отводить друг от друга на разные расстояния.
    Для одной проекции скрипт получился такой:

    # cs_replace_1.pl
    # This script replaces mtor coordinate system name
    # in RIB archive file $ARGV[0] with string $ARGV[1]

    $new_name = $ARGV[1]."_sys";
    open (IN,$ARGV[0]);
    foreach (<IN>) {
    if (/CoordinateSystem "/) {
    ($op_str, $old_name) = split(/"/);
    }
    if ($old_name && /$old_name/) {
    s/$old_name/$new_name/g;
    }
    print $_;
    }
    close (IN);
    print "\n\377"; # close input stream

    Главное, что работает и достаточно шустро.

    Хотя, в идеале, нужно бы иметь возможность обрабатываь N (ну или M)
    проекций.
    Но пока времени нет доки по Perl-у читать и да и проблема такая не стоит ;-)
    Пока ;-)
     
  8. Guest

    Все забыл написать ...

    Сори типа этого всего делать вооьбшето не надо .. Если конечно есть prman 10... :)


    Идея такова нужно использоватьб новую байду вместо старой
    ---
    ScopedCoordinateSystem "xxxx"
    ---

    читать тут ..

    /Pixar/docs-5.0/prman_technical_rendering/userManual/user6.html#scopedcoordsys

    Тех процесс такой берем обект с координатной(ыми) ситсемой(мами) быделяем экспортим риб .. Потом правим риб руками ... Тобиш CoordinateSystem "xxxx" заменяем на ScopedCoordinateSystem "xxxx" и все ...
    Рендрим "истансированые" обеткты и все ок !!!!

    Сори твайс за опоздание обеснение .. Я типа забыл ..:)
     
  9. Guest

    Во как полезно оказывается старые посты просматривать!
    Спасибо за инфу.
    Я для предыдущей методики уже и скрипт для N-проекций написал :-(
    Оказывается -- уже неактуально.
    Но во всяком случае -- поучительно ;-)
     
Модераторы: Moderator.

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