Показать сообщение отдельно
Старый 16.12.2007, 14:51   #11
FrankH
Разработчик
 
Регистрация: 09.12.2007
Сообщений: 376
Написано 83 полезных сообщений
(для 122 пользователей)
Re: Как определить, освещён энтити или нет?

Я когда-то писал просчет лайтмапы для левела, помоему тебе нужен тот же алгоритм, хотя может проще и по лайтмапе:
получаем dx,dy,dz - вектор освещения(разница координат источникасвета и мишени)
max_lvl_height - предел высоты уровня(допускаем, что солнце не опустится ниже уровня)
d=dy/max_lvl_height ;получаем отношение высот
dx=dx/d
;пропорционально уменьшаем отрезок проверки
dy=dy/d
;для экономии производительности
dz=dz/d
for all.Unit=Each Unit
if LinePick (entityx(all\object),entityy(all\object),entityz(a ll\object),dx,dy,dz)=my_terrain then
all\light=1
else
all\light=0
endif
next

для движущегося юнита нужно просчитать переменные заранее, проверять затененность раз в N циклов, и дописать просчет плавного изменения тени.
это в теории.. может где ошибся
(Offline)
 
Ответить с цитированием