При «честном» просчете столкновений MAYA вынуждена анализировать каждый полигон поверхности на предмет взаимодействия с кривыми. Разумно было бы подменить сложную поверхность на что-нибудь, не требующее такого интенсивного анализа. В роли подмены в MAYA взяты два примитива: сфера и куб. (Я, кстати, не знаю, почему не были выбраны другие процедурные примитивы, типа цилиндра или тора, поверхность которых вычисляется по формуле, а не перебором полигонов. Наверное, предполагалось, что персонаж всегда либо кругло-яйце-головый, либо же имеет квадратную голову.)
Таким образом, в списке констрейнов еще два типа: Collision Sphere и Collision Cube. Они позволяют создать для выбранных кривых объект для столкновений. Этот объект сферической или кубической формы можно передвигать, вращать или масштабировать.
Примечание. Любители динамики твердых тел, конечно, сразу сообразят, что это аналог атрибута Standln, который подменяет реальную поверхность твердого тела на примитивный куб или сферу для расчета столкновений с другими твердыми телами.
Типичный способ применения констрейнов такого типа заключается в том, что после создания волос для отработки столкновений с телом создается несколько констрейнов типа Collision Sphere, один из которых имитирует столкновения с головой и располагается в соответствующем месте, другие масштабируются и размещаются (или даже группируются к скелету) в тех местах, где расположены плечи.
Все это, конечно, трюки и обман, однако если взять хорошопол и тональную модель и выполнить Hair=>Make Collide, просчет столкновений будет происходить мало того, что не быстро, а порой и несколько «неаккуратно», вынуждая увеличивать значение атрибута Collide Over Samples и, тем самым, еще более растягивать время просчета динамики.
Кроме большей точности и скорости просчета, эти два констрейна имеют еще несколько преимуществ.
Во-первых, кривые никогда не застревают в них, в отличие от реальных поверхностей.
Во-вторых, столкновения с поверхностями можно задать только для всей системы волос (hairSystem), а констрейны могут быть созданы только для выбранных кривых.
Выбор поверхностей и оптимизация столкновений Перед тем как закончить обсуждение взаимодействий между динамическими кривыми и поверхностями, я хочу обсудить некоторые практические аспекты применения вышеописанных методов и дать некоторые рекомендации по оптимизации просчета динамики.
Во-первых, поверхность, из которой растут кривые, не обязана быть объектом для столкновений. Это может быть лишь её небольшой скопированный участок, расположенный в нужном месте.
Во-вторых, не используйте сложные модели непосредственно для расчета динамики коллизий. Никто, как правило, не увидит, что там происходит под покровом массива волос (если только вы не делаете рекламу шампуня Head £t Shoulders). Используйте «подставки».
Острые грани, открытые края поверхностей, мелкие детали - все это «не по вкусу» динамике кривых. Избегайте их.
Не торопитесь увеличивать количество сегментов на кривых, используйте Collide Over Sample со значениями 1 или 2. Это не только сэкономит время просчета, но и сохранит упругость кривых.