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

2 вопроса...

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

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

    Вот никак не найду как в темплейте:
    1. Писать в риб кроме как через ribattribute (аля RIBBox из misc.slim);
    2. Если никак (вроде так и есть), то как из тела одного параметра темплейта узнать значение (и т.п.) другого???

    поможите уж...
     
  2. Guest

    Во-первых, смотря чего ты в риб хочешь написать? Существует много способов записать в риб нужную тебе информацию, наиболее продвинутый способ - rib-generator. Но это требует знания С++ и API рендермена.

    Потом есть такая фишка access output, параметр имеющий это свойство виден снаружи. Тоесть - пример у меня в источнике света (в шейдере для света) есть параметр _fogLight, имеющий свойство access output, я могу в шейдере для объемного света volume shader FogLight сделать вызов этого параметра (проверка) - lightsource ("_fogLight", foglight). Что сие значит? А это значит, что volume shader FogLight, который я написал заранее. Будет опрашивать все источники света в сцене и если у источника света есть аттрибут _fogLight, тогда функция lightsource возвращает значение 1 и присваивает переменной foglight значение параметра _fogLight, то есть один шейдер спрашивает у другого значение нужного ему параметра.

    А вообще доку почитай - это там есть и еще книжку "Advanced Renderman", очень полезно. :))
     
  3. Guest

    только не все так шоколадно :(
    Дисплейс ни у кого ничо спросить не сможет.
    Сурф может спросить только у дисплейса и лампочки.
    Волуму ответят все.
    А вот лампочка где попало не дает....только в специально
    отведенных для етого местах (illuminance)
    Ходят слухи что в 11 даже сурфы промеж собой общаться смогут...
    Ето правда?
     
  4. Guest

    11 еще не видел - может у кого бета и была, я пока это дело не юзал. Конечно про то кто у кого чего может спрашивать правильно - я вообще посоветовал человеку доку почитать. Вопрос вообще-то христоматийный, а книжки люди почему-то не любят читать, странно, очень увлекательное занятие на любом уровне знаний. А будет здорово если сурфы друг с другом смогут общаться. Много интересных фишек можно будет смастерить...
     
  5. Guest

    to bog:

    немного другая ситуация... Нужно что-то типа RIBBox, но: в нем есть несколько параметров (a, b, c ...), и там же есть ribattribute string ribString, содержимое которого и вставляется в риб. Собственно вопрос: можно ли в ентот самый ribString вставить например sin(a)+b/c, и как???
    в армане про слим вроде маловато;)))

    to Andrew V.K.:

    насколько я понял в 11-ом общаться смогут вообще все!)
     
  6. Guest

    Ты имеешь в виду RibBox или RibArchive, это немного разные вещи? Или Ensemble? В RibBox'е кроме текстового аттрибута ничего нету.
     
  7. Guest

    Я имею ввиду именно RIBBox.
    Он стандартно выводит содержимое ribattribute string ribString в РИБ. Пусть я завожу в RIBBox'е еще параметр, например

    parameter float LALA
    {
    label "LALALAA"
    description "..."
    default 1
    }

    Собственно вопрос в том, ЧТО должно быть написано в ribString, чтобы в риб залить содержимое LALA? какая там конструкция...

    а суть в том, что потом ribString делается hidden и все становиться красиво и удобно...

    прошу прощения, что третий раз не могу сформулировать ответ(((
     
  8. Guest

    Самый простой пример содержимого риб-бокса:

    [if {ELEMENTTYPE == "shadow"} {return "ShadingRate 900"}]

    В случае когда считается субфрейм типа "shadow", шейдинг рейт устанавливается равным 900.

    Я так и не понял вопроса, на фиг тебе это надо? Ты конкретно опиши задачу. То что ты написал, как мне кажется, лишено смысла, зачем заводить в риббоксе новый параметр?
     
  9. Guest

    Берем этот пример... заводим в темплейте перенную ShadingRate, хайдим RibString... и теперь надо подставить значение переменной ShadingRate в RibString, например:

    [if {ELEMENTTYPE == "shadow"} {return "ShadingRate $ShadingRate"}

    но это не сработает...
    и не работает любой известный мне метод...
    ВОПРОС: что надо написать в тексте RibString, чтоб туда запарсилось значение другой переменной теплейта (например ShadingRate)???
     
  10. Guest

    Ну для такого примера, вполне можно обойтись возможностями Tcl.

    1. Создаем в slim-e Tcl-box с объявлением нужных переменных.
    (сам бох обзовем Declare_SR, например):
    variable SR1 10
    variable SR2 20

    2. Создаем Rib-box под названием world_0. В нем пишем, например
    такую пургу:
    [ if { $ELEMENTTYPE == "final" } { return "ShadingRate $SR1" } ]
    [ if { $ELEMENTTYPE == "shadow" } { return "ShadingRate [expr $SR2 + $SR1 - 5]" } ]

    И получаем в основном rib-e:
    #slim ribbox world_0
    ShadingRate 10

    А в shadow:
    #slim ribbox world_0
    ShadingRate 25
     
Модераторы: Moderator.

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