Камрад
|
Щя я вам дам немного теории о тенях, рейтресинге и т.п.
Я уже несколько лет занмаюсь 3д графикой в 3д максе, я не профи в таких делах но вроде бы предстовляю как че работает. Итак на пальцах:
Основной современный способ, которым рисуют движки - это старое, классическое освещение - т.е. источник света (математически - всегда точечный, даже если он нарисован в виде прямоугольника или шара) испускает лучи - лучь доходит до каждой отображаемый в данный момент на экране модели, и для каждого пиксела, который мы видим происходит расчет с учетом отражающих способностей материала и угла. Т.е. все что не освещено прямыми лучами - будет абсолютно черным. Т.к. это сразу же будет очень нереалистично, используется некий общий уровень освешенности, к которому плюсуются все источники. Влияние каждого источника надо учитывать, так что, грубо говоря, если будет 8 источников вместо одного, движку придется пересчитать сцену 8раз. (Помните в здмарк2001 есть сцена с караселью, которая прогоняется два раза - с 1 и 8ю источниками - с 8ью фпс резко проседает, хотя геомтерия таже). Но в целом способ очень быстрый - надо считать освешенность только тех точек, что попали в экран. Но физически способ некорректный, а тени получаются только с четкими краями - т.к. мы имеем строго "свет проходит" и "свет непроходит". Самый главный минус - если сунуть в сцену комнаты лампочку и освтеить таким макаром - комната будет освещена очень слабо, (фактически видно будет только то что непосредственно попадает в свет, а вот все углы и прочая будут абсолютно черными.
Теперь, что такое рейтресинг. Рейтресинг (переводится навроде "отслеживание лучей"), или нелинейное освещение гораздо ближе к физике распределения света в реальности и дает куда более достоверный результат. Дело тут вот в чем: тот же пример с комнатой в реале - одной лампочки вполне хватает для того что бы осветить комнату, причем свет есть даже в углах, куда прямые лучи не попадат? Все очень просто - вторичными источниками света становтся абсолютно все предметы на которые падает свет - они же отражают его часть. Т.о. многократными отражениями свет попадает даже в темные углы (хотя с каждым отражением его все меньше). Рейтресинг (нелинейная освещение) дает очень мягкие (жизненные) тени, и фотореалистичную картинку, но... В том же 3д максе рейтресинг (нелинейное освещение) появилось только в 5ой версии (а до этого было только в виде плагинов вроде ментал рея, бразила, финал рендера и т.п.) и, самое печальное, метод непременим даже при создании анимационных лент - слишком долго считается один кадр даже на тех тачках что стоят в киностудиях. Дело тут в том что от каждого источника надо считать всю гемоетрию, до которой датягивается источник - причем каждый луч надо проследить до его столкновения со всеми преградами (по обычно считают хотябы два столкновения - первичное и вторичное) фотона с геометрией сцены. Только так можно понять как каждый луч влиет на освешенность. Представляете во сколько раз это замедляет рендринг? Для примера, 640х480 с одним источником света, дающее классическим методом ~60 фпс, при включение рейтресинга считается почти полминуты. Сколько получилось - 2-3 порядка? Так что о полноценной реалзиации нелинейного освещения можно забыть на несколько лет - говорить можно только о каких то приблеженных, очень условных методах - но даже они могут значительно улучшить картинку - что-то такое уже планируется на приставках плейстейшен3 и иксбокс360 - там камни как раз неплохо заточены под такие вещи.
з.ы. я тут все время оговаривался что под "рейтриснгом" имею в виду "нелинейное освещение". Дело в том что рейтресинг - не обязательно расчет света. Это могут быть и отражения (и преломления) - они идут по тому же принципу но для построения реалистичных отражений - тут вторичных столкновений нет, и вообще процесс хоть и значительно медленне чем нерейтресинговый, но все же куда быстрее чем освещение. Но для движком он особого смысла не имеет (отражения не так уж и часто попадают в картинку).
Ну вот вроде. Если че непонятно - спрашивайте. О принципах рейтресинга очень точно и канкретно все желающие могут почтитать на сайтах по 3д графике - 3dcenter.ru, render.ru, eol3d.com и т.д. яндекс поможет
|