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

помогете решить задачу с ориентацией объекта относительно фейса в float script

Тема в разделе "MAXScript", создана пользователем sylka, 22 дек 2009.

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

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

    С нами с:
    13.02.2006
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    2
    в моей ситуации атачмент констраинт не выход, мне нужно привязатьсся к обекту не на верху стека а в начале, положение я привязал к точке а вот с вращением незнаю к чему привязаться.. мне кажется что это должно быть связано с polyop.getFaceNormal

    можно конечно опять же к точкам моего поли привязать 3 пустышки к ним привязать полик а к нему атачмент констраинт, но это чересур через одно место как говорится


    думаю задача не такая уж и сложная,сейчас параллельно разбираюсь с векторами и матрицами, решение как мне кажется в них но сроки поджимают, срочно нужно решение((


    буду очень признателен помощи.
     
  2. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Не вижу в тексте ни одного вопроса. Кто кроме тебя знает, к чему тебе нужно привязаться ?
    Постановка задачи мне не известна.
    Если тебе кажется что polyop.getFaceNormal подходит то пробуй.
    Но скорее всего тебе понадобиться еще один вектор в плоскости полигона, если не хочешь чтоб объект проворачивало вокруг нормали.
     
  3. sylka

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

    С нами с:
    13.02.2006
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    2
    Код:
    
    dependson $box01;
    faceNormal = in coordsys local (getFaceNormal $box01 2 );
    worldUpVector = [0,0,1] ;
    rightVector = normalize (cross worldUpVector faceNormal);
    upVector = normalize ( cross rightVector faceNormal );
    theMatrix = matrix3 rightVector upVector faceNormal [0,0,0] ;
    theobj2tr = thematrix;
    $box02.transform =theobj2tr * $box01.transform ;
    $box02.transform.row4 = $box01.transform.row4;
    pos=$box02.transform;
    
    вот что пока получается, но контроллер обновляется принудительно.... не знаю как заливать сюда файл
    [url]http://3dcenter.ru/forum/index.php?act=attach&type=post&id=145009 вот ссылка на видео с моей проблемой с другого форума
     
  4. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Где то на верном пути, держи так вернее будет:

    Код:
    faceAttach = 2 
    
    obj  = convertToPoly (Box())
    objslave  = Box()
    
    ctrl = transform_script() 
    objslave.transform.controller = ctrl 
    
    ctrl.addNode "obj" obj
    
    fv = polyop.getFaceVerts obj faceAttach
    txt   = "p1 = polyop.getvert obj " + fv[1] as string + "\n"
    txt += "p2 = polyop.getvert obj " + fv[2] as string + "\n"
    txt += "p3 = polyop.getvert obj " + fv[3] as string + "\n"
    txt += "v1 = normalize (p2-p1)\n" 
    txt += "v2 = normalize (p3-p1)\n" 
    txt += "nv1 = normalize (cross v1 v2)\n" 
    txt += "nv2 = normalize(cross nv1 v1)\n" 
    txt += "matrix3 v1 nv2 nv1 ((p1+p2+p3)/3)"
    
     ctrl.setExpression txt
     
  5. sylka

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

    С нами с:
    13.02.2006
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    2
    я так понимаю, моя проблема в worldUpVector , даже если его константой назначить тоже не помагает ...тоесть получается что контроллер не может динамически сравнивать значение, getFaceNormal $box01 2 с константой внутри себя?
    что то я запутался((...

    to Savin Denis: если не затруднит не могли бы вы дать краткое пояснение

    p.s. большое спасибо за помощь.

    похожее решение я видел в мастерклассе у borislava petrova но на практике применять еще не доводилось, а сейчас увидел и вспомнил похожий код ))
     
  6. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Все просто строится три ортогональных вектора и по ним создается матрица трансформации.
    Сам думай откуда тут мог взяться worldUpVector ?
    Причем здесь это ? просто самим его легче вычислить.
     
  7. sylka

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

    С нами с:
    13.02.2006
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    2
    откуда worldvector взялся я знаю я с помощью него нашел rightVector потом upvector , таким образом получаю 3 компонента матрицы трансформации rightVector upvector faceNormal ну и положение в конце ... наверное у меня с изложением проблемы , я непонимаю почему мой скрип тконтроллер не работает в реальном времени а как обычный скрипт посмотрите видео по ссылке, он срабатывает через evaluate. даже если я назначаю нодой box а worldvector константой, тоесть 2мя переменными вместо dependson.

    конечно способ предложенный вами неоспоримо гораздо удобнее, ничего лишнего , но я непонимаю почему неправильно работает мой способ , если я задаю сильно глупый вопрос,что не исключено )) то можете не отвечать, сам разбирусь рано или поздно
     
  8. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Дальше давай сам.
     
  9. sylka

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

    С нами с:
    13.02.2006
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    2
    уже дал )))

    спасибо еще раз.

    Как вы считаете? Может тему создать где каждый кто захочет будет выкладывать интересные на его взгляд примеры скриптовых и нетолько выражений? Я например несколько любопытных выражений в свое время на вооружение принял, правда раньше пользовался ими не особо вдумываясь что там к чему, а сейчас изучая максскрипт первый раз написал свое понимая по крайней мере что делаю...ну или почти написал))).
    Мне кажется тема актуальна, не так то и много примеров в сети
     
  10. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Поясни что ты под выражениями понимаешь ?
     
  11. sylka

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

    С нами с:
    13.02.2006
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    2
    expression controller - ы , не все ведь в скриптах сильны (к примеру случаи применения различных функций экспрешн контроллеров
    хотя стоит ли...)) всетаки этож хлеб сЭтап-еров и аниматоров )) шучу )) по крайней мере мне не жалко выложить пару тройку примеров
     
  12. sylka

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

    С нами с:
    13.02.2006
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    2
    да... с изъяснением у меня явно проблемы... по крайней мере на работе, вечно приходится 3 дела одновременно делать ))

    выражусь на всякий случай точнее :

    я имел ввиду создать тему, где люди будут выкладывать примеры ситуаций использующих скрипт и експрешн контроллеры
     
  13. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Возможно идея имеет право на существование,
    хотя сетап подразумевает достаточно тонкую подгонку и настройку, что рядовой пользователь все равно сам не сделает.
    А кто хоть чуть понимает, там ничего сложного нет.

    Создал тему поживем увидим. Интересные примеры Script & Expression controller
    Да оформляем чтоб было все понятно.
     
Модераторы: Savin Denis

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