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

Constrain point - "замирание" обьекта между двумя управляющими обьектами

Тема в разделе "Maya", создана пользователем moris 25600, 14 окт 2008.

Модераторы: Dark™, Skif
  1. moris 25600

    moris 25600 Активный участник

    С нами с:
    13.10.2006
    Сообщения:
    93
    Симпатии:
    0
    Баллы:
    7
    Есть у меня два куба и одна сфера, которой по очереди управляют эти кубы через контсрейн поинт - сфера наследует движение то одного куба, то другого. Все сделано по правилам - сфера заключена в группу и именно на группу назначен констрейн. Можно ли сделать так, что когда я переключаю управление одного куба на другой, то сфера не перемещалась? Как это сделать?
     
  2. Dark™ vip

    Dark™ Administrator Команда форума

    С нами с:
    28.10.2001
    Сообщения:
    3.110
    Симпатии:
    217
    Баллы:
    1.520
    Чисто констрейнтами, я думаю, не получится.. Надо МЕЛ юзать или другие методы
     
  3. Denzil

    Denzil Мастер

    С нами с:
    29.08.2000
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    360
    1. создаешь еще одну пустую группу (локотор) под каждым кубиком
    2. поит констрейнт этих групп к сфере. Их tx, ty,tz будут давать абсолютный оффсет для поинт констрейнов (основных, между кубиками и группой сферы).
    3. остается только их корректно переключать.
     
  4. Dark™ vip

    Dark™ Administrator Команда форума

    С нами с:
    28.10.2001
    Сообщения:
    3.110
    Симпатии:
    217
    Баллы:
    1.520
    Denzil, если не сложно, выложите, пожалуйста, сценку, я посмотреть хочу
     
  5. alex_alv

    alex_alv Активный участник

    С нами с:
    23.04.2008
    Сообщения:
    150
    Симпатии:
    0
    Баллы:
    14
    Если эти объекты называются pCube1, pCube2 и pSphere1 и все они находятся в мировых координатах (не внутри группы), то можно решить следующим образом:

    1) У сферы сделать аттрибут switch типа float. Когда он равен 0 или меньше, сфера повторяет движение первого куба. Когда он равен 1 или больше, то второго. В промежуточных положениях движения усредняются с учетом значения.

    2) Для сферы создать экспрешн (как и любое другое решение данной проблемы, будет работать только при анимации вперед, every frame, начиная с первого кадра):

    global float $_prevCoordinates[6];
    float $sw1,$sw2,$x1,$y1,$z1,$x2,$y2,$z2,$x,$y,$z;

    $sw2=clamp(0,1,pSphere1.switch);
    $x1=pCube1.translateX;
    $y1=pCube1.translateY;
    $z1=pCube1.translateZ;
    $x2=pCube2.translateX;
    $y2=pCube2.translateY;
    $z2=pCube2.translateZ;
    $x=pSphere1.translateX;
    $y=pSphere1.translateY;
    $z=pSphere1.translateZ;


    $sw1=1.0-$sw2;
    if(frame==1)
    {
    $x=$sw1*$x1+$sw2*$x2;
    $y=$sw1*$y1+$sw2*$y2;
    $z=$sw1*$z1+$sw2*$z2;
    }else
    {
    $x+=($x1-$_prevCoordinates[0])*$sw1+($x2-$_prevCoordinates[3])*$sw2;
    $y+=($y1-$_prevCoordinates[1])*$sw1+($y2-$_prevCoordinates[4])*$sw2;
    $z+=($z1-$_prevCoordinates[2])*$sw1+($z2-$_prevCoordinates[5])*$sw2;
    }
    $_prevCoordinates[0]=$x1;
    $_prevCoordinates[1]=$y1;
    $_prevCoordinates[2]=$z1;
    $_prevCoordinates[3]=$x2;
    $_prevCoordinates[4]=$y2;
    $_prevCoordinates[5]=$z2;


    pSphere1.translateX=$x;
    pSphere1.translateY=$y;
    pSphere1.translateZ=$z;
     
  6. Denzil

    Denzil Мастер

    С нами с:
    29.08.2000
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    360
    Да, без скрипта не обойтись... На нодах - cycle....
    Нужно переключать одновременно с подставлением офсетов, а это возможно только через скриптджоб.
    на всякий кидаю сценку. сохранить и переименовать в rar.
     
  7. moris 25600

    moris 25600 Активный участник

    С нами с:
    13.10.2006
    Сообщения:
    93
    Симпатии:
    0
    Баллы:
    7
    Круто, Denzil! Начал недавно осваивать mel и попытался написать нечто подобное, но результат получился не совсем таким, какой я ожидал - в результате я мог двигать сферу обеими кубами без переключателя вообще.
     
  8. Denzil

    Denzil Мастер

    С нами с:
    29.08.2000
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    360
    Ну а я наоборот....
    мелить начал давно, но понял, что это не совсем "правильное" решение. Ноды - рулят!
     
Модераторы: Dark™, Skif

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