Следование частиц вдоль поверхности объекта — houdini

В одном из последних проектов проскочила, интересная задача, по созданию частиц обтекающих корпус автомобиля. В результате у меня получился ассет который я и собираюсь описать и показать как его собрать самому.

Для начала нужна сама моделька машины (для теста я скачал вот эту бесплатную модель — http://tf3dm.com/3d-model/lamborghini-aventador-42591.html )

И с самого начала, для того что бы дальше упростить себе жизнь, лучше подготовить прокси модельку. Не то что бы это было обязательно, но во избежание всяких артефактов, залетаний партиклов в щели или под колеса, лучше это сделать. Вдоль поверхности этой модельки и будут лететь частицы, так что слишком детализированной её делать незачем.

В итоге имеем основную и прокси модели

Следование частиц вдоль поверхности объекта/Particles along to surface houdini

 Ставим прокси так что бы она была на том же месте что и основная модель.

Партиклы.

Основная идея по которой партиклы должны двигаться вдоль меша описана в уроке Стаса Демченко про волюмы ( https://www.youtube.com/watch?v=rzOxcFaMLfs ) Тут я не буду сильно вдаваться в подробности, просто советую посмотреть урок и разобраться с теоретической частью.

В итоге нужно сделать popnet на первый вход которого подать точки соскаттеренные с поверхности прокси модели, а во второй подать SDF Volume из этой же модели.

Следование частиц вдоль поверхности объекта/Particles along to surface houdini

Если теперь внутри popnet-а добавить ноду force то частицы начнут лететь в указанном направлении.

Следование частиц вдоль поверхности объекта/Particles along to surface houdini

 Для того что бы они повторяли контур машины, как раз и понадобятся знания из урока про волюмы. Нам нужно будет создать POPVOP в котором с помощью ноды volumegradient указать направление в котором нужно сместить партиклы а с помощью ноды volumesample узнаем величину на которую нужно сдвинуть точку.

Следование частиц вдоль поверхности объекта/Particles along to surface houdini

Теперь частицы скользят вдоль поверхности машины но застревают в конце. А нужно что бы они в нужном месте «сдувались» и летели дальше.

Следование частиц вдоль поверхности объекта/Particles along to surface houdini

Для того что бы нам было проще определять то место в котором частицы должны перестать следовать по контуру машины нужно завести на ней атрибут.

Думаю проще всего будет сделать маску в виде бокса нужного размера. Надо будет сконвертировать его в волюм и навесить сверху атрибут с именем mask, а после подать на третий вход попнета.

Следование частиц вдоль поверхности объекта/Particles along to surface houdini

Теперь можно загрузить атрибут в popnet с помощью ноды popattribfromvolume.

Следование частиц вдоль поверхности объекта/Particles along to surface houdini

А теперь нужно вернуться к тому воппопу в котором мы смещали частицы к поверхности и ограничить его действие атрибутом mask.

Следование частиц вдоль поверхности объекта/Particles along to surface houdini

Все готово. При желании можно настраивать геометрию так что частицы эмиттились только на носу авто, и дальше спокойно облетали его.

Трейлы.

Партиклы готовы, осталось сделать трейлы. Сперва нужно использовать ноду trail, а после неё ноду add которая бы создавала полигоны по атрибуту id.

Следование частиц вдоль поверхности объекта/Particles along to surface houdini

На этом сетап можно считать законченным. Частицы облетают поверхность меша и летят дальше и мы можем регулировать область откуда они будут сдуваться.

Сцена для желающих — https://gum.co/EnIH

final_preview