Как пересечь Луч с моделью местности?

В настоящее время я разрабатываю игру RTS в XNA. На данный момент у меня есть модель местности, сгенерированная из Heigthmap и некоторых юнитов, которые нарисованы на ней.

Следующим шагом будет дать отрядам команды, куда двигаться. Для этого мне нужно рассчитать точное положение местности за курсором при щелчке.

Для выбора единиц я просто генерирую луч, указывающий от курсора в сторону экрана, и выбираю первую единицу, пересекаемую этим лучом. Теперь это не сработает для местности, потому что все это одна модель.

Может кто-нибудь помочь мне?

С уважением Ник

P.S: я только что нашел это видео на YouTube, которое представляет именно решение моей проблемы... к сожалению, без какой-либо ссылки на код. http://www.youtube.com/watch?v=czHW3oK8_oI


person NiklasMM    schedule 09.06.2010    source источник
comment
мой поиск в Google не смог найти способ сделать это с помощью стандартных API-интерфейсов - результат пересечения лучей представляет собой расстояние до ближайшей точки и не говорит, где эта точка находится в объекте, с которым вы пересекаетесь. Это также для базовых форм, а не сложных сеток.   -  person Will    schedule 09.06.2010
comment
Так может быть, я должен пойти на совершенно другой подход?   -  person NiklasMM    schedule 09.06.2010


Ответы (2)


Возможно, этот образец из Creators Club станет хорошей отправной точкой:

http://creators.xna.com/en-US/sample/pickingtriangle

http://creators.xna.com/assets/cms/images/XNA_PickingTriangle_01_small.jpg

person Andrew Russell    schedule 09.06.2010

Я не знаком с XNA, но похоже, что ваша модель местности представляет собой сетку, и вы хотите вычислить пересечение луча с сеткой.

Если это так, есть описание пересечения Ray-Mesh на нижняя половина этой страницы. В нем описывается, как получить точку пересечения и другие данные.

Как правило, поиск в Google XNA ray mesh intersection дает много результатов. Если это вам не поможет, то я явно что-то упускаю.

person brainjam    schedule 09.06.2010