Суть вопроса такая, есть в библиотеках ДГУИ полезная функция:
method Win2World takes real X, real Y, real Range returns VECTOR3
Переводит относительные оконые координаты (от -1 до +1), в мировые, результирующая точка будет расположена на растоянии от камеры равном Range
В ренж нужно передать растояние от камеры до проекции этой точки на террейн, и вопрос заключается в том каким способом лучше найти это пересечение, пока есть вараинт перебора циклом с мелким шагом, но мне кажется это не лучшее решение, ведь при огромных расстояних это вызовет высокую нагрузку

Принятый ответ

а разве мы не задаём его триггерно?
посмотри как это сделано в дгуи
там же пример есть
ну а вообще
GetCameraTargetPositionX/Y/Z()-GetCameraEyePositionX/Y/Z()
это координаты вектора
а потом тупо высчитываем длинну вектора (гуглим вектора или теорему Пифагора)
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
24
8 лет назад
0
Да, минимальные и максимальные параметры конечно будут указаны
т.е. вектор пересекает ландшафт несколько раз
Смотри в моем способе идет проверка, если на участке есть пересечение, он делится попоплам и берется половина ближайшая к камере, потом если в нем тоже есть пересечение процедура повторяется и тд, до тех пор пока не останется только одно пересечение, с этим проблем не будет) Спасибо, думаю вопрос можно закрыть
0
28
8 лет назад
0
как ты определишь пересечение?
имхо лучше делить на области и перебирать их по удалению от камеры
0
24
8 лет назад
Отредактирован darkowlom
0
Пересечнеие будет где высота точки совпадает с высотой ланда
0
28
8 лет назад
0
darkowlom, а для этого нужно перебрать все точки
смысл делить на 2 если мы и так весь промежуток проверяем
0
24
8 лет назад
0
nvc123, да, действительно, не подумал, правда перебор областей тоже не спасет, фактиечски это о же перебор по вектору с шагом, хотя ля единичного проэцирования а не проэцирования пучков, нагрузка будет невелика даже на протяжении всей карты
0
28
8 лет назад
0
darkowlom, перебор областей позволяет сразу отбросить те области где пересечений точно нету (вектор не пересекает верхнюю и нижнюю границы ланда в области) и может дать область в которой точно есть пересечение (вектор пересекает и верхнюю и нижнюю границы)
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.