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

Проблема с Local системой координат

Тема в разделе "Моделирование", создана пользователем EpUlRuOsPA, 2 сен 2015.

Модераторы: He77ga, Артер
  1. EpUlRuOsPA

    EpUlRuOsPA Пользователь сайта

    С нами с:
    01.09.2015
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    2
    Помогите разобраться!
    Изучаю Max 2016. Столкнулся с такой проблемой: после вращения полигона иногда смещается его локальная система координат (примеры на картинке).
    Последовательность моих действий:
    1. создаю цилиндр.
    2. преобразую его в Editable Poly
    3. в режиме редактирования полигонов выделяю один или два или три полигона, выбираю Local систему координат и выдавливаю экструдом. (на картинке обозначено единичкой). На этом этапе все отлично - оси X,Y,Z направлены перпендикулярно соответствующим плоскостям полигона.
    4. далее вращаю полигон(ы) при выбранном Local (системы координат) и происходит волшебство: локальная ось начинает вращаться либо против часовой стрелки (на картинке цмфра два), либо по часовой стрелке (цифра три), или остается в правильном положении (цифра четыре).

    Нет никакой системы появления этого явления. Смещение оси происходит внезапно, направление смещения ни к чему не привязано (ни к глобальной системе координат, ни к видовой, ни т.д.). Очень мешает, т.к. дальнейшая работа с полигонами превращается в пытку

    Возможно ли избавиться от этого?
    Как вернуть положение локальной оси в правильное направление?
     

    Вложения:

    • Local.jpg
      Local.jpg
      Размер файла:
      83,3 КБ
      Просмотров:
      105
  2. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    Что-то похожее можно сделать с помощью MaxScript.
    Простой пример для частного случая:
    Выделяем один полигон базового объекта Editable Poly.
    Запускаем скрипт. В новом окне нажимаем кнопку Align.
    Код:
    try destroydialog test catch()
    rollout test "Test" width:80 height:40
    (
    button btn_align "Align" pos:[5,5] width:65 height:30
    on btn_align pressed do
    (
       if selection.count ==1 then
        (
            obj=selection[1]; co=obj.baseobject
            if classof co==Editable_Poly then
            (
                fs=(polyop.getfaceselection obj) as array;
                if fs.count==1 then
                (
                    f=fs[1]; facePos=polyop.getFaceCenter co f node:obj
                    faceNormal = polyop.getfacenormal co f node:obj
                    fv=polyop.getFaceVerts co f;
                    v1=polyop.getVert co fv[1] node:obj;v2=polyop.getVert co fv[2] node:obj;
                    axis_x=normalize (v1-v2)
                    axis_y=normalize ( cross axis_x faceNormal)
                    theMatrix= matrix3 axis_x axis_y faceNormal facePos
                    if theMatrix.determinantsign==-1 then
                    t=matrix3 axis_x -axis_y faceNormal facePos;
                    try delete $Local_igorznag catch ()
                    d=dummy();d.name="Local_igorznag";freeze d; hide d
                    d.transform=t; toolmode.coordsys d
                    completeredraw()
                )--if fs.count==1 then
            )--if classof co==Editable_Poly then
        )--if selection.count ==1 then
    )--on btn_apply pressed do
    ); createdialog test
    Чтобы запустить скрипт нужно:
    1. Создаем текстовый файл (NotePad) и копируем код (текст) скрипта.
    2. Сохраняем текстовый файл с названием "test.ms"
    3. В главное меню MaxScript выбираем пункт Run Script. Выбираем файл "test.ms"
     
    mikinik и Royal Ghost нравится это.
  3. EpUlRuOsPA

    EpUlRuOsPA Пользователь сайта

    С нами с:
    01.09.2015
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    2
    Про этот способ я прочитал на этом форуме, но он не помогает, по крайней мере, в 2016 максе.

    Данный глюк происходит только при повороте полигона. Причем, если поворачивать полигон по оси Z, то вращается только полигон, а локальная система остается в прежней ориентации. при повороте по оси Y положение локалки корректно, по оси X происходит ее поворот либо по, либо против часовой стрелки, как на изображении в первом сообщении. Более того, все тоже самое происходит при вводе угла поворота на клавиатуре.

    Не помогло и обновление до SP1.

    Просьба к тем, кто пользуется максом 2016, проверить свою программу на подобное поведение. Не знаю, в каком направлении двигаться - откатываться на предыдущую версию или...
     

    Вложения:

    • Local-1.jpg
      Local-1.jpg
      Размер файла:
      93,7 КБ
      Просмотров:
      91
  4. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    Предоставьте полностью скрин программы 3ds max, чтобы я увидел что вы выбираете полигон у базового объекта Editable Poly, а не у модификатора Edit Poly.

    1.jpg ____ 2.jpg
    Это не глюк. Так работают все версии программы 3ds max. Так должно быть.
    Система координат Local для выделенного полигона означает только следующее: ось Z перпендикулярна плоскости полигона.
    "Правильное направление" означает совсем другое. Поэтому используем MaxScript.
     
  5. Royal Ghost

    Royal Ghost Мастер

    С нами с:
    17.03.2001
    Сообщения:
    305
    Симпатии:
    41
    Баллы:
    214
    igorznag прав, это не баг это нормальное поведение 3ds max. Полигоны не имеют параметра вращения, по этому локальные оси нужно вычислить. igorznag предлагает просто другой алгоритм вычисления локальных осей. Но даже он не очень удобен когда вы имеете дело с полигонами образующими трапеции.
     
    mikinik нравится это.
  6. EpUlRuOsPA

    EpUlRuOsPA Пользователь сайта

    С нами с:
    01.09.2015
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    2
    Спасибо за ответ. Вот мои скрины. Скрипт не помогает именно в Editable Poly в максе 2016
     

    Вложения:

    • Local-2.jpg
      Local-2.jpg
      Размер файла:
      111,5 КБ
      Просмотров:
      82
    • Local-3.jpg
      Local-3.jpg
      Размер файла:
      112,5 КБ
      Просмотров:
      78
Модераторы: He77ga, Артер

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