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

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

Тема в разделе "MAXScript", создана пользователем Even-render, 29 мар 2010.

Модераторы: Savin Denis
  1. Even-render

    Even-render Пользователь сайта

    С нами с:
    27.03.2010
    Сообщения:
    23
    Симпатии:
    0
    Баллы:
    2
    Никак не могу корректно связать контроллеры в условно иерархической структуре. На картинке пример структуры, наследование снизу вверх(квадрат - это корень иерархии). Идея была в том, что от вращения 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.]
     

    Вложения:

    • 1722932.jpg
      1722932.jpg
      Размер файла:
      3,3 КБ
      Просмотров:
      47
  2. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    dependsOn устаревший синтаксис,
    Используй Assingn Controller, и Assingn Node в панели ScriptController во многом позволяет избавится от зацикливания.
    В особо тяжких случаях делается внешний контроллер.
     
  3. Even-render

    Even-render Пользователь сайта

    С нами с:
    27.03.2010
    Сообщения:
    23
    Симпатии:
    0
    Баллы:
    2
    Спасиба за наводку, я их даже ещё не трогал ни разу. Сайчас пробью инфу.
     
  4. Even-render

    Even-render Пользователь сайта

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

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