![]() |
Как определить, освещён энтити или нет?
|
Re: Как определить, освещён энтити или нет?
Найти ближайшие вертексы на карте ... и посмотреть освещены ли они ..
|
Re: Как определить, освещён энтити или нет?
А как узнать освещённость вертекса? Можешь показать кодом?
|
Re: Как определить, освещён энтити или нет?
давай за 70$ напишу тебе код ... :-)
(ето эгоизм с моей стороны ... да да ...) в общем imho алгоритм таков ищем ближайшие вертексы (или вертекс) и смотрим на lightmap текстуру которая ложится на етот вертекс там проводим не большой анализ ... типа вертекс вообще не освещен, или освещен не полностью, или освещен полностью изходя из етого смотрим на остальные вертексы и приходим к одному из трех выводов ... 1) обьект не освещен 2) обьект полуосвещен 3) обьект освещен :) ps. я блиц уже давным давно не юзаю ... потому о реализации пунктов ко мне можно не обращатся :) |
Re: Как определить, освещён энтити или нет?
Если лайтмап и телепорты статичны, то ты заранее должен знать какой из них освещен, а какой нет.
Если же телепорты динамичные, то можно просто от источника освещения или с его позиции "пикать" (ты же когда создавал лайтмап, ставил лампочку?) до телепорта и если возвращает хендл меша телепорта, значит освещен. Пикать можно с помощью LinePick или использовать EntityVisible предварительно поставив карту и телепорты на проверку EntityPickMode() ЗЫ Последний параметр у EntityPickMode не забудь ;) |
Во!! Меня осенила мысль!! Я кажется придумал как это сделать - у меня ж у террайна пространственные координаты соответствуют текстурным - это упростит задачу. jimon, спасибо шо навёл на мысль.
Cyan, не-е-е, я ж сам занимался мапперством в Team Fortress: в данном случае там нет лампочки, а свет проецируется с неба. Т.е. там точно не Visibl'ом и не Pick'ом делают. У меня хоть и есть лампочка, но она не соответствует лайтмапе, ещё для этого нужно будет деревьям делать PickMode'ы, это всё увеличивает тормоза и геморрой. + если у меня буит смена дня и ночи, то мне нужно поменять освещённость объектов вместе с лайтмапой... В-общем, у меня есть идея на этот счёт, если получится - скажу как я это устроил. |
Re: Как определить, освещён энтити или нет?
Есть идея ты же лаит мапу делал в максе , она исходила от лампочики так?
ну вот на месте лампочи создай думми в блитце найди его финдчайлдом и так если лампочка и телепорт на растояние менье 300 (сам подгони скоа надо) то телепорт освещен |
Re: Как определить, освещён энтити или нет?
Horror, не, мне надо именно затенён он чем-то или нет.
|
Re: Как определить, освещён энтити или нет?
Они у тебя же не денамично перемещяются, и их у тебя небудет Мильён, просто каждый находи и ставь ему значение затемнен он или нет!
|
Re: Как определить, освещён энтити или нет?
vlad, я затенение буду использовать для травы, которой как раз и буит мильон, а значит, мне нужна автоматизация.
З.Ы. так же мне надо определять освещённость не только статики, но и мобов - а они бегают, значит, жёстко им установить параметры нельзя. З.З.Ы. Кстати, телепорты на картинке строятся игроком прямо во время игры, т.е. он может оказаться в любой области освещения. |
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 циклов, и дописать просчет плавного изменения тени. это в теории.. может где ошибся |
Часовой пояс GMT +4, время: 01:33. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot