Render.ru

Связь контроллеров (при Снаряжение персонажей)

Even-render

Пользователь сайта
Рейтинг
2
#1
Никак не могу корректно связать контроллеры в условно иерархической структуре. На картинке пример структуры, наследование снизу вверх(квадрат - это корень иерархии). Идея была в том, что от вращения 4-го объекта зависило положение 1-го. Но при попытках это реализовать, возникла проблема. Макс начал писать ошибку в виде "круговое наследование". И всё бы правильно, только я же явно не наследовал эти объекты. Я широко пользовался контроллерами "pos/rot Constraint", а при наследовании, снимал галки на влияние вращений отцовских костей. И тогда никакой круговой зависимости по позиции быть не должно было. Как и по вращению.

скрипт/контроллер для Obj1 примерно такой:
Код:
dependsOn $Obj4.rotation.controller
dependsOn $Obj0.pos.controller

mypos = $Obj0.pos

mypos.y += sin($Obj4.rotation.x_rotation)*20
mypos.x += -sin($Obj4.rotation.y_rotation)*20

mypos

Так я сейчас не знаю что и делать даже. Может сделать какой-нибудь сторонний объект-объект, контролирующий трансформацию всех других "активных" элементов. Чтоб записывал что-то в левые(личные) параметры, а с них уже выводили своё положение они сами, например. Подскажите пожалуйста, что можно сделать.
Вообще в идеале, хотелось бы иметь возможность создавать зависимости не только от независимых величин, а например от разности зависимых (она-то меняться не должна, при равном передвижении обоих элементов).

P.S. Мне как-то удавалось всё-таки связать эти вещи между собой(через неявные скрипты, как я помню). Но результат тогда был неутешительный. Появлялись артефакты по смещению, и другой ерунде.


[О себе: недавно начал задумываться о проффесиональном росте, вследствие чего начал изучать новые способы снаряжения и MaxScript.]
 

Вложения

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
#2
dependsOn устаревший синтаксис,
Используй Assingn Controller, и Assingn Node в панели ScriptController во многом позволяет избавится от зацикливания.
В особо тяжких случаях делается внешний контроллер.
 

Even-render

Пользователь сайта
Рейтинг
2
#3
Спасиба за наводку, я их даже ещё не трогал ни разу. Сайчас пробью инфу.
 

Even-render

Пользователь сайта
Рейтинг
2
#4
Что-ж, видимо я нашёл ответ на свой вопрос первоначальный. Assingn Controller и Assingn Node в общем ничего не меняют. dependsOn всёравно добавляет параметр, связываемый скрипт в нужных контроллером/объектом. В итоге задав всё скриптами (для обоих) Макс уже не выкидывал никаких сообщений о циклах. Проблема, чего у меня сначало не получилось, скорее всего была в том, что obj 2,3,4 у меня были костями, и они какие-то очень стрёмные. Они сами двигаются специфически =(( .
Однако наверно всё-равно буду делать сторонний контроллер. Лучше иметь полную власть над движениями, ато я планирую использовать зависимые друг от друга параметры, и давольно хитро их переплетать.
Если у кого-нибудь есть(или может подскозать где взять) примеры искользования внешнего скрипта для управления какой-либо связанной системой, прошу поделиться, если это возможно.
Благодарю.
 
Сверху