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

rotate objects

Тема в разделе "MAXScript", создана пользователем Di_di_0, 9 дек 2007.

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

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

    С нами с:
    08.12.2007
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    5
    Здравствуйте! Есть сцена торговый комплекс - практически целый квартал. Чтобы смотрелось более живее я накопировал около 2000 человек. Все они сделаны просто текстурой натянутой на plane. Под каждую камеру а их около 12, приходится выделять их все и поворачивать, так чтобы они смотрелись нормально. Имя каждого чела - chel01, chel02 и т.д. Скрипт чтобы выделить их всех одним нажатием я сделал сам, а вот с вращением, чтото не выходит. Когда поворачиваешь вручную, то выставляешь Local вместо World и они поворачиваются каждый вокруг своей оси. Я пробовал из Listenerа команду взять но почему-то они начинают поворачиваться всем блоком, у каждого меняется положение в сцене. Как ни мучился ничего не выходит, не хватает мозгов наверное! Было бы хорошо создать такую кнопочку чтобы все выбранные объекты поворачивались при нажатии на какой-то градус вокруг своей оси. Помогите пожалуйста!
     
  2. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Приводи свой код, попробуем разобраться.
     
  3. Di_di_0

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

    С нами с:
    08.12.2007
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    5
    В целом хочу делать так:

    select $chel*
    toolMode.coordsys #local
    --здесь они поворачиваются на определенный угол
    render camera:$camera01 outputfile:("ren1.jpg") vfb:eek:n
    --здесь на другой угол
    render camera:$camera02 outputfile:("ren2.jpg") vfb:eek:n
    и так далее пока все камеры не пройдут.

    ПРОБОВАЛ ТАК
    $.objectoffsetrot*=(EulerAngles 0 0 15)
    и ТАК
    $.rotation*=(EulerAngles 0 0 15)
    И ТАК
    $.rotation*=(angleaxis 15 [0,0,1])

    но чего-то он поворачивает как-то непредсказуемо или непонятно по какой оси.
    Или может это зависит от активного вьюпорта.

    Меня интересуют две функции:
    1. При нажатии кнопочки объект поворачиватся на 15 гр. при повторном нажатии еще на 15гр.
    2. заранее прописываешь что угол должен быть допустим 32гр. кликаешь кнопку он становится на 32гр.
    если снова щелкаешь он так и остается на 32 как был.
     
  4. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    1. Впервом случае

    Код:
    coordsys local rotate $ (EulerAngles 0 0 15) 
    1. Во втором случае
    Код:
    fn setNodeWorldRotation theNode theRot = 
    
    (
    theNode_ = if isProperty theNode #count then theNode else #(theNode)
    for obj in theNode_ do in coordsys (transmatrix obj.transform.pos) 
    	obj.rotation = theRot
    
    )
    
     
    
    setNodeWorldRotation $ (eulerangles 0 0 0)
    
     
  5. Di_di_0

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

    С нами с:
    08.12.2007
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    5
    Оказывается я был близко только не мог составить слова в предложение. Все работает. А до второго случая я бы в жизни не додумался. Спасибо, Денис!
     
Модераторы: Savin Denis

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