2012-12-08 2 views
4

Я пытаюсь реализовать мягкие тени в своем raytracer. Для этого я планирую снимать многократные лучи тени от точки пересечения к источнику света области. Я пытаюсь использовать сферическую область света - это означает, что мне нужно создать случайные точки на сфере для вектора направления моего луча (напомним, что лучи заданы с началом и направлением).Мягкие тени: сферическая область Источник света

Я искал способы создания равномерного распределения случайных точек на сфере, но они кажутся немного более сложными, чем то, что я ищу. Кто-нибудь знает какие-либо методы для создания этих точек на сфере? Я считаю, что источник света сферы сферы будет просто определяться его мировыми координатами XYZ, значением цвета RGB и r-радиусом.

Спасибо, и я ценю помощь!

+1

Я считаю, что вы решаете неправильную проблему здесь; вам действительно не нужны однородные точки на сфере (которая бы поместила большую часть интенсивности вблизи края сферы), а скорее равномерные точки на окружности, рассматриваемой точкой. – tjltjl

+0

Подробнее об этом вы найдете здесь: http://stackoverflow.com/questions/31709332/ray-tracing-soft-shadow/31822904#31822904 –

ответ

5

Графика Самоцветы III, стр 126:

void random_unit_vector(double v[3]) {  
    double theta = random_double(2.0 * PI); 
    double x = random_double(2.0) - 1.0; 
    double s = sqrt(1.0 - x * x); 
    v[0] = x; 
    v[1] = s * cos(theta); 
    v[2] = s * sin(theta); 
} 

(Это второй из четырех методов приведены в Sphere Point Picking статье MathWorld в.)

ЕТА: Если сфера радиуса г является с центром в O и u - случайный единичный вектор, то случайная точка на поверхности сферы задается O + ru.

+0

Где мы принимаем во внимание фактическое положение сферического источника света в мировом пространстве ? Согласно ресурсу MathWorld, который вы связали, это должно быть для единичных сфер, поэтому радиус равен 1. Но как насчет фактического положения сферического источника света XYZ, где это учитывается? –

+0

Извините: я думал, вы найдете, что это легко! См. Пересмотренный ответ. –

0

Множество хороших формул для случайных распределений найдено в Global Illumination Compendium. Часть 4.B. имеет формулы для генерации точек на (геми) сфере. Это отличная ссылка на выборку, интеграцию и т. Д.

 Смежные вопросы

  • Нет связанных вопросов^_^