Показать сообщение отдельно
Старый 24.03.2009, 17:08
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 2  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
>>Развивая тему 3Д решил попробовать сделать ещё освещение.
Правильно.
Делать можно так: Брать желательно среднюю точку грани, или если объект разбит на мелкие грани любую точку грани. В общем
Код:
var грань:Vector3D = new Vector3D(100,100,100);
var солнышко:Vector3D = new Vector3D(1000,1000,1000);
var свет:Number = Vector3D.distance(грань,солнышко);
Если солнышко будет далеко, то эффекта 0. Если близко то тоже 0;
Суммируя выше сказанное эффект 0, отсюда следует, что данный способ не подходит. Легче всего не напрячь процессор и получить красиво задумманое это просто сделать интервал дистанци для каждого объекта в отдельности и нафик этот свет, если он так далеко, то можно сделаь свет слева, свет справа или свет спереди или сзади.
В общем вот пример простого самодельного света. (свет спереди нагрузка на проц минимум)
http://www.murmadillo.tut.su/html/4cube.html

>>посему вопрос - как найти нормаль к плоскости в пространсвте?
>>ведь чтобы получить хотя бы нормаль с помощью Vector3D.crossProduct - надо знать 2 вектора лежащие на плоскости.

Ну так вы их знаете первый вектор это ваш свет, а второй это ваша плоскость.


Последний раз редактировалось Alex Lexcuk; 24.03.2009 в 17:19.