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

Как уменьшить или увеличить кол-во сабдивов сразу на всех матах и ИС?

Тема в разделе "VRAY", создана пользователем remuhin, 2 июл 2012.

Модераторы: morro
  1. remuhin

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

    С нами с:
    23.07.2007
    Сообщения:
    46
    Симпатии:
    0
    Баллы:
    15
    Собственно вопрос в названии.Сорри если уже спрашивали,я не нашел. Просто это морока вручную увеличивать сабдивы на всех матах,потом для черновых рендеров опять понижать - тратится куча времени.Наверняка должно быть решение?
     
  2. Anton Chernov

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

    С нами с:
    16.04.2012
    Сообщения:
    104
    Симпатии:
    19
    Баллы:
    14
  3. Лэйн Ивакура

    Лэйн Ивакура Активный участник

    С нами с:
    28.11.2011
    Сообщения:
    38
    Симпатии:
    0
    Баллы:
    5
    Без плагинов: найди в настройках vray значение Global subdivs multiplier - это некий общий множитель, на который будет умножено количество всех сабдивов сцены при просчете. Минусы этого способа очевидны
    Вообще судя по 1му посту тебе понравится плагин solid rocks http://solidrocks.subburb.com/
     
  4. Anton Chernov

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

    С нами с:
    16.04.2012
    Сообщения:
    104
    Симпатии:
    19
    Баллы:
    14
    А смысл крутить ВСЕ сабдивы сцены, когда можно только для материалов?
     
  5. Лэйн Ивакура

    Лэйн Ивакура Активный участник

    С нами с:
    28.11.2011
    Сообщения:
    38
    Симпатии:
    0
    Баллы:
    5
    ну на самом деле не все. лайт кеш, фотонные мапы, каустика и антиалиасинг не трогаются, как оказалось.
    а смысл может быть в том, что чем меньше плугов, тем обычно стабильней система. и я не пропогандирую ничего. считаю, что знать такие вещи полезно в качестве ликбеза, а там кто что выберет - дело вкуса и навыков
     
  6. remuhin

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

    С нами с:
    23.07.2007
    Сообщения:
    46
    Симпатии:
    0
    Баллы:
    15
    Да,я тоже сторонник минимализма в этом отношении.Может это и неправильно,но тоже стараюсь лишними плагинами не обрастать.Особенно при переходе на новую версию макса из-за этого начинаются траблы
     
  7. Anton Chernov

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

    С нами с:
    16.04.2012
    Сообщения:
    104
    Симпатии:
    19
    Баллы:
    14
    Зато влияет на "глубину резкости, смазывание при движении, карту освещенности, прямое вычисление GI, неточечные источники света, размытые тени".. Что, естественно, скажется на времени рендера. А отказываться от скриптов, имхо, неправильно, так как зачастую многие рутинные действия можно на них повесить. Причём обычные скрипты, без использования .NET, обычно прекрасно работают на любых версиях макса. К примеру, вот код для изменения сабдивов на отражения всех материалах (VrayMtl):
    Код:
    for i in scenematerials do (
    	if classof i == VrayMtl then i.reflection_subdivs = 20
    )
     
  8. remuhin

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

    С нами с:
    23.07.2007
    Сообщения:
    46
    Симпатии:
    0
    Баллы:
    15
    Ну да,поспорить трудно.Честно говоря я наверное просто не разбираюсь ,поэтому и сужу опрометчиво.Стоит попробовать расширить свой кругозор
     
  9. Нина Волошина

    Нина Волошина Пользователь сайта

    С нами с:
    31.08.2012
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    2
    Я не разбираюсь в программировании но у меня есть задача взять большую библиотеку материалов 3,5Гб и подготовить её для анимации, т.е. надо на всех материалах сделать кол-во сабдивов 8 и на рефлекшн и на рефракшн. В ручную каждый материальчик открывать, менять там сабдивы на 8 и пересохранять и так около 10000 раз это слишком долго...практически не возможно. На форуме нашла скрипт для смены сабдивов на рефлекшн, а что нужно к нему добавить что б он менял оба параметра и рефлект и рефракт и сохранял переделанный материал обратно в библиотеку?

    На форуме есть ссылка на подобный скрипт "Vray subdiv optimizer" но с 2009 максом он не работает к сожалению...а мне нужно подготовить материалы как раз к 2009 максу....Помогите не знаю что делать..)
     
  10. Anton Chernov

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

    С нами с:
    16.04.2012
    Сообщения:
    104
    Симпатии:
    19
    Баллы:
    14
    Ответил в личку
     
  11. Black Sphinx

    Black Sphinx Знаток

    С нами с:
    05.09.2003
    Сообщения:
    234
    Симпатии:
    1
    Баллы:
    29
    К сожалению скрипт из поста #7 работает некорректно. Причины две. (1) Перебираются только материалы сцены (т.е. материалы, которые уже назначены объектам), но игнорируются неназначенные материалы в редакторе материалов и библиотеках материалов. Но это мелочь. (2) Скриптом будут изменены только материалы, имеющие первичный тип VRayMtl. Материалы типа VRayMtl, которые выступают в роли подматериалов, изменены не будут. Например подматериалы в материале типа Multi/Sub-Object или VRayOverrideMtl. Что есть совсем нехорошо.

    Я попробовал накидать усовершенствованную версию скрипта, лишённого этих недостатков.
    Код:
    mat_ary = #()
    
    fn searchMat a_mat a_mary = (
    	if classOf a_mat == VRayMtl then (
    		append a_mary a_mat
    	)
    	else (
    		if ((isKindOf a_mat material) or (isKindOf a_mat ArrayParameter) or (isKindOf a_mat Array)) do (
    			props = getPropNames a_mat
    			for p in props do (
    				prop_value = getProperty a_mat p
    				case of (
    					(isKindOf prop_value material): searchMat prop_value a_mary
    					((isKindOf prop_value ArrayParameter) or (isKindOf prop_value Array)): for par in prop_value do (searchMat par a_mary)
    				)
    			)
    		)
    	)
    )
    
    for mat in sceneMaterials do (
    	searchMat mat mat_ary
    )
    
    for mat in meditMaterials do (
    	searchMat mat mat_ary
    )
    
    for mat in currentMaterialLibrary do (
    	searchMat mat mat_ary
    )
    
    for mat in mat_ary do (
    	format "\"%\"(%)\n" mat.name ((classOf mat) as string)
    --
    -- сюда надо добавить осмысленное действие, выполняемое для каждого материала mat, например
    --        mat.reflection_subdivs = 20 
    --
    )
    Не могу гарантировать, что скрипт будет корректно обрабатывать абсолютно все случаи - на тщательное тестирование просто нет времени, но, чисто идейно, должен работать :p

    Скрипт собирает в массив mat_ary все найденные материалы типа VRayMtl (возможно наличие нескольких инстансов одного материала!) и в последнем цикле for обрабатывает найденные материалы. Сейчас скрипт просто выводит в окно Listener'а для каждого найденного материала его имя и класс.

    Материалы ищутся среди материалов сцены (sceneMaterials), материалов в редакторе материалов (meditMaterials) и в текущей библиотеке материалов (currentMaterialLibrary). Если в каком-то из этих мест искать не надо, то можно просто закомментировать нужный цикл.
     
Модераторы: morro

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