Render.ru

radiosity

#1
sceneradiosity.radiosity.start()
render()

При просчёте радиосити и последующем рендере часть картинки рендериться "без" а часть "с" радиосити
То есть render не хочет ждать окончания просчёта радиосити

Ключевое слово "radProcessInRenderOnly" нашёл , но как оно будет выглядеть в скрипте не могу понять
Как я понимаю- надо запустить цикл по времени, с ежесекундной проверкой "radProcessInRenderOnly" на true

Если использовать Timer, то там нет условия окончания

Если просто через for то не совсем понятно как там пользоваться time. Так как все примеры по тайм связанны с анимацией, а здесь просто счёт.

Можно сравнивать последующие и предыдущие "Elapsed time" и если они не равны то продолжать ждать, но как их вытащить, непонятно

В общем, притормозил я немного, подскажите Please
 

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
#2
Зачем в таймеру условие окончания ?
Просто выпоняй всечто нужно прямо внем по достижении нужных событий.
 
#3
Дык я задумал и по параметрам радиосити закрутить цикл, а так к ним и не вернуться

Но я думаю с таймером не очень хорошая у меня идея, это ведь паралельно с просчётом радиосити должен постоянно крутиться цикл на проверку условия

здесь ещё вот что непонятно как может начать работать оператор render, если предыдущий оператор "radiosity" ещё не закончил- это ведь нонсенс
 

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
#4
Scrooge, да так бужет проще

Dmitro Golub,
start = timeStamp()
process_mesh() -- do some big job
end = timeStamp()
format "Processing took % seconds\n" ((end - start) / 1000.0)
 
#5
Всё нашёл
Скрипт не доделал, но понял куда надо копать

"Compute Advanced Lighting When Required"

и не надо никаких циклов по времени
и radprocessinrenderonly тоже не нужен

и проблема нонсенса отпала сама собой
 
Рейтинг
64
#7
спасибо :) я так и подозревал, но думал что время рендера и radiosity хранится в каких-то переменных макса, и их можно вытащить оттуда
 
#8
Denis !
Возьми в соавторы, а я дополню ещё пару строчек.

secundivse=timeStamp()/1000 --общее кол-во секунд с начала
ned=floor(secundivse/3600) --кол-во часов (вещественное)
ostatok1=mod secundivse 3600 --остаток секунд после отнятия часов
nedmin=floor(ostatok1/60) --кол-во минут (вещественное)
ostatok2=secundivse-ned*3600-nedmin*60 --кол-во секунд (вещественное)
nedin=ned as integer --кол-во часов (целое)
nedminin=nedmin as integer --кол-во минут (целое)
ostatok2in=ostatok2 as integer --кол-во секунд (целое)
format "Total %:%:% \n" nedin nedminin ostatok2in --вывод на печать

переменные только поменяйте, кто будет пользоваться

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