netlib.narod.ru< Назад | Оглавление | Далее >

Глава 15. Выбор объектов

Предположим, что пользователь щелкает по точке экрана s = (xy). На рис. 15.1 видно, что в этом случае пользователь выбрал чайник. Однако приложение не может немедленно определить, что при щелчке по точке s выбран именно чайник. Существует техника, позволяющая определить, какой именно из объектов сцены выбран. Эта техника называется выбором объектов (picking).


Рис. 15.1. Пользователь выбирает чайник

Рис. 15.1. Пользователь выбирает чайник


Мы знаем о чайнике то, что его изображение было спроецировано на область экрана внутри которой находится точка s. Более правильно будет сказать, что чайник споецирован в окне проекции таким образом, что точка окна проекции p, соответствующая точке экрана s находится внутри занимаемой им области. Так как эта задача зависит от связи между объектом и его проекцией, решение нам поможет найти рис. 15.2.


Рис. 15.2. Луч, проходящий через точку p, пересекает объект

Рис. 15.2. Луч, проходящий через точку p, пересекает объект, если точка p находится внутри его проекции. Обратите внимание, что точка p в окне проекции соответствует точке s на экране, по которой щелкнул пользователь


На рис. 15.2 видно, что луч, начинающийся в начале координат и проходящий через точку p пересекает тот объект, внутри которого находится точка p, в нашем случае это чайник. Следовательно, вычислив луч выбора мы можем перебрать все объекты сцены и проверить, пересекает ли их луч. Тот объект, который пересекает луч, и будет тем объектом, который выбрал пользователь. Ну и снова скажем, что в нашем примере это чайник.

Итак, в примере у нас есть точка s и чайник. В общем случае у нас есть точка экрана по которой щелкнул пользователь. Теперь нам надо вычислить луч выбора и проверить все объекты сцены, не пересекает ли их этот луч. Тот объект, который пересекает луч и будет тем объектом, который выбрал пользователь. Может случиться так, что луч не пересекает никаких объектов. Например, на рис. 15.1 пользователь может не выбирать один из четырех объектов на экране, а щелкнуть по белому фону, и луч выбора не пересечет ни один из объектов. Таким образом мы можем заключить, что если луч не пересекает ни один из объектов сцены, значит пользователь выбрал фон или что-нибудь не представляющее для нас интереса.

Выбор объектов используется во всех играх и трехмерных приложениях. Например, почти всегда пользователь взаимодействует с объектами игрового мира щелкая по их изображениям мышью. Игрок может щелкнуть по врагу, чтобы выстрелить в него, или по предмету, чтобы взять его. Чтобы игра правильно реагировала на действия пользователя, нам надо определить по какому объекту произведен щелчок (это враг или предмет?) и местоположение этого объекта в пространстве (куда должен быть выпущен снаряд или может ли игрок дотянуться до этого предмета?). На все эти вопросы и дает ответ выбор объектов.


Цели
  • Изучить реализацию алгоритма выбора объектов и понять как он работает. Выбор объектов можно разделить на четыре этапа:
    • Получение данных точки экрана s по которой был сделан щелчок и вычисление соответствующей ей точки p в окне проекции.
    • Вычисление луча выбора, который начинается в начале координат и проходит через точку p.
    • Преобразование луча выбора и объектов сцены в одну общую систему координат.
    • Определение объекта, пересекаемого лучом выбора. Тот объект, который пересекает луч, и есть тот объект, который выбрал пользователь на экране.


netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz