Форум CG художников
Уроки => Autodesk Maya => Scripts => Тема начата: Oleg Sadovnichiy от 08 Июля 2013 в 22:48
-
Выкладываю полезный скрипт для тех кто его не знает.
он служит для поворота инстансов относительно нормали поверхности
Вначале нужно создать векторный, пер-партикловый атрибут. Выбрать поверхность относительно которой будут повернуты инстансы и создать closest Point constrain.
vector $p = ваша система частиц.position;
float $x = $p.x;
float $y = $p.y;
float $z = $p.z;
setAttr closestPointOnMesh1.inPosition $x $y $z;
vector $normal = `getAttr closestPointOnMesh1.normal`;
ваша система частиц.векторный, пер-партикловый атрибут = $normal;
То есть если ваша система частиц называеться particleShape1
и созданный вами атрибут называется aim_dir
то скрипт будет выглядеть так.
vector $p = particleShape1.position;
float $x = $p.x;
float $y = $p.y;
float $z = $p.z;
setAttr closestPointOnMesh1.inPosition $x $y $z;
vector $normal = `getAttr closestPointOnMesh1.normal`;
particleShape1.aim_dir = $normal;
После этого в закладке Instanser в атрибутах частиц, нужно выставить опцию Aim direction в положение созданного вами атрибутта.
Если инстансер стоит вверх ногами или ещё как то создайте ещё один атрибут и укажите ось Y.
Я создам атрибут с названием Up.
Создаём еспрешн для этого атрибута.
particleShape1.Up = <<0.1.0>>;
и выставляем этот атрибут в опции Up axis частиц.
-
полезно, спасибо, сам писал?
-
писал не я, даже не знаю кто