Ненаправленный источник света

Страницы работы

Содержание работы

Omni Light - Omni Источник света

Omni light is a way of doing light, where the light is represented by a point in space, unlike directional lightsource. The omni light shinnes in every direction, also unlike directional light. But here the difrences stop. The algorithm of calculating colors, are the same as with directional lightsource. Now, imagine you have a lightning ball in your room, what does it do? Well, it shinnes in every direction, and cast light on everything, but still, it doesn’t cast light on everything looking “away” from it, and anything, which the light-rays cannot reach or hit (as a piece of paper, turned 90 degress from the light). Now, this actually looks much like the situation with the directional light, but still, we want to shine in every direction. Now, how do we do this? Simple, we know that where directional light shinned from one signle direction, omni light must shine in a whole bunch of directions, actually as much directions as needed. Now, what we need to do now, is to make directions from the omnilight-point to the face, and from this new direction, get the dot product of the new direction and the face normal. Lets now, draw a vector from omnilight-point to face midpoint, and then normalize this vector. This is done, by the following:

Ненаправленный источник света - способ выполнения источника света, где источник света представлен точкой в пространстве, в отличие от направленного источника освещения. Ненаправленный источник освещает сиянием в каждом направлении, также в отличие от направленного источника света. Но здесь кончаются различия. Алгоритм вычисления цветов, является также как с направленным источником освещения. Теперь, вообразите, что Вы имеете шарик света в вашей комнате, как это сделать? Хорошо, он сияет в каждом направлении, и проливает свет на все, но все еще, он не проливает свет на все смотрящее "вне" от его, и чего - нибудь, которое световые лучи не могут достигать или падать (как кусок бумаги, повернутый на 90 градусов от источника света). Теперь, это фактически очень напоминает ситуацию с направленным источником света, но все еще, мы хотим сиять в каждом направлении. Теперь, как мы делаем это? Просто, мы знаем, что, где направленный источник света светит от одного единственного направления, ненаправленный источник света должен сиять в целой связке направлений, фактически настолько большое количество направлений, как необходимо. Теперь, что мы должны делать теперь, надо сделать направления из ненаправленного источника света - точки к плоскости, и из этого нового направления, получить скалярное произведение нового направления и нормали к поверхности. Давайте теперь, нарисуем вектор от ненаправленной световой точки до плоскости в серединой точки, и затем нормализуем этот вектор. Это выполнено, ниже следующим:

Vecx = face.midx - omni.x;

Vecy = face.midy - omni.y;

Vecz = face.midz - omni.z;

Length = sqrt(vecx*vecx + vecy*vecy + vecz*vecz);

Vecx /= length;

Vecy /= length;

Vecz /= length;

Now, all we need to do now, is to find the angle between the two vectors, our new lightvector and the facenormal. Very simple, and almost with the same source as directional light.

Теперь, все, что мы должны делать теперь, должны найти угол между двумя векторами, нашим новым световым вектором и нормалью к поверхности. Это очень просто, и почти тоже самое как и в коде для направленного источника света.

Информация о работе