Здравствуйте, все!
Часто пользуюсь максскриптом для рендера своих сцен. Т.е. прописываю поочередно камеры положение светильника, потом оставляю рендериться на ночь. Но часто бывает так что на одной из камер выскакивает ошибка, и с этой ошибкой он простаивает до утра, ждет пока я приду и нажму ок или cancel. Причем если нажать ок то макс просто выключается, а если cancel, то начинает рендерить следующую камеру.
Так вот можно ли прописать, что при возникновении ошибки нажать отмену? Так бы с утра один ракурс перерендерить и все ок. Скрин ошибки пока не делал, но помню что в листенере она прописавается как UNKNOWN SYSTEM EXCEPTION. Подскажите пожалуйста, а то реально напрягает, думаешь что все готово, а он стоит ,сабака, ждет пока нажмешь.
Опять она вылезла, ошибка эта. Хочу извиниться не совсем верно прописал ее в первом сообщении. В листенере она вообще не видна оказывается, а видно ее в окне VrayLog. Заметил что эта табличка как бы отдельно от макса выскакивает, т.е. макс просто останавливается, все окошки двигаются мышкой, и при выделении окна макса, табличка с ошибкой уходит на задний план как будто вообще не причем. Ну неужели нельзя ничего сделать?
Блин чего-то скрины не получается прикрепить.
На табличке написано следующее:
UNHANDLE EXCEPTION: Rendering image
Last marker is at? \src\globillummap. cpp, line 1580:
GlobalIllumMap::BuildLightMap() {5}
Please note that although this error is generated by V-Ray, it may not be
V-Ray that caused it.
If you feel it is V-Ray that caused this error, please send the file c:/vraylog,txt
and, if possible, (a part of) your scene to vray@chaosgroup.com
Press Cancel to abort rendering or Ok to continue
И дальше как я уже говорил 2 кнопки ок и сancel, причем если нажать ок то макс вырубается, а если cancel, то начинает рендерить следующую камеру.
Жду советов.
Не спасло!
Опять поставил с вечера 12 камер, с утра прихожу, стоит камера 02, и опять эта ошибка. Нажал cancel начала рендерить камеру03, и так до конца.
Что интересно, когда рендеришь в ручном режиме, не через скрипт, эта ошибка не вылезет никогда, а через скрипт - можно ждать в любую секунду.
Гляньте сам скрипт, где он там может ошибку спровоцировать, ума не приложу. Вроде проще не бывает. Кстати пробовал на разных компиках, Такое случается везде, даже при искользовании другого скрипта, "utility camera render". И еще помню выскакивала такая-же ошибка при рендере через backburner, но он при обрыве рендера повторяет попытку автоматически, а со второй попытки она нормально дорендеривается.
Про анимированную камеру думал, но никак руки не дойдут пока, Попробую в ближайшее время. Но лучше все-таки придумать как эту ошибку отловить.
Вообще я так понял, что либо это невозможно, либо нереально сложно?
Еще такая мысль - можно ли прописать время рендера. Допустим если рендер не закончился за 3 часа, то обрывать его и начинать заново?
Несколько вариантов можно пробовать:
первое - переменные лучше переименовать не брать постоянно "С" для всех камер . А взять другие буквы a,b,c,d ... необязательно конечно но лучше в разных переменных хранить данные, а не перезаписывать.
1. Напрямую через рендер команду (буду писать к одной камере) :
c= $camera01
render camera:c outputwidth:dimx outputheight:dimy outputfile🙁dirr+rn+c.name+frm) vfb:vkl quiet:true
Еще такой момент нужно скрины глянуть настроек Mode: для примари и секондари баунс.
Потомучто в ошибке он жалуется на
Last marker is at? \src\globillummap. cpp, line 1580:
GlobalIllumMap::BuildLightMap() {5}
Если так не получится попробуем закрывать окно напрямую вроде есть Callback который это может делать.
Спасибо за совет! Потестирую. Про try()catch() интересная задумка.
По настройкам рендера.
В Primary стоит Irradiance map, vеry low, single frame
В Secondary - Ligthcash, single frame
И dinamic memory limit - 50000
Все остальное стандартные настройки. ничего больше не трогал.
Но кажется настройки здесь не причем, потому что иногда рендер при помощи фотонов тем же заканчивается.
Вариант закрытия окна через hwnd :
-------------------------------------------------------------------------------------------------------------
--начало
fn ErrorHandle = (
local windowHandle = DialogMonitorOPS.GetWindowHandle()
if (windowHandle!=0)
then (
UIAccessor.PressButtonByName windowHandle "(ТУТ НАЗВАНИЕ КНОПКИ КОТОРУЮ НУЖНО ЗАКРЫТЬ "OK" , "CANCEL" и в т.п.)"
)
DialogMonitorOPS.Enabled =true
DialogMonitorOPS.RegisterNotification ErrorHandle id:#dyeError
-- начало твоего кода ------------------------------------------------------------------------
dimx=1600
dimy=1200
vkl = on
dirr = "d:/script_render/"
rn = "enlik_spalnya_N1_newvar1_"
frm = ".jpg"
c= $camera01
render camera:c outputwidth:dimx outputheight:dimy outputfile🙁dirr+rn+c.name+frm) vfb:vkl
c= $camera02
render camera:c outputwidth:dimx outputheight:dimy outputfile🙁dirr+rn+c.name+frm) vfb:vkl
c= $camera03
render camera:c outputwidth:dimx outputheight:dimy outputfile🙁dirr+rn+c.name+frm) vfb:vkl
c= $camera04
render camera:c outputwidth:dimx outputheight:dimy outputfile🙁dirr+rn+c.name+frm) vfb:vkl
c= $camera05
render camera:c outputwidth:dimx outputheight:dimy outputfile🙁dirr+rn+c.name+frm) vfb:vkl
--конец твоего кода --------------------------------------------------------------------------------
DialogMonitorOPS.UnRegisterNotification id:#dyeError --внизу про них
DialogMonitorOPS.Enabled =false
-- начало твоего кода --------------------------------------------------------------------------------
quitMAX (#noPrompt)
--DOSCommand "shutdown -s -f"
--конец твоего кода--------------------------------------------------------------------------------
P.S. Сразу предупреждаю, что пока эти строки(пометка вверху) не запустятся будут все окна обрабатываться даже полезные, там где кнопка будет с таким именем которое задано.
Поэтому quiet:true лучше всего прописывать в основном коде.
Извиняюсь за назойливость, но у меня он почему-то не работает. Если запускаешь скрипт то ничего не происходит, и камеры прописаные на рендер не пускаются, а после этого вообще максскрипт отключается, т.е. любые комманды прописываешь в листенере, либо в новом скрипте, и ничего не работает. До тех пор пока макс не перезапустишь. Может у тебя версия макса другая? У меня 2010, операционка windows7.
Скобку забыл в функции закрыть 🙁 Попробуй так . yesNoCancelBox "BoxYES" messageBox "OK" эти можешь потом убрать я так для теста оставил.Тестил в 2011. Файлы рендерятся сохраняются , все поп-ап окна закрываются в процессе.
--------------------------------------------------------------------------------------------------
DialogMonitorOPS.UnRegisterNotification id:#dyeError
fn ErrorHandle = ( local windowHandle = DialogMonitorOPS.GetWindowHandle()
if (windowHandle!=0) then ( UIAccessor.PressButtonByName windowHandle "cancel" ) )
Затестил! Вроде все работает! Закрывает даже сами окна рендера. Спасибо за труды надеюсь еще кому-нибудь пригодится.
Одно смущает, когда вылазит мессаджбокс, он находится сверху окна макса, т.е. пытаешься нажать где-то кроме кнопки ок, он пикает и табличка мигает. А когда та ошибка вылазит она как будто сама по себе, можно выделить окно макса, и сообщение об ошибке уходит на задний план, можно подвигать окна с рендерами, что-нибудь сворачить или закрывать. Пока не нажмешь что-нибудь на той табличке. В любом случает потестирую еще, глядишь в ближайшее время узнаю результат.
Ошибка сама по себе потому, что это ошибка конкретно вирея, а не макса в целом.
Он просто как модуль отваливается, а макс может быть работоспособен.Хотя часто он грохается вместе с плагином инициатором ошибки.
UNHANDLE EXCEPTION: Rendering image
Last marker is at? \src\globillummap. cpp, line 1580:
GlobalIllumMap::BuildLightMap() {5}
Чтото с методом в С++ файле происходит. По какимто причинам он не может построить лайтмап после первого рендера.
Как скрипт будет окна закрывать нужно пробовать, надеюсь что мониторинг не будет делить на "чужих" "своих".
Долго тестировал, такое ощущение было даже, что вообще перестал этот глюк происходить, как данный скрипт применил. Но вот наконец то и произошло.
Он на самом деле не делит на чужих и своих, закрывает все подряд. Но видимо нажимает всетаки "ок", потому что макс сразу вырубается. Хотя прописано "cancel".
Буду думать.
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
Di_di_0
Часто пользуюсь максскриптом для рендера своих сцен. Т.е. прописываю поочередно камеры положение светильника, потом оставляю рендериться на ночь. Но часто бывает так что на одной из камер выскакивает ошибка, и с этой ошибкой он простаивает до утра, ждет пока я приду и нажму ок или cancel. Причем если нажать ок то макс просто выключается, а если cancel, то начинает рендерить следующую камеру.
Так вот можно ли прописать, что при возникновении ошибки нажать отмену? Так бы с утра один ракурс перерендерить и все ок. Скрин ошибки пока не делал, но помню что в листенере она прописавается как UNKNOWN SYSTEM EXCEPTION. Подскажите пожалуйста, а то реально напрягает, думаешь что все готово, а он стоит ,сабака, ждет пока нажмешь.
Di_di_0
Блин чего-то скрины не получается прикрепить.
На табличке написано следующее:
UNHANDLE EXCEPTION: Rendering image
Last marker is at? \src\globillummap. cpp, line 1580:
GlobalIllumMap::BuildLightMap() {5}
Please note that although this error is generated by V-Ray, it may not be
V-Ray that caused it.
If you feel it is V-Ray that caused this error, please send the file c:/vraylog,txt
and, if possible, (a part of) your scene to vray@chaosgroup.com
Press Cancel to abort rendering or Ok to continue
И дальше как я уже говорил 2 кнопки ок и сancel, причем если нажать ок то макс вырубается, а если cancel, то начинает рендерить следующую камеру.
Жду советов.
JBond
Вложения
Di_di_0
Di_di_0
Опять поставил с вечера 12 камер, с утра прихожу, стоит камера 02, и опять эта ошибка. Нажал cancel начала рендерить камеру03, и так до конца.
Что интересно, когда рендеришь в ручном режиме, не через скрипт, эта ошибка не вылезет никогда, а через скрипт - можно ждать в любую секунду.
У кого нибудь есть предположения?
JBond
Надо его тогда смотреть
iVAt
Di_di_0
-------------------------------------------------------
dimx=1600
dimy=1200
vkl = on
dirr = "d:/script_render/"
rn = "enlik_spalnya_N1_newvar1_"
frm = ".jpg"
c= $camera01
render camera:c outputwidth:dimx outputheight:dimy outputfile🙁dirr+rn+c.name+frm) vfb:vkl
c= $camera02
render camera:c outputwidth:dimx outputheight:dimy outputfile🙁dirr+rn+c.name+frm) vfb:vkl
c= $camera03
render camera:c outputwidth:dimx outputheight:dimy outputfile🙁dirr+rn+c.name+frm) vfb:vkl
c= $camera04
render camera:c outputwidth:dimx outputheight:dimy outputfile🙁dirr+rn+c.name+frm) vfb:vkl
c= $camera05
render camera:c outputwidth:dimx outputheight:dimy outputfile🙁dirr+rn+c.name+frm) vfb:vkl
quitMAX (#noPrompt)
--DOSCommand "shutdown -s -f"
----------------------------------------------------
Про анимированную камеру думал, но никак руки не дойдут пока, Попробую в ближайшее время. Но лучше все-таки придумать как эту ошибку отловить.
Вообще я так понял, что либо это невозможно, либо нереально сложно?
Еще такая мысль - можно ли прописать время рендера. Допустим если рендер не закончился за 3 часа, то обрывать его и начинать заново?
JBond
первое - переменные лучше переименовать не брать постоянно "С" для всех камер . А взять другие буквы a,b,c,d ... необязательно конечно но лучше в разных переменных хранить данные, а не перезаписывать.
1. Напрямую через рендер команду (буду писать к одной камере) :
c= $camera01
render camera:c outputwidth:dimx outputheight:dimy outputfile🙁dirr+rn+c.name+frm) vfb:vkl quiet:true
2.Через try() catch() :
try (
c= $camera01
render camera:c outputwidth:dimx outputheight:dimy outputfile🙁dirr+rn+c.name+frm) vfb:vkl quiet:true
)
catch()
JBond
Потомучто в ошибке он жалуется на
Last marker is at? \src\globillummap. cpp, line 1580:
GlobalIllumMap::BuildLightMap() {5}
Если так не получится попробуем закрывать окно напрямую вроде есть Callback который это может делать.
Di_di_0
По настройкам рендера.
В Primary стоит Irradiance map, vеry low, single frame
В Secondary - Ligthcash, single frame
И dinamic memory limit - 50000
Все остальное стандартные настройки. ничего больше не трогал.
Но кажется настройки здесь не причем, потому что иногда рендер при помощи фотонов тем же заканчивается.
JBond
-------------------------------------------------------------------------------------------------------------
--начало
fn ErrorHandle = (
local windowHandle = DialogMonitorOPS.GetWindowHandle()
if (windowHandle!=0)
then (
UIAccessor.PressButtonByName windowHandle "(ТУТ НАЗВАНИЕ КНОПКИ КОТОРУЮ НУЖНО ЗАКРЫТЬ "OK" , "CANCEL" и в т.п.)"
)
DialogMonitorOPS.Enabled =true
DialogMonitorOPS.RegisterNotification ErrorHandle id:#dyeError
-- начало твоего кода ------------------------------------------------------------------------
dimx=1600
dimy=1200
vkl = on
dirr = "d:/script_render/"
rn = "enlik_spalnya_N1_newvar1_"
frm = ".jpg"
c= $camera01
render camera:c outputwidth:dimx outputheight:dimy outputfile🙁dirr+rn+c.name+frm) vfb:vkl
c= $camera02
render camera:c outputwidth:dimx outputheight:dimy outputfile🙁dirr+rn+c.name+frm) vfb:vkl
c= $camera03
render camera:c outputwidth:dimx outputheight:dimy outputfile🙁dirr+rn+c.name+frm) vfb:vkl
c= $camera04
render camera:c outputwidth:dimx outputheight:dimy outputfile🙁dirr+rn+c.name+frm) vfb:vkl
c= $camera05
render camera:c outputwidth:dimx outputheight:dimy outputfile🙁dirr+rn+c.name+frm) vfb:vkl
--конец твоего кода --------------------------------------------------------------------------------
DialogMonitorOPS.UnRegisterNotification id:#dyeError --внизу про них
DialogMonitorOPS.Enabled =false
-- начало твоего кода --------------------------------------------------------------------------------
quitMAX (#noPrompt)
--DOSCommand "shutdown -s -f"
--конец твоего кода--------------------------------------------------------------------------------
P.S. Сразу предупреждаю, что пока эти строки(пометка вверху) не запустятся будут все окна обрабатываться даже полезные, там где кнопка будет с таким именем которое задано.
Поэтому quiet:true лучше всего прописывать в основном коде.
Di_di_0
JBond
Я пробовал с messageBox окно самозакрывается если мониторинг запущен.
Di_di_0
JBond
--------------------------------------------------------------------------------------------------
DialogMonitorOPS.UnRegisterNotification id:#dyeError
fn ErrorHandle = ( local windowHandle = DialogMonitorOPS.GetWindowHandle()
if (windowHandle!=0) then ( UIAccessor.PressButtonByName windowHandle "cancel" ) )
DialogMonitorOPS.RegisterNotification ErrorHandle id:#dyeError
DialogMonitorOPS.Enabled =true
dimx=1600
dimy=1200
vkl = on
dirr = "K:/"
rn = "enlik_spalnya_N1_newvar1_"
frm = ".jpg"
c= $camera001
render camera:c outputwidth:dimx outputheight:dimy outputfile🙁dirr+rn+c.name+frm) vfb😮n quiet:true
d= $camera002
render camera:d outputwidth:dimx outputheight:dimy outputfile🙁dirr+rn+d.name+frm) vfb😮n quiet:true
yesNoCancelBox "BoxYES"
messageBox "OK"
DialogMonitorOPS.UnRegisterNotification id:#dyeError
DialogMonitorOPS.Enabled =false
Di_di_0
Одно смущает, когда вылазит мессаджбокс, он находится сверху окна макса, т.е. пытаешься нажать где-то кроме кнопки ок, он пикает и табличка мигает. А когда та ошибка вылазит она как будто сама по себе, можно выделить окно макса, и сообщение об ошибке уходит на задний план, можно подвигать окна с рендерами, что-нибудь сворачить или закрывать. Пока не нажмешь что-нибудь на той табличке. В любом случает потестирую еще, глядишь в ближайшее время узнаю результат.
JBond
Он просто как модуль отваливается, а макс может быть работоспособен.Хотя часто он грохается вместе с плагином инициатором ошибки.
UNHANDLE EXCEPTION: Rendering image
Last marker is at? \src\globillummap. cpp, line 1580:
GlobalIllumMap::BuildLightMap() {5}
Чтото с методом в С++ файле происходит. По какимто причинам он не может построить лайтмап после первого рендера.
Как скрипт будет окна закрывать нужно пробовать, надеюсь что мониторинг не будет делить на "чужих" "своих".
Di_di_0
Он на самом деле не делит на чужих и своих, закрывает все подряд. Но видимо нажимает всетаки "ок", потому что макс сразу вырубается. Хотя прописано "cancel".
Буду думать.