Render.ru

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

ASK'R

Активный участник
Рейтинг
5
#1
двигаем и он крутится и перемещается по вертикали как надо - как сделать?
логика получается примерно такая:
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
#2
Так там вроде все популярно расписано что именно тебя смущает ?
 

ASK'R

Активный участник
Рейтинг
5
#3
анимирую по 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
#4
Имя angle зарезервировано есть класс shape с таким названием.
Это что такое ? if pi/3<angle<2*pi/3 then (
 

ASK'R

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

Savin Denis

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

ASK'R

Активный участник
Рейтинг
5
#7
спс, немного лучше стало:
Код:
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
#8
А теперь покажи в хелпе цитату откуда ты такой синтаксис взял в скрипте if(a,b,c) ?
 

Savin Denis

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

ASK'R

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