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

Struct muCharacter - и методы структуры

Тема в разделе "MAXScript", создана пользователем IrakliSpain, 21 янв 2010.

Модераторы: Savin Denis
  1. IrakliSpain

    IrakliSpain Активный участник

    С нами с:
    17.07.2009
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    5
    Добрый день, у меня возникло очередная проблема а в гугл не разобрался, может вы поможете..
    У меня иерархическая фигура человека со своими костями и контроллерами анимации. А в скрипте для него создал структуру.
    У меня уже есть метод передвижении объекта, а как можно его повернуть или анимировать, чтобы он ходил - не представляю.
    Знаю только приблизительно что надо нужные позиции каждой части умножать на матрице самого моделья: $MyCharacter.transform, но его ведь центра даже нету, там 36 разных объектов.
    Но как именно это делается?



    А это сама структура:

    struct structZombie (
    Control_Head = $Control_Head01,
    Control_Body = $Control_Body01,
    Hand_Right = $Hand_Right01,
    Hand_Left = $Hand_Left01,
    Leg_Right = $Leg_Right01,
    Leg_Left = $Leg_Left01,
    Control_HRight = $Control_HRight01,
    Control_HLeft = $Control_HLeft01,
    Control_LRight = $Control_LRight01,
    Control_LLeft = $Control_LLeft01,
    BaseModel_Mesh = $BaseModel_Mesh01,
    BaseModel_Bones = (for o in selection where classof o == BoneGeometry collect o),

    delta_Control_Head = $Control_Head01.pos,
    delta_Control_Body = $Control_Body01.pos,
    delta_Hand_Right = $Hand_Right01.pos,
    delta_Hand_Left = $Hand_Left01.pos,
    delta_Leg_Right = $Leg_Right01.pos,
    delta_Leg_Left = $Leg_Left01.pos,
    delta_Control_HRight = $Control_HRight01.pos,
    delta_Control_HLeft = $Control_HLeft01.pos,
    delta_Control_LRight = $Control_LRight01.pos,
    delta_Control_LLeft = $Control_LLeft01.pos,
    rotationCenter = [0,0,0],

    function moveTo NewPos = (
    Control_Head.pos = NewPos + delta_Control_Head;
    Control_Body.pos = NewPos + delta_Control_Body;
    Hand_Right.pos = NewPos + delta_Hand_Right
    Hand_Left.pos = NewPos + delta_Hand_Left
    Leg_Right.pos = NewPos + delta_Leg_Right
    Leg_Left.pos = NewPos + delta_Leg_Left
    Control_HRight.pos = NewPos + delta_Control_HRight
    Control_HLeft.pos = NewPos + delta_Control_HLeft
    Control_LRight.pos = NewPos + delta_Control_LRight
    Control_LLeft.pos = NewPos + delta_Control_LLeft
    rotationCenter = NewPos
    )
    function RotateModel Gradus = ( ............. ),
    function Walk = ( ............ )
    )
     
  2. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Конкретизируй свой вопрос, все же писать за тебя функции не буду, тем более не понимая что это должно быть.
    По поводу матриц трансформаций, читай соответ. литературу. доступно описанно в литературе по DirectX/OpenGL

    PS
    По моему ты тут пытаешься велосипед изобрести, зачем хелперы в скрипте двигать ?
    прицепи их к центру сами будут и двигаться и вращаться.
    Совет найди похожий скрипт и уже от него пляши.



     
  3. IrakliSpain

    IrakliSpain Активный участник

    С нами с:
    17.07.2009
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    5
    Дела в том, что этими хелперами потом должен сделать анимацию, который на центре не должен отрозится.

    Согласен, вопрос не понятный вишел. Хотел узнать как сказать в скрипте например: Чоб объект "А" повернулось на 75 градусов, только не на собственный, а на Z ось объекта "Б"?
     
  4. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210

    Код:
     in coordsys $Box02 about coordsys rotate $Box01 75 z_axis 
     
  5. IrakliSpain

    IrakliSpain Активный участник

    С нами с:
    17.07.2009
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    5
    Сработал,
    большое спасибо.
     
Модераторы: Savin Denis

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