Методы освещения в RAT, Occlusion, GI, фейки. Обсуждаем тут. |
Home· Статьи · Вакансии · Чертежи · 3D Галерея · 2D Галерея · Форум · Форум Realtime | Реклама |  Конкурсы | RAR Award | Правила |
Здравствуйте, гость ( Вход | Регистрация )
Методы освещения в RAT, Occlusion, GI, фейки. Обсуждаем тут. |
30/12/2005, 11:14
Сообщение
#1
|
|
Мастер Группа: Участник Сообщений: 1 421 Регистрация: 20/06/2002 Пользователь №: 109 |
Поскольку освещение - бесспорно самая сложная, хитрая и окруженная тысячами мифов часть работы с renderman, я взял на себя смелось создать эту тему.
На правах небольшого вступления... Как мы знаем, вместо кнопки "сделать красиво" и десятка рычажков для настройки рядом с ней (как это реализовано в большинстве популярных рендеров) в рендермене существует огромное количество разных техник. Я только начал его осваивать, и начал естественно с прочтения документации и всевозможной иформации. Ее количество просто повергло меня в прострацию. Уроков полно, методы координально разные, а какой из них качественнее, быстрее? Многое из того что описано в интернете лежит еще со времен когда в рендермене отсутствовал рейтрейс, и видимо устарело. Причем изучение этой информации происходит под "оптимистические" реплики с разных форумов вроде "GI - явно не самая сильная сторона рендермена", "рейтрейсинг в нем страшно тормозной", "скайлайт будет считаться там тысячу лет, а вот vray..." Покопавшись с недельку, наигравшись с сабдивами и creasing'ом,научившись подключать в конфиге .slim файлы, собирать шейдера из слоев, я собственно захотел получить то, ради чего я всем этим занялся - хоть насколько-нибудь приемлемую картинку. Начать я решил с малого - имитации самого простого и растространенного освещения сцены: скайлайт+1 свет сверху-сбоку. Вот что у меня получилось, покачто с резкими тенями. Знаю, глюков полно, взять теже черные полосочки под объектами и полную темноту в узких промежутках (догадываюсь что это можно поправить найдя и порегулировав "экспонентность" чего-нибудь-там). Вобщем сильно не пинайте, это первое моя рендерменская картинка которую можно показывать людям 1024x768 Делал совместив этот и этот уроки. Это обычный occlusion выполненный средствами только prman. Промучался довольно долго. Когда наконец все ухищрения тов. ZJ заработали, и крутанул настройки рендера и разрешение карт в сторону качества, и... был приятно удивлен скоростью. Конечно считается не молниеносно, до вирея еще далековато но очень даже приемлемо маленькая картинка 3мин 12сек, 1024x768 - 7мин 49с на p4 3.2. Кстати никакой специальной оптимизации (в виде плавной подборки разрешения карт, настроек рендера, антиальясинга) пока не делал. Думаю можно будет со временем довести до ума... Вот собственно... начало обсуждения положено. Интересно было бы узнать о дргих техниках, Ппробывать настоящее GI на фотонах. Послушать специалистов. Вобщем будем надеятся что тема будет жить и процветать. P.S. С наступающим! Сообщение отредактировал Trogwart - 30/12/2005, 11:38 |
|
|
30/12/2005, 19:59
Сообщение
#2
|
|
MaxMan Группа: Пользователи Сообщений: 185 Регистрация: 06/12/2004 Пользователь №: 8 737 |
А ради чего такие мучения, какова конечная цель собсна?
|
|
|
30/12/2005, 20:07
Сообщение
#3
|
|
BLADERUNNER Группа: Участник Сообщений: 858 Регистрация: 20/12/2004 Из: Moscow Пользователь №: 8 990 |
Конечная цель я так понимаю — оптимизация шейдеров и настроек рендерера для визуализации просто красивых катринок, а главное — анимации, чем собственно и славятся RenderMan-совместимые.
Trogwart, 7 мин. 49 с. для такой картинки с ambient occlusion очень многовато, скорее надо разобраться с настройками антиалиасинга. И AO по-контрастнее бы. |
|
|
30/12/2005, 22:46
Сообщение
#4
|
|
Мастер Группа: Участник Сообщений: 1 421 Регистрация: 20/06/2002 Пользователь №: 109 |
Цветной вариант.
Собрал слои в шейдере таким образом, что цвет скайлайта и цвет теней от скайлайта настраивается отдельно. Помоему намного интереснее чем стандартные серые или голубоватые тени. Кстати можно даже для разных объектов делать тени разного цвета. |
|
|
01/01/2006, 16:22
Сообщение
#5
|
|
Мастер Группа: Участник Сообщений: 1 421 Регистрация: 20/06/2002 Пользователь №: 109 |
1024x768 Еще вариант - с мягкими тенями. Теперь отдельно настраивается не только цвет теней и светлых участков, но и их пределы (светлый и темный). Тоесть теперь 4 слота под цвет. Occlusion использвуется в качестве маски для разделения материалов. Тени - raytrace areashadows, (128 семплов) тоесть прямой расчет (не фейк). Они замедлили рендер довольно сильно, (1024x768 - рендерилась 28 мин 50 сек). Но кстати я бы не сказал что они медленнее чем ареа-тени, как в бразиле например. Те тже заставляют нормально подождать, когда в финальном варианте пытаешься убрать нойз. Сейчас попытаюсь заменить тени на какой-нибудь fake. |
|
|
01/01/2006, 17:42
Сообщение
#6
|
|
Уволился Группа: Участник Сообщений: 2 561 Регистрация: 06/07/2002 Из: Санкт Петербург Пользователь №: 289 |
Насчет ареа шедоус... у нас была идея фейка, через оклюжен - здесь есть даже про это статья небольшая http://www.deathfall.com/tutorials.php?op=showcontent&id=85 Но для самостоятельной реализации все таки нужно немного уметь писать шейдеры. У меня к сожалению нету юзер френдли темплейта что бы выложить, но если там по ссылочке все прочитать , то дальше вполне можно двигаться самостоятельно
|
|
|
01/01/2006, 18:38
Сообщение
#7
|
|
Мастер Группа: Участник Сообщений: 1 421 Регистрация: 20/06/2002 Пользователь №: 109 |
Вау! Кстати, наверняка оклюжен можно расчитать 1 раз для всего, а потом на основе его уже делать скайлайт, фейковые тени, и чтонибудь вроде кавити (высветлять выступающие части и затемнять углубления).
А че так проект не закончили? Помоему хорошая идея, только за шейдера мне еще рановато браться, чуть попожже изучу как следует. Щас хочу попробывать вот этот фейк: http://zj.deathfall.com/softshadows.htm на основе размытия шедоумапы, хотя наверняка будет не очень аккуратно. |
|
|
01/01/2006, 22:43
Сообщение
#8
|
|
Уволился Группа: Участник Сообщений: 2 561 Регистрация: 06/07/2002 Из: Санкт Петербург Пользователь №: 289 |
Ну почему не закончили? Оно в общем то работает замечательно, просто нету крсивого удобного темплейта для этого всего... а так можно совершенно спокойно взять код, который там в конце приведен, скомпилить и юзать sl'ку.
|
|
|
01/01/2006, 22:56
Сообщение
#9
|
|
Мастер Группа: Участник Сообщений: 1 421 Регистрация: 20/06/2002 Пользователь №: 109 |
Michael_fd, щас попробую
Вот с фейковыми тенями по уроку zj (размытая shadowmap с 1 семплом). Какието странные тени: они размываются както "наизнанку". Тоесть от маленьких деталей тени мягче чем от больших. Зато шустрые дико - разницы в скорости вообще нету, что с ними что без (да собственно то много сил и не надо чтобы 1 шадоумапу нарисовать стандартную). Сообщение отредактировал Trogwart - 01/01/2006, 22:57 |
|
|
02/01/2006, 01:38
Сообщение
#10
|
|
Очень редкий гад Группа: Модераторы Сообщений: 5 050 Регистрация: 25/12/2002 Пользователь №: 1 332 |
Trogwart
Ну обещаны были разные варинаты, продолжай, интересно же)) кста последняя очень даже, напоминает эффект как в бразе ИС с фотометриком, как я понимаю ги пасс - АО ? |
|
|
02/01/2006, 02:48
Сообщение
#11
|
|
Мастер Группа: Участник Сообщений: 1 421 Регистрация: 20/06/2002 Пользователь №: 109 |
Michael_fd, чета если честно не догоню как юзать тот твой код. Щас сел порылся в синтаксисе sl.. сложновато чтобы так сходу въехать. Просто так sl не компелируется, ведь ему надо указать кроме того кода еще кучу сопутствующей мишуры, в которой я пока не разобрался. Что-то вроде к какому типу он относится и все такое. А я что-то не врублюсь как это сделать. Может подкинешь готовый шейдер?
anty, Все попробуем. Сейчас я завершу этот первый тест какой-нибудь удачной тенью и переду к фотонам. Тут собственно ги пока нету, просто на объектах наложена ч/б маска созданная с помощью occlusion, и ей разделены цвета не поверхности. Грубо говоря все что мы видим - это текстура. Никакого колор блидинга и всего такого, просто я удачно подобрал в последнем примере цвета. |
|
|
02/01/2006, 04:53
Сообщение
#12
|
|
Мастер Группа: Участник Сообщений: 1 421 Регистрация: 20/06/2002 Пользователь №: 109 |
Вот нашел еще один неплохой софтшэдоу-фейк. Принцип тотже, что и у ZJ, размытие карты тени с одним семплом, но интерфейс удобнее и глючит меньше. Рендерится шустро. Вобщем буду ее юзать, понравилась.
Для фейков характерны глюки, необходимость тонкой настройки (для теней создаются специальные координатные системы, в пределах которых они размываются и тд), и вообще они неаккуратные, тени от небольших деталей теряются. Но приимущество в скорости просто колоссальное. Вобщем всему найдется свое применение - фейки надо использовать там, где детальные тени не очень важны - для скайлайта, в качетсве неосновных сильно размытых теней. Для основного ключевого света лучше использовать "честные" ареатени. Вот что получилось (оклюжен+фейк тени). Незнаю как вам, а мне нравится особенно скорость - вот эта картинка с "чистовыми" настройками рендерилась 3 мин 8 сек. |
|
|
03/01/2006, 00:26
Сообщение
#13
|
|
Уволился Группа: Участник Сообщений: 2 561 Регистрация: 06/07/2002 Из: Санкт Петербург Пользователь №: 289 |
Ну, дальше с этим можно по разному поступить... один вариант полностью написать свой навороченный слим темплейт, напихать туда кучу всего, другой вариант сделать по минимуму, и написать просто лайт шейдер, который ничего не будет уметь кроме, как сгенерить такую тень. Но самый простой способ, если нету возможности самому написать, то что нужно - это открыть слим, создать например спот лайт, открыть его настройки, а дальше меню file и там View sl source - это в общем то и будет код этого самого спот лайта, который сгенерил слим.
Дальше остается просто взять и в конце когда присваивается конечный результат расчета в Cl заменить на нашу функцию. А старый удалить. Вот, код, который можно скомпилить. Я почистил частично, то что не нужно было изначально, но многое осталось все равно, поэтому это не в коем случае не пример для обучения, а просто что б работало А дальше можно уже накручивать цвет, интенсивность и т.д. если есть желание... CODE light ocSpot (float ConeAngle=30; float PenumbraAngle=5; float xsamples = 16; float ShadowBlur = 5;) { color cResult; point from = point "shader"(0,0,0); vector axis = normalize(vector "shader"(0,0,1)); uniform float angle = radians(ConeAngle); uniform float penumbra = radians(PenumbraAngle); uniform float cosoutside = cos(angle); uniform float cosinside = cos(angle-penumbra); __inShadowC = color(0); illuminate(from, axis, angle) { varying float atten, cosangle; cosangle = L.axis / length(L); atten = smoothstep( cosoutside, cosinside, cosangle ); atten *= 1 / pow(length(L), 0); __nondiffuse = 1 - 1; __nonspecular = 1 - 1; _contribRim = 1; _contribThinTranslucence = 1; _contribBackScattering = 1; _contribSubsurfaceScattering = 1; cResult = occlusion(Ps, -L, xsamples, "coneangle", ShadowBlur/180*PI, "maxdist", length(L)); Cl = 1 - cResult; } } |
|
|
03/01/2006, 00:39
Сообщение
#14
|
|
Мастер Группа: Участник Сообщений: 1 421 Регистрация: 20/06/2002 Пользователь №: 109 |
Спасибо большое, завтра попробую!
|
|
|
03/01/2006, 01:10
Сообщение
#15
|
|
Уволился Группа: Участник Сообщений: 2 561 Регистрация: 06/07/2002 Из: Санкт Петербург Пользователь №: 289 |
Но я думаю, понятно, что этот способ будет очень хреново работать на мелких и тонких деталях из-за природы оклюжена...
|
|
|
Bots |
Системное сообщение
|
|
|
|
|
Текстовая версия | Сейчас: 26/04/2024 - 01:32 |