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

Управление настройками Vray при помощи скрипта

Тема в разделе "MAXScript", создана пользователем Di_di_0, 18 июн 2010.

Модераторы: Savin Denis
  1. Di_di_0

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

    С нами с:
    08.12.2007
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    5
    Здравствуйте! Меня интересует вопрос можно ли задать параметры рендера VRAY при помощи скрипта? Стоит следующая задача: отрендерить картинку на маленьком разрешении 640х480 и сохранить карту освещения(Irradiance map) в файл, потом отрендерить эту же картинку но сбольшим разрешением, используя ранее сохраненную карту освещения, затем повторить это для других камер.
    Буду очень благодарен если поможете, потому что ойкак неохота сидеть на работе всю ночь и проделывать эти манипуляции вручную.
     
  2. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Можно, список функций можно получить:
    Код:
    vr=renderers.current
    
    showproperties vr 
    Как отрендерить читай в хелпе по скрипту.

    Для примера можно глянуть готовые скрипты на эту тему:
    VrayMultiStageRender ( VrayMultiCamRender )
    V-Ray Irradiance Map Pre Calc
     
  3. Di_di_0

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

    С нами с:
    08.12.2007
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    5
    Спасибо! Практически "showproperties vr" все что было нужно, а дальше дело техники,
    Немного поразбиравшись сообразил следующее:

    vr = renderers.current
    vr.gi_on = true
    vr.gi_irradmap_preset = 1
    vr.adv_irradmap_mode = 0
    vr.adv_irradmap_autoSave = on
    vr.adv_irradmap_switchToSavedMap = on

    vr.adv_irradmap_autoSaveFileName = "d:/irmap_cam02.vrmap"
    render camera:$camera01 outputwidth:640 outputheight:480 outputfile:("D:/testrender_camera02.png") vfb:eek:n

    vr.adv_irradmap_mode = 2
    vr.adv_irradmap_loadFileName = "d:/irmap_cam02.vrmap"
    render camera:$camera01 outputwidth:1600 outputheight:1200 outputfile:("D:/testrender_camera02.png") vfb:eek:n


    Вроде делает то что нужно. Достаточно просто менять номер камеры
    и имя выходного файла.
    Может кому пригодится. )


    Готовые скрипты поизучаю еще, может еще интерфейс какой сделаю. Спасибо еще раз!
     
  4. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
  5. Black Sphinx

    Black Sphinx Знаток

    С нами с:
    05.09.2003
    Сообщения:
    234
    Симпатии:
    1
    Баллы:
    29
    На самом деле, на эту тему можно вообще не заморачиваться ))

    В доке на VRay сказано, что подобный финт с предварительным расчетом IR-мапы в малом разрешении эквивалентен обычному рендерингу с пониженными параметрами Min/Max rate для IR-мапы.

    Предпоследний вопрос в разделе FAQ официальной on-line документации по VRay.
     
  6. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Таки да доки иногда полезно читать. )
     
  7. Di_di_0

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

    С нами с:
    08.12.2007
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    5
    Не знаю. Пробовал я этими min/max rate заморачиваться, результат совсем не понравился, а так (когда просчитываешь освещение на маленькой картинке) весьма достойно получается.
     
  8. Di_di_0

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

    С нами с:
    08.12.2007
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    5
    Люди, спасайте. Вдруг очень срочно понадобилось применить это к анимации, пробую следующий скрипт:

    for nf in 1685 to 1687 do
    (
    sliderTime = nf
    vr = renderers.current
    vr.gi_on = true
    vr.gi_irradmap_preset = 4
    vr.adv_irradmap_mode = 0
    vr.adv_irradmap_autoSave = on
    vr.adv_irradmap_switchToSavedMap = on
    vr.options_dontRenderImage = on
    vr.adv_irradmap_autoSaveFileName = "d:/temp/irmap_cam02.vrmap"
    render camera:$camera01 outputwidth:240 outputheight:192 vfb:eek:ff


    vr.options_dontRenderImage = off
    vr.adv_irradmap_mode = 2
    vr.adv_irradmap_loadFileName = "d:/temp/irmap_cam02.vrmap"
    render camera:$camera01 outputwidth:720 outputheight:576 outputfile:("D:/temp/testrender_camera01"+nf+".jpg") vfb:eek:n
    )


    но он выдает, что не может nf в string конвертировать. Подскажите пожалуйста, как можно еще номер кадра в имя выходного файла засунуть!
     
  9. Di_di_0

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

    С нами с:
    08.12.2007
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    5
    извиняюсь, рано панику поднял, попробовал на угад заместо nf написать (nf as string) и все заработало
     
  10. Di_di_0

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

    С нами с:
    08.12.2007
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    5
    Здравствуйте! Вот появился еще вопрос, собственно этот глюк был и раньше с самого начала, но я на него закрывал глаза, а тут нужно вдруг стало чтоб все корректно было.
    -----------------------------------------------------
    renderers.current = RendererClass.classes[4]()
    vr = renderers.current
    vr.gi_on = true
    vr.gi_irradmap_preset = 1 -- эта строчка делает very low
    vr.adv_irradmap_mode = 0
    ------------------------------------------------------------

    Так вот, выделенная строчка делает пресет very low, но начинаешь рендерить, а он рендерит как будто high т.е. считает ирмапу в 4 прохода, а должен то в 2.
    если зайти в настройки рендера, и в ручную поменять на другой пресет, а потом вернуть так же вручную very low, то все становится нормально.

    Тот же глюк заметил когда начинаешь менять материалы через скрипт, в частности текстуру tiles.
    -------------------------------------------------------------------
    meditMaterials[1] = VRayMtl ()
    meditMaterials[1].Diffuse = color 239 226 198
    meditMaterials[1].name = "brick_yellow_uvw400x1040"
    meditMaterials[1].texmap_diffuse = Bricks ()
    meditMaterials[1].texmap_diffuse.Tile_Type = 1 -- эта строчка делает running bond
    ---------------------------------------------------------------------
    на самом деле он не делает running bond, а только пишет что сделал, нужно заходить и вручную повторять операцию.
    Кто-нибудь может ли что-нибудь посоветовать?
     
  11. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    С прессетами там через одно место сделано, у меня работает такая конструкция :
    Код:
    MatEditor.Open()  --open the material editor.
    medit.SetActiveMtlSlot 1 true --set slot 3 as the active 
    m  = Standard()
    t = Bricks()
    m.diffuseMap =  t
    meditMaterials[1] = t
    activeMeditSlot = 1
    t.Tile_Type = 5
    activeMeditSlot = 1
    activeMeditSlot = 2
    activeMeditSlot = 1
    
     
  12. Di_di_0

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

    С нами с:
    08.12.2007
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    5
    Спасибо, интересная идея, по сути тоже, только через переменные. Все работает в данном случае.
    Попробовал перебить на виреевский мат, и снова по старому. Пишет одно, а на самом деле другое.
    -----------------------------------------------------
    MatEditor.Open() --open the material editor.
    medit.SetActiveMtlSlot 1 true --set slot 3 as the active
    m = VRAYMTL()
    t = Bricks()
    m.TEXMAP_DIFFUSE = t
    meditMaterials[1] = m
    activeMeditSlot = 1
    t.Tile_Type = 1
    activeMeditSlot = 1
    ----------------------------------------------------------
    Блин, чёж он хочет то?
     
  13. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Вот здесь не надо на m менять, оставь t
    И ниже трюк переключением слотов также нужен.

    Если нужно посмотреть, назнач материал в другой слот.
     
  14. Di_di_0

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

    С нами с:
    08.12.2007
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    5
    Т.е. Получается так?

    meditMaterials[1] = t

    meditMaterials[2] =m

    Слушай, а для чего слоты переключать? я так понял что это просто выделение их.

    А в настройках рендера с переменными проканает или там уже ничего не сделаешь?
     
  15. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    1. Да
    2. Это шаманство чтобы проклясть криворуких програмистов автодеска, еще помогает обновить параметры, не пытайся понять его умом.
    3. Vray не стоит, поэтому тут помочь не могу, нужно пробовать.
    Если там перессет просто выставляет параметры до корых можно добрасться через скрипт, то просто установи их сам.
     
Модераторы: Savin Denis

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