во-первых, частицы летят не на саму поверхность, а на её вершины, во-вторых, первая частица стремится с первой вершине, вторая - ко второй, четырехсотая (20x20) - к последней, четыреста первая частица - опять к первой и так далее, по кругу.
Примечание. На самом деле контрольных вершин у такого конуса - 460. Но об этом знают только моделеры.
Первое, что хочется подрегулировать - это степень стремления, тот самый goal weight, промелькнувший при выполнении операции Goal. Его надо искать в атрибутах частиц: в Channel Box он появляется как атрибут goalWeight[0], а в Attribute Editor - в разделе Goal Weights and Object под названием nurbsConeShapel. Это один и тот же атрибут, равный по умолчанию 0.5. Его увеличение ведет у усилению притяжения частиц к поверхности, а установка в ноль заставляет забыть о стремлении в поверхности вообще.
Поставьте два ключа на этот атрибут: один в двухсотом кадре - для goalWeight=0 и один в двести десятом - для goalWeight=0.3.
Совет. Для того, чтобы частиц не носились, как безумные, уменьшите атрибут conserve для них. Всегда используйте conserve при работе с Goal.
Задайте conserve=0.95.
Теперь частицы «вспоминают» о своей цели только в сотом кадре и мягко стремятся к своим вершинам.
Но не хватает хаоса, то есть все частицы стремятся к вершинам поверхности с одинаковой силой. Можно, конечно, рявкнуть на них полем турбулентности или «надуть» их с помощью expression для ускорения. Но тем не менее вопрос об индивидуальной силе притяжения остается открыт.
Пытливые умы, однако, уже заметили, что в Attribute Editor появился ещё один дополнительный атрибут в разделе Per Particle (Array) Attributes.
Он называется goalPP и характеризует индивидуальной силу стремления к поверхности для каждой частицы.
Дело в том, что индивидуальное ускорение частицы вычисляется умножением значения
goalPP на общий для всех частиц goalWeight[0]. Это позволяет задать как общую меру притяжения, так и индивидуальные множители для каждой частицы. По умолчанию goalPP равен единице, поэтому все частицы имеют одинаковый вес.
Выберите частицы и создайте для них Creation Expression: goalPP = rand(0.5, 1.5); Таким образом, когда общая сила притяжения (goalWeigh[0]) станет равна 0.3, веса всех частиц будут равномерно распределены в диапазоне от 0.15 до 4.5. Это заставит их стремиться к поверхности с разной скоростью и добавит хаоса в их движение.
Кстати, в этом случае степень стремления задается для каждой частицы всего один раз при испускании, то есть в момент рождения. Чтобы сделать движение ещё менее упорядоченным, скопируйте формулу для goalPP и создайте такой же Runtime Expression. Это заставит частицы менять свою степень стремления к поверхности в каждом кадре.
Совет. Если вы хотите, чтобы источник испустил количество частиц, точно равное количеству вершин, посчитайте, сколько вершин имеет поверхность, а затем введите это число как значение атрибута Max Count для частиц.
Таким образом, чтобы эффективно управлять притяжением частиц к поверхности, необходимо анимировать не только общую степень стремления goalWeight[0], но и задавать соответствующие значения для индивидуального атрибута goalPP, автоматически появляющегося после выполнения операции Particles=>Goal.