Render.ru

Light Fog

Timofey E. Penkoff

Активный участник
Рейтинг
10
#1
Уважаемый All! Помоги решить проблему: я рендерю сцену Энтропией 3.0 через MayaMan. Нужно для одного источника света включить Light Fog. Источник - spot. Подключил к нему Light Attributes, поставил галочку Atmospheric (_foglight), к самому источнику прикрутил лайтфог... не рендерит фог, хоть ты тресни... в доке я вообще не нашел ничего. Пришлось методом тыка... подскажите, как заставить его рендерить мне свет объемный? Или хотя бы где прочитать про него? Может я в доке что-то пропустил?
 
#2
Сильно не копал так что могу ошибаться...
Включи фог не в маяменских атрибутах а в стандартных майских.
Он сделает конус который пойдет в риб как объект с обычным surface
шейдером. Короче отстоище редкостное зато быстро.
Либо я чото недокопал либо они еще недоделали.
Реальный volume light это типа долго если к этому
вопросу не подойти с точки зрения мрачной оптимизации.
....как это сделали в мторе для prman....но засранцы сорцы
не расшарили. Хотя там кажеться все просто...надо попробовать...mesage
passing рулит форева.
 

Timofey E. Penkoff

Активный участник
Рейтинг
10
#3
Хм. Спасибо за помощь, только вот проблема: я не умею писать рибы, и иже с ними... я совсем недавно начал юзать Энтропию и MayaMan. =( ПРМан для меня до сих пор загадка... Shading Language - такая штука, которую сходу не прорубишь... =( Как я понял, Майямэн создает свой каталог у меня в проекте. Там для каждой сцены есть еще каталоги, в которых лежат sl-файлы. Я поковырялся в mml_spotlightshape1.sl (тот источник, от которого мне нужен фог). Естественно, я ничерта там не понял... названия знакомые, параметры тоже... да вот только дописать я его не смогу. =( Вот такие вот дела... =((( Еще раз спасибо за помощь...
 
#4
Shading Language штука прорубаемая если знаеш хотя бы
основы програмизма и немного ферштейн по англицки.
FAQ форума RenderMan есть ссылки на чтиво написанное
вполне доступным языком. А что касаеться правки light шейдера
тут все гораздо сложнее....
Чтобы получить реальный LightFog
(учитывающий тени от объектов, предусматривающий
нахождение камеры внутри этого фога)
необходимо использовать связку Light - Volume шейдеров.
Причем Volume shader должен использовать
raymarcher технику которая как известно счетаеться
ой как небыстро.
Посему волум нужно писать так чтобы рэймарш запускался
только там где он действительно необходим а не по всей сцене
(честно отрабатывая рэймарш но показывая его результаты только
в пределах конуса лампочки)
Сию проблему думаю можно решить с помощью mesge passing.
Light shader вычисляет свои world position, world direction
и отправляет месагу типа "я хочу волума из world position
в направлении world direction внутри конуса с углом
cone angle"
Когда в какой либо sample point
запускаеться volume shader он (внутри "fake" illuminance)
шерстит все источник света на предмет месаги "я хочу волума",
обнаружив таковую забирает остальное и смотрит
"А имеет ли место быть пересечение вектора I с этим конусом"
Если нет то свал на вогзал иначе рэймарш но только на отрезке
пересечения. Таким образом там где фога быть неможет
будет калькулиться токмо fake illuminance что недолго,
а там где он есть придеться потерпеть.
Вобщем в этой ситуации рулит здравый смысл,
mesage passing и МАТЕМАТИКА.
На выходных попробую.
 
#5
Да не, имхо в волумах, описанных в ArMan-е и примененных в RATе message passing применяют по-простому, только для указания, какие именно лампочки светят "в волуме". Raymarching - штука, конечно, тормозная, но не смертельная, если конечно не задавать шибко маленький степ сайз... В общем, по-моему, время, потраченное на написание всей этой возни с мессаджами, вряд ли окупится ускорением рендеринга, кроме разве что совсем экстремальных случаев...
 
#6
Неаааа....Посмотри как работает ратовская связка
volumespot+volumefog
Там где I не пересекает световой конус он просчитывает мгновенно
а там где пересекает начинаються тормоза с рэймаршем.
Значит пересечение всетаки ищеться. Если просто указать
какая лампочка высвечиает волум то рэймарш будет колбаситься по всей
сцене даже если лампочка вообще за кадром.
Это проверенно...
Месаги в ихней связке щимяться по полной программе :) посмотри
там все параметры волума находятся у light шейдера.
А вся возня то собсно заключаеться в решении системы
уравнений прямой и конуса которые известны.
....потихонечку колбасю.
 
#7
Ты прав, похоже :) Просто я тут ковырялся с одним волумом, у которого объем железно ограничен шаром, и мне как-то и в голову не приходило, что тут можно мессаджами побаловаться...
 

Timofey E. Penkoff

Активный участник
Рейтинг
10
#8
Уф! Первый шок от написанного тобой отошел... появилось опасение в том, не нужно ли быть вундеркиндом, чтобы это все прорыть... =))) Спасибо большое... буду читать доку, пытаясь найти объяснение и расшифровку практически для каждой из твоих фраз... :cool: Удачи! И быстрого тебе рендера!
 
Сверху