Render.ru
Поддержать

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

ASK'R

Активный участник
Рейтинг
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)

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
Так там вроде все популярно расписано что именно тебя смущает ?

ASK'R

Активный участник
Рейтинг
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', что не так?

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
Имя angle зарезервировано есть класс shape с таким названием.
Это что такое ? if pi/3<angle<2*pi/3 then (

ASK'R

Активный участник
Рейтинг
5
в зависимости от угла пытаюсь сдвинуть куда надо.. в максскрипте совсем зеленый новичек
исправил, переименовав angle в my_angle и заменив все упоминания
также Error Parsing Expression и начало строки - "if (my_angle<=pi/3 and" ;(

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
Это я к тому что там синтаксис не верный смотри внимательней.
Для начала отладь выражение в листенере, потом уже пихай его а ехпрешн
отсекай все пока не найдешь ошибку, и выражения в условиях типа (pi/3) заключай в скобки если не уверен в порядке операций

ASK'R

Активный участник
Рейтинг
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 что делать

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
А теперь покажи в хелпе цитату откуда ты такой синтаксис взял в скрипте if(a,b,c) ?

ASK'R

Активный участник
Рейтинг
5
возможно ошибаюсь, но вот вроде http://s40.radikal.ru/i087/1007/91/565d4d39db5f.jpg (насчет a,b,c ошибся точно, но это не имеет значения)
в 7м посте в неправильном порядке примеры синтаксиса 😉

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
Понятно, забудь про if(a,b,c) и про Float_Expression это атавизм когда в максе еще не было скрипта.
пользуйся Float_Script, и читай родной хелп, в нем нет функции if(a,b,c)

ASK'R

Активный участник
Рейтинг
5
аааа, то-то я думаю, что оно как-то сильно неюзабельно 😉
спасибо за наставление на путь верный