Создайте NURBS-конус.
Сделайте из него «тарелку» (scale = 5, 0.2, 5) и опустите его немного вниз (translateY=-1). Частицы пролетают сквозь него без малейших сотрясений.
Внимание! Не надо делать из препятствия пассивное твердое тело, чтобы частицы начали от него отскакивать. Активное тело тоже не надо делать.
Для частиц существует свой вид «зубной пасты», которой надо покрыть поверхность, чтобы она затвердела и стала отталкивать частицы. Столкновения частиц с поверхностью не имеют никакого отношения к динамике твердых тел, и расчет их производится совершенно независимо, их собственным Решателем (Solver).
Выберите сначала частицы, затем конус и выполните Particles=>Make Collide.
На конусе появится дополнительная нода geoConnector, а частицы начнут отскакивать от поверхности.
Чтобы уменьшить упругость отскока, установите для geoConnector атрибут resilience равным 0.3 (аналог bounciness для твердых тел) и добавьте немного трения: friction=0.2.
Если нода geoConnector не появляется в Channel Box, например, после удаления истории, её всегда можно разыскать в Attribute Editor для выбранной поверхности.
Теперь частицы стекают с поверхности. А нода geoConnector - своеобразный отвердитель поверхности и позволяет частицам отскакивать от объекта.
Совет. Если установить атрибут resilience в отрицательное значение, это позволит частицам проникать сквозь поверхность, изменяя при этом направление и величину скорости. Это удобно, например, когда надо внезапно притормозить частицы, не создавая новых полей или expressions.
Ещё одно отличие от твердых тел состоит в том, что частицам совершенно все равно, где у поверхности нормаль. Они будут одинаково успешно отскакивать от обеих сторон поверхности.
Примечание. Глазастые умы, конечно, заметят (особенно на виде сверху), что частицы стекают по поверхности своеобразными полосами, хотя испускание из источника идет равномерно и частицы распыляются во все стороны одинаково.
Дело в том, что NURBS-поверхности (как и в случае твердых тел) для расчета столкновений разбиваются на некоторое количество полигонов. Это количество регулируется атрибутом tessela-tionFactor ноды geoConnector, по умолчанию он равен 200.
Установите tesselationFactor=700, чтобы снизить «полосатость».
Сохраните файл (fontain.ma). Он нам ещё пригодится.
Испускание частиц с поверхностей и кривых
Чтобы быстро создавать объемы частиц в нужном месте или «облеплять» объект частицами, удобно испускать частицы с поверхностей или кривых (дальше будем для простоты говорить о поверхностях). В этом случае источником частиц становится как бы сама поверхность. (Реально, конечно, создается объект типа emitter, который просто имеет дополнительные соединения с поверхностью, через которые он получает информацию о геометрической форме объекта и испускает частицы точно с поверхности. Исследовать эти соединения вы можете в Hypergraph.) Удобно исследовать поверхностное испускание на примере плоскости. Если у вас отвращение к плоским объектам, возьмите любую модель (в случае сабдивов, можно применять трюки, описанные для динамики твердых тел).