Здравствуйте, была необходимость ускорить процесс рендера объектов отдельно от сцены, знаний в макскрипте = 0, но удалось собрать рабочий прототип который все же при выделении нескольких объектов рендерит каждый в отдельном окне отдельно от сцены. Появилась проблема с группами, скрипт их не видит и рендерит все объекты в них отдельно, в итоге имеется куча бесполезного мусора вместо одного скажем диванчика.
Вот собственно сам скрипт (без лишних кнопок,роллаутов, чекеров и сейвера рендера)
(
local current_object = 0
for i in selection do
(
myobj = selection as array
current_object += 1
if current_object > 0 do
(
$*.renderable = on
$*.primaryVisibility = off -- visible to camera
myobj[current_object].renderable = on
myobj[current_object].primaryVisibility = on
render myobj[current_object]
)
)
)
Может кто подскажет чем эти каракули подправить чтобы оно группы как отдельный обьект воспринимало?
Простой пример для частного случая:
В новой сцене создаем 2 чайника и группируем их.
Выделяем чайники и группу. Запускаем скрипт.
(
local current_object = 0
for i in selection do
(
myobj = selection as array
current_object += 1
if current_object > 0 do
(
$*.renderable = on
$*.primaryVisibility = off -- visible to camera
if isGroupHead myobj[current_object] and myobj[current_object].parent==undefined then
(
myobj[current_object].children.renderable = on
myobj[current_object].children.primaryVisibility = on
render ()
)
else if( not (isGroupHead myobj[current_object] or isGroupMember myobj[current_object]) )then
(
myobj[current_object].renderable = on
myobj[current_object].primaryVisibility = on
render ()
)
)
)
)
Спасибо за помощь, на этом примере понял как с группами можно работать, добавил к нему еще проверку объекта состоит ли он в открытой группе,а то не хотел рендерить. Теперь всё летает 😃
Появилась новая проблема. Он не рендерит группы если в них есть еще группы =\. Можно добавить проверку на группу в группе, но я так понимаю если будет тройная или больше группа (несколько раз группирован обьект) то на каждый новый уровень групп прийдется добавлять новую проверку. Может есть какой-то универсальный способ?
P.S. Мучает чувство что решение элементарное,но знаний пока не хватает самому додумать
Простой пример для частного случая:
В новой сцене создаем 2 чайника и группируем их (Group1).
Создаем 2 сферы и группируем их (Group2).
Выделяем 2 группы и группируем их (Group3).
Выделяем основную группу (Group3), родитель которой является Scene Root.
Запускаем скрипт.
(
fn group_children_all g &g_c=
(
if(g.children.count>0)then
for obj in g.children do
(append g_c obj; group_children_all obj &g_c)
)--fn group_children_all g &g_c=
local current_object = 0
for i in selection do
(
myobj = selection as array
current_object += 1
if current_object > 0 do
(
$*.renderable = on
$*.primaryVisibility = off -- visible to camera
if isGroupHead myobj[current_object] and myobj[current_object].parent==undefined then
(
obj_children=#(); group_children_all myobj[current_object] obj_children
obj_children.renderable = on
obj_children.primaryVisibility = on
render ()
)
else if( not (isGroupHead myobj[current_object] or isGroupMember myobj[current_object]) )then
(
myobj[current_object].renderable = on
myobj[current_object].primaryVisibility = on
render ()
)
)
)
)
Весь мозг сломал - как пакетно сохранять все frame buffer на диск? Когда много элементов в сцене, проблематично вручную сохранять каждый из них.
А если указывать путь в настройках, то последний затирает все предыдущие.
nat79Весь мозг сломал - как пакетно сохранять все frame buffer на диск? Когда много элементов в сцене, проблематично вручную сохранять каждый из них.
А если указывать путь в настройках, то последний затирает все предыдущие.
Пример: В новой сцене создаем 2 чайника и выделяем их.
Открываем окно Render Scene (клавиша F10).
На вкладке Common, в свитке Common Parameters, в группе Render Output нажимаем кнопку Files.
В новом окне указываем нужный путь, название и тип файла (bmp, jpg, png).
Запускаем скрипт.
(
fn group_children_all g &g_c=
(
if(g.children.count>0)then
for obj in g.children do
(append g_c obj; group_children_all obj &g_c)
)--fn group_children_all g &g_c=
if(rendOutputFilename!="")then
(
renderSceneDialog.close();
render_folder=getFilenamePath rendOutputFilename
render_filename=getFilenameFile rendOutputFilename
render_filename_type=getFilenameType rendOutputFilename
current_object = 0;currrent_render=1
for i in selection do
(
myobj = selection as array
current_object += 1
if current_object > 0 do
(
$*.renderable = on
$*.primaryVisibility = off -- visible to camera
if isGroupHead myobj[current_object] and myobj[current_object].parent==undefined then
(
obj_children=#(); group_children_all myobj[current_object] obj_children
obj_children.renderable = on
obj_children.primaryVisibility = on
rendOutputFilename=render_folder+render_filename+(currrent_render as string)+render_filename_type
max quick render;currrent_render+=1
)
else if( not (isGroupHead myobj[current_object] or isGroupMember myobj[current_object]) )then
(
myobj[current_object].renderable = on
myobj[current_object].primaryVisibility = on
rendOutputFilename=render_folder+render_filename+(currrent_render as string)+render_filename_type
max quick render;currrent_render+=1
)--else if( not (isGroupHead
)--if current_object > 0 do
)--for i in selection do
rendOutputFilename=render_folder+render_filename+render_filename_type
)--if(rendOutputFilename!="")then
)
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
Дядя Миша
Вот собственно сам скрипт (без лишних кнопок,роллаутов, чекеров и сейвера рендера)
( local current_object = 0 for i in selection do ( myobj = selection as array current_object += 1 if current_object > 0 do ( $*.renderable = on $*.primaryVisibility = off -- visible to camera myobj[current_object].renderable = on myobj[current_object].primaryVisibility = on render myobj[current_object] ) ) )Может кто подскажет чем эти каракули подправить чтобы оно группы как отдельный обьект воспринимало?igorznag
В новой сцене создаем 2 чайника и группируем их.
Выделяем чайники и группу. Запускаем скрипт.
Дядя Миша
Дядя Миша
P.S. Мучает чувство что решение элементарное,но знаний пока не хватает самому додумать
igorznag
В новой сцене создаем 2 чайника и группируем их (Group1).
Создаем 2 сферы и группируем их (Group2).
Выделяем 2 группы и группируем их (Group3).
Выделяем основную группу (Group3), родитель которой является Scene Root.
Запускаем скрипт.
nat79
А если указывать путь в настройках, то последний затирает все предыдущие.
igorznag
Открываем окно Render Scene (клавиша F10).
На вкладке Common, в свитке Common Parameters, в группе Render Output нажимаем кнопку Files.
В новом окне указываем нужный путь, название и тип файла (bmp, jpg, png).
Запускаем скрипт.
nat79
Хотел бы немного отблагодарить. См. личку.