Мягкие тени: сферический источник света

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

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

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


person Community    schedule 08.12.2012    source источник
comment
Я считаю, что вы решаете здесь не ту проблему; на самом деле вам нужны не однородные точки на сфере (которые поместят большую часть интенсивности около края сферы), а скорее однородные точки на окружности, видимой точкой.   -  person tjltjl    schedule 08.12.2012
comment
Более подробная информация о вышеизложенном здесь: stackoverflow.com/ questions / 31709332 / ray-tracing-soft-shadow /   -  person Miloslaw Smyk    schedule 05.08.2015


Ответы (2)


Graphics Gems 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);
}

(Это второй из четырех методов, приведенных в статье Выбор точки сферы MathWorld.)

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

person Gareth Rees    schedule 08.12.2012
comment
Где мы принимаем во внимание фактическое положение сферического источника света в мировом пространстве? Согласно ресурсу MathWorld, который вы связали, это должно быть для единичных сфер, поэтому радиус равен 1. Но как насчет фактического положения источника света сферы XYZ, где это принимается во внимание? - person ; 09.12.2012
comment
Извините: я думал, вы найдете это легким! См. Исправленный ответ. - person Gareth Rees; 09.12.2012