Введение в программирование трехмерных игр с DX9

       

Луч, проходящий через точку p



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


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

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

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

Цели

  • Изучить реализацию алгоритма выбора объектов и понять как он работает. Выбор объектов можно разделить на четыре этапа:

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



Содержание раздела