Render.ru

алгоритм просчета преломлений?

Vladlen

Активный участник
Рейтинг
16
#1
Всегда у меня вызывал жуткий интерес тот как приходится делать реальное стекло в LW. Но хоть убейте не могу понять зачем именно так, почему так неинтуитивно.

Установки такие поверхность стекла входящая наружу коэфф 1,5 внутрь 1,0
следующая поверхность на выходе коэффициенты внутрь 1,0 наружу 1,5

Смотрите луч света падает на поверхность поду углом к примеру 45, материал с коэфф 1,5. Дальше уже луч идет под углом ну к примеру 30 (вроде) далее попадает на поверхность с коэфф 1,0 и почему я не могу понять она должна вновь выходить под углом 45

Может я чего не понимаю
 

Vladlen

Активный участник
Рейтинг
16
#4
To ShadowBG
так а смысл тогда писать везде (к примеру Флеминг тоже описывал это так) что реальное стекло.

To Green

разница в понимании того что делаешь, когда понимаешь как это работает и какие ограниченичя есть легче получить предсказуемый результат, а это сэкономленное время, а время это деньги, а деньги это...
 
#5
Открываеш учебник физики приблизительно за 8 класс и там все подробно написано, в том числе и почему луч выходит под тем же самым углом.
 

Vladlen

Активный участник
Рейтинг
16
#6
Дмитрий почитайте первое письмо прежде чем советовать

Исходя из физичиских законов луч попадая на выходе на полигон с коэфф 1,0 как раз таки и должен выходит под тем же углом что и вошел в него но в ре-те получается что свет попадая на LW стекло из примера должно проходить и на выходе из стекла должно иметь угол оличный от того что был при входе но этого не происходит, ведь понятия объема для простых обёектов в ЛВ не существует.
 
#7
Дорогой Vladlen я внимательно проичитал вопрос из первого письма перед тем как писать ответ. Так как LW (как впрочем и большинсво других пакетов) не имеет "понятия объема" то его приходиться моделировать при помощи вот таких "маленьких" хитростей. Фактически схема 1.5 /1 > 1/1.5 моделирует прохождение луча через объем. Ничего удивительного тут нет.

PS А если ты действительно хочешь получить настоящее стекло да плюс ко всему работать с ним без всяких вышеперечисленный условностей, то тебе надо искать пакет работающий с Solid объектами. Так все это делается намного просще и с экономией времени ну всего сопутсвующего ему ....:)


Успехов.
 

Vladlen

Активный участник
Рейтинг
16
#8
Не меня это не пугает просто хочется понять как это у ЛВ устроено

но выходит то что ЛВ помнит коэфф предыдущей поверхности
так как в нашем случае луч попадая на поверхн. с коэфф 1 выпрямляется
а в других случаях он как ни в чем небывало проходит прямо без отклонений.
 

Vladlen

Активный участник
Рейтинг
16
#9
Не меня это не пугает просто хочется понять как это у ЛВ устроено

но выходит то что ЛВ помнит коэфф предыдущей поверхности
так как в нашем случае луч попадая на поверхн. с коэфф 1 выпрямляется
а в других случаях он как ни в чем небывало проходит прямо без отклонений.
 
Рейтинг
93
#10
Он не помнит коэффициент предыдущей поверхности. Когда луч идет от камеры (образно говоря), он искривляется в зависимости от направления нормали поверхности с коэффициентом преломления, отличным от 1. А когда он попадает снова в воздух (его коэффициент преломления близок к 1), то он снова искривляется, вновь в зависимости от направления нормали новой поверхности (во второй раз это будет уже воздух). Таким обрахом, происходит два искривления пути луча. Эти искривления, можно сказать, дополняют друг друга, и поэтому луч после выхода из стекла идет в том же направлении, что и шел до стекла.

Надеюсь, я все правильно сказал... :)
 

Vladlen

Активный участник
Рейтинг
16
#11
Так в этом и есть весь вопрос

как в одном случае материал с коэфф 1,0 не преломляет и НЕ ИСКАЖАЕТ луч,

а в другом случае это происходит
(от того что он выпрямляет луч смысл не меняется ведь он его всеравно искажает)
 
Рейтинг
93
#12
Хмм... давай начнем сначала. :)

луч идет в воздухе с коэффициентом преломления (КП) = 1. Потом он встречается со стеклом, у которого КП=1.3 и искривляет свой путь в зависимости от направления нормали к границе этих двух сред. После того, как его путь искривился на границе воздух-стекло, он идет в стекле прямолинейно. Идет до тех пор, пока не встретит другую среду, с другим КП. В нашем случае это опять воздух. Луч, встретившись на выходе из стекла с воздухом, снова искривляет свой путь, но по другому - если КП у среды, в которой идет луч больше, чем КП у среды, куда он попадет, то он искривляет его в одну сторону. Если наоборот - в другую (когда в какую - это я не знаю, физику помню плохо. Тангенсы, косинусы...). Оба эти искривления (одно на входе, а другое - на выходе) компенсируют друг друга, поэтому после выхода из стекла направление луча до и после стекла - совпадает. Если, конечно, стенки стекла параллельны. Если нет - то не будет совпадать, но алгоритм останется тот же.
 

Vladlen

Активный участник
Рейтинг
16
#13
Так ведь по физике именно так и происходит

но у ЛВ отсутствует понятие объема для простых объектов.

И по логике ему абсолютно без разницы что за полигон ты ему подсовываешь (в обычном случае)
будь это полигонс коэфф. 1,5 он свет преломляет
если это полигон с коэфф 1,0 он обязан его НЕПРЕЛОМЛЯТЬ так как иначе объекты с коэфф преломления 1,0 к примеру мыльные пузыри у нас станут лучи изгибать.8)

Вот и получается что ЛВ должен помнить с коэфф последнего полигона через который проходил луч ,чтобы в случае со стеклом искажать свет.

PS: Тут эксперементировал с коэф преломления и обнаружил что можно задавать значения меньшие 1 (к пр. 0,5) и отрицательные значения (-1,5). Математика летит к чертям, результат рендеринга разумный но непонятно что всетаки происходит в этих случаях.
 
Рейтинг
93
#14
Искажение света - это уже каустика. А что касается трассировки лучей - так тут он все помнит. Луч идет, преломляется в предметах не на 100% прозрачных, пока не доходит до непрозрачного объекта, или до бэкграунда.

Точнее, нет! Не помнит он ничего. Он изгибает луч и все. Зачем ему помнить КП поверхности, которую он уже прошел?

А еще можно и черные источники света делать! Прикольно... Тоже вся математика с физикой нафиг. :)
А прозрачность "-100" - это я вообще не въезжаю... :)

Кстати, никто не знает, как в ЛВ 5.6 задать, чтобы больше четырех плагинов для Dispasement Maps (ну или ему подобным закладкам)?

И как обеспечить плавную прокрутку плагинов в Surface, например? Или вычистить их все в пень...
 

Vladlen

Активный участник
Рейтинг
16
#15
>Точнее, нет! Не помнит он ничего. Он изгибает луч и все.
>Зачем ему помнить КП поверхности, которую он уже прошел?

Так для того чтобы в одних случаях на пов-ти с коэфф 1,0 неискажать луч (в большинстве случаев)
а в других случаях искажать (стекло) ;)
 
Рейтинг
93
#16
Искажения формируются сами собой. Когда луч искривляется, он смотрит уже в другую сторону, и рисуется уже другая часть предмета.
 
Сверху