2. Превратить новую поверхность в твердое тело, сделав это в режиме Polygon. После этого можно даже удалить у него сэбдив-shape.

3. Оригинальную поверхность нужно припарентить к твердому телу, чтобы она двигалась вместе с ним.

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

Искусство бить посуду

Посмотрим теперь, как «расколотить» твердое тело на некоторое количество осколков. Если вас искушает операция Effects=>Shatter, можете самостоятельно поиграть с ней, чтобы убедиться, что предсказуемого эффекта от нее трудно добиться. А задав число осколков больше сорока, вы наверняка отправите MAYA в отпуск за свой счет. Лучший способ распилить объект на куски - это сделать осколки руками. Сколько надо и там, где надо. Неоценимую помощь здесь окажут инструмент Paint Selection Tool и операция Edit Polygons=>Extract (не забудьте только включить Polygon=>Tool Options=>Keep Faces Together).

Если осколки готовы, надо найти способ заставить их разлетаться при ударе. Основная проблема, которая может возникнуть в самом начале - это взаимопроникновение и большое количество соударений в одном кадре.

Посмотрим, как ее можно решить на практике. Если вам лень делать посуду и уж тем более пилить ее на куски, откройте файл teapotCracked.ma и убедитесь, что в нем находятся несколько полигональных осколков, чайника плотно прилегающих друг к другу.

Выберите плоскость и превратите ее в пассивное твердое тело.

Затем выберите все осколки и превратите их в активные твердые тела.

Только не нажимайте кнопку Play, иначе MAYA уйдет в кому: ведь мы нарушили пятый закон динамики о несоприкасаемости твердых тел в первом кадре. Но мы не хотим обтачивать осколки и обеспечивать зазор между ними. Вместо этого разрешим им проникать друг в друга, а точнее, отключим у них способность сталкиваться друг с другом.

Для этого у всех выбранных осколков в Channel Box установите для твердых тел атрибут collisions в off, после чего эти тела перестанут реагировать на столкновения.

Теперь для всех осколков можно также установить начальную скорость initialVelocityY=-10, чтобы они бодро рухнули на плоскость.

Однако избавив осколки от необходимости сталкиваться друг с другом мы также запретили им сталкиваться с любыми твердыми телами вообще! Чтобы исправить это недоразумение и придать плоскости эксклюзивное право отбивать любые удары (даже от объектов с выключенным атрибутом collisions) воспользуемся секретным атрибутом (а точнее, секретным значением) col-lisionLayer. По умолчанию сталкиваются между собой только те твердые тела, у которых значение атрибута collisionLayer совпадает. Тела, у которых он имеет разные значения, просто игнорируют друг друга. Однако существует еще и секретнейшее значение этого атрибута, равное минус единице, которое заставляет объект сталкиваться со всеми твердыми телами, вне зависимости от значений их атрибутов collisions и collisionLayer.


⇐ вернуться назад | | далее ⇒