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

Перемещение треугольника Рело

Тема в разделе "MAXScript", создана пользователем ASK'R, 9 июл 2010.

Модераторы: Savin Denis
  1. ASK'R

    ASK'R Активный участник

    С нами с:
    18.03.2008
    Сообщения:
    94
    Симпатии:
    0
    Баллы:
    5
    двигаем и он крутится и перемещается по вертикали как надо - как сделать?
    логика получается примерно такая:
    c 0 по 60град пивот на узел 0 крутим и перемещаемся
    с 60 до 120 пивот на узел 4 только крутим
    120-180 пивот на узел 7 крутим и перемещаемся
    если делать его из трех арок по 4 узла (NGon трехсторонний, Arc по Center-End-End и расплодить по 120град, собрать, собрать в 1 обьект)

    как это оформить в скрипт контроллере?
    (описание, что такое треугольник Рело: http://ru.wikipedia.org/wiki/Кривая_постоянной_ширины, есть решение для синема4д: http://www.etudes.ru/ru/3dlessons/3d003/index.php)
     
  2. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Так там вроде все популярно расписано что именно тебя смущает ?
     
  3. ASK'R

    ASK'R Активный участник

    С нами с:
    18.03.2008
    Сообщения:
    94
    Симпатии:
    0
    Баллы:
    5
    анимирую по Y врашение, ставлю на X позицию Expression controller c следующим кодом:

    if (angle<=pi/3 and angle>=0) then (
    $.pivot=getKnotPoint 1 1
    2*radius*angle
    )
    if pi/3<angle<2*pi/3 then (
    $.pivot=getKnotPoint 1 4
    2*radius_round*angle
    )
    if 2*pi/3<=angle<=pi then (
    $.pivot=getKnotPoint 1 7
    2*radius*angle
    )

    где
    angle - скаляр зацеплен за $NGon01.rotation.controller.'Y Rotation'
    radius - скаляр радиус арки (цифра)
    radius_round - скаляр радиус треугольника (цифра)

    при попытке Debug или Evaluate выдается Error Parsing Expression 'if (angle<=pi/3 and', что не так?
     
  4. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Имя angle зарезервировано есть класс shape с таким названием.
    Это что такое ? if pi/3<angle<2*pi/3 then (
     
  5. ASK'R

    ASK'R Активный участник

    С нами с:
    18.03.2008
    Сообщения:
    94
    Симпатии:
    0
    Баллы:
    5
    в зависимости от угла пытаюсь сдвинуть куда надо.. в максскрипте совсем зеленый новичек
    исправил, переименовав angle в my_angle и заменив все упоминания
    также Error Parsing Expression и начало строки - "if (my_angle<=pi/3 and" ;(
     
  6. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Это я к тому что там синтаксис не верный смотри внимательней.
    Для начала отладь выражение в листенере, потом уже пихай его а ехпрешн
    отсекай все пока не найдешь ошибку, и выражения в условиях типа (pi/3) заключай в скобки если не уверен в порядке операций
     
  7. ASK'R

    ASK'R Активный участник

    С нами с:
    18.03.2008
    Сообщения:
    94
    Симпатии:
    0
    Баллы:
    5
    спс, немного лучше стало:
    Код:
    if (my_angle<pi/3,2*radius*my_angle,0)
    работает как задумано, но
    Код:
    if (my_angle<pi/3,$NGon01.pivot=getKnotPoint $NGon01 1 1,0)
    работать на желает, хотя в листере
    Код:
    $NGon01.pivot=getKnotPoint $NGon01 1 1
    нормально отрабатывает

    странно, что синтаксис в експрешшенах отличается от просто макскриптового - if(a,b,c) и if условие then что делать else что делать
     
  8. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    А теперь покажи в хелпе цитату откуда ты такой синтаксис взял в скрипте if(a,b,c) ?
     
  9. ASK'R

    ASK'R Активный участник

    С нами с:
    18.03.2008
    Сообщения:
    94
    Симпатии:
    0
    Баллы:
    5
    возможно ошибаюсь, но вот вроде http://s40.radikal.ru/i087/1007/91/565d4d39db5f.jpg (насчет a,b,c ошибся точно, но это не имеет значения)
    в 7м посте в неправильном порядке примеры синтаксиса ;)
     
  10. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Понятно, забудь про if(a,b,c) и про Float_Expression это атавизм когда в максе еще не было скрипта.
    пользуйся Float_Script, и читай родной хелп, в нем нет функции if(a,b,c)
     
  11. ASK'R

    ASK'R Активный участник

    С нами с:
    18.03.2008
    Сообщения:
    94
    Симпатии:
    0
    Баллы:
    5
    аааа, то-то я думаю, что оно как-то сильно неюзабельно ;)
    спасибо за наставление на путь верный
     
Модераторы: Savin Denis

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