1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

ветер в паинт эффекте

Тема в разделе "Maya", создана пользователем mickey 1373, 13 июн 2002.

Модераторы: Dark™, Skif
  1. mickey 1373

    mickey 1373 Знаток

    С нами с:
    21.12.2001
    Сообщения:
    461
    Симпатии:
    0
    Баллы:
    29
    Когда осел и шрэк пришли в жилище по холму- видели как там травка и цветочки

    колыхались? Можноли какнить настроить травку из паинтэффекта чтобы

    персонаж ее колыхал ?Мож както ветер можно от обьекта задать или еще

    что?Подскажите.
     
  2. Guest

    Паинт Эффектс никак не взаимодействует с объектами, это ж пост продакшн...
     
  3. Guest

    Если постараться, то всё же можно. Сразу скажу: у меня нет готового отработанного решения, для этого требуется больше времени и больше навыков написания скриптов на MELе нежели есть у меня.
    Коротко идея состоит в следущем: Траву можно получить располагая на NURBS поверхности кучу коротких штрихов (strokes) (например с помощью Auto Paint Random). С каждым штрихом будет связана своя уникальная кисть. У каждой кисти есть нужный нам в данном случае атрибут uniformForce , определяющий направление и величину внешней силы, действующей на траву наряду с turbulence forcee, имитирующей колыхание травы от ветра. По умолчанию uniformForceX=uniformForceY=uniformForceZ=0; Предположим , что с ногой персонажа, идущего по траве, связан локатор с именем Locator. Тогда можно определить составляющие uniformForce как функции расстояния между Locator и центром штриха (Stroke) , с которым связана данная кисть. При этом подразумевается, что таких штрихов много и все они достаточно короткие.

    Итак, для одного штриха это будет выглядеть следующим образом.

    Имя штриха - Stroke
    Имя связанной с ним кисти - GrassBrush
    Имя объекта, символизирующего ступню персонажа - Locator

    Добавляем для GrassBrush два векторных атрибута ExtForcePos и ParentStrokePos.

    Связываем в Connection Editor
    Locator.center => GrassBrush.ExtForcePos
    Stroke.center => ParentStrokePos

    Далее открываем в AttributeEditor нашу кисть Brush и для её аттрибутов
    UniformForceX, UniformForceY, UniformForceZ пишем следущее выражение:

    float $ExtForceMag = .5;
    float $ExtForceMaxDist = 1;
    float $DistX = parentStrokePosX - ExtForcePosX;
    float $DistY = parentStrokePosY - ExtForcePosY;
    float $DistZ = parentStrokePosZ - ExtForcePosZ;

    if ($DistX > $ExtForceMaxDist) uniformForceX = 0;
    else uniformForceX = $ExtForceMag * (1-linstep(0,$ExtForceMaxDist,(parentStrokePosX - ExtForcePosX)));

    if ($DistY > $ExtForceMaxDist) GrassBrush.uniformForceY = 0;
    else uniformForceY = $ExtForceMag * (1-linstep(0,$ExtForceMaxDist,(parentStrokePosY - ExtForcePosY)));

    if ($DistZ > $ExtForceMaxDist) GrassBrush.uniformForceZ = 0;
    else uniformForceZ = $ExtForceMag * (1-linstep(0,$ExtForceMaxDist,(parentStrokePosZ - ExtForcePosZ)));


    Анимируем положение Locator . Проигрываем анимацию и видим, что трава наряду с колыханием от "ветра" ещё и отклоняется при приближении к ней локатора на расстояние менее единицы.

    А теперь осталось самое интересное : написать скрипт, который будет делать всё описанное выше для кучи strokes более элегантно. Каюсь, не столь силён в программировании на MELе. Поэтому оставляю сию задачу для более крутых (если кто всё же что-нибудь напишет на основе этой идеи, не забудьте поделиться скриптиком со мной) Я лишь хотел показать, что это такой эффект в принципе возможн.
     
  4. Guest

    Выражение, приведённое в моём предыдущем посте, естествнно можно сделать короче, если заменить внутри linstep разницу координат ParentStroke и ExtForce
    на уже посчитанную в начале выражения переменную $Dist (для X,Y и Z соответственно). Забыл поправить.
     
  5. mickey 1373

    mickey 1373 Знаток

    С нами с:
    21.12.2001
    Сообщения:
    461
    Симпатии:
    0
    Баллы:
    29
    большое спасибо,я попробую разобратся...
     
  6. Guest

    Da vy chto, rebiata, s uma soshli?

    Tam je est' Behavior/Turbulence/Grass Wind specialno dlia etih tselei. Vot daje tutorial na AliasWavefront: How to Create a Tree.

    http://www.aliaswavefront.com/en/Tmpl/Maya/html/index.jhtml?page=/en/Community/Learn/how_tos/paint_fx_fur/paint_fx_fur_m.html#
     
  7. Guest

    Для tundra : Прочитайте пожалуйста повнимательнее вопрос автора.
    Речь идёт о взаимодействии травы PaintEffects с объектами в сцене.
    Grass Wind влияет сразу на всю траву, созданную с помощью кисти с эти атрибутом. Вопрос был о том как заставить колыхаться траву именно в том месте, где по ней идёт персонаж.
    А вот вам цитата из того места, куда я лезу первым делом в подобных
    случаях :) :
    "Grass Wind
    Turbulence is applied as a world space force. The force applied to the tips of the tubes is delayed from that applied at the roots, resulting in motion similar to grass blowing in the wind."
    Так что не спешите с выводами. :)
     
  8. Guest

    A sozdat' "otdelnuiu" travu vokrug puti personaja i skompositit' ee? Ili sdelat' neskolko raznih Trax clips ( raznaia reaksia travy) i rasstavit' ih po puti?
    How about some cheap trix ;-)
     
  9. Guest

    У людей , занятых в этой индустрии, существует поговорка:
    "It is good if it looks good". Что в моём вольном переводе выглядит как:
    "Если это выглядит так, как нужно, значит это - то что нужно."
    Любой способ приветствуется.
     
  10. mickey 1373

    mickey 1373 Знаток

    С нами с:
    21.12.2001
    Сообщения:
    461
    Симпатии:
    0
    Баллы:
    29
    я подумал мож проще вручную?
     
  11. Guest

    Без комментариев.
     
Модераторы: Dark™, Skif

Поделиться этой страницей