Работа с обнаружением столкновений и реакцией на них

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

Возможно, одежда висит на жерди. Ваш персонаж (или любой другой объект, который заденет одежду) вьінудит одежду отклониться от жерди и развеваться по мере оседания. Поговорим о некоторых замечательных идеях - используя обнаружение столкновений и реакцию на них, перед вами открываются привлекательные возможности при моделировании одежды!

Работать с обнаружением столкновений и реакцией на них подозрительно просто. После того как вы примените скорость каждой точки, вы проверяете, находится ли точка внутри другого твердого объекта. Например, вы можете проверить, лежит ли точка одежды в сфере, используя простую проверку расстояния, или можете выполнить проверку точки и плоскости, чтобы узнать с какой стороны плоскости лежит точка (см. рис. 13.6).

Рис. 13.6. Точка сталкивается со сферой, если она расположена ближе, чем радиус сферы, или если она расположена за плоскостью

Итак, при обнаружении столкновений используются два простых объекта: сфера и плоскость. Необходимо создать класс, который бы отвечал за сталкиваемые объекты.

Для хранения данных, относящихся к объекту столкновений, вы можете использовать следующий класс (и два макроса):

// макрос, определяющий тип сталкиваемы объектов #Оегіпе СОЬЬІЗІОГ^ЗРНЕкЕ 0 #Оегіпе СОЬЫ81ОЫ_РЬМГЕ 1

Работа с обнаружением столкновений и реакцией на них

Создание анализатора .X данных одежды || Оглавление || Определение объектов столкновений