Render.ru

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

sylka

Пользователь сайта
Рейтинг
4
#1
в моей ситуации атачмент констраинт не выход, мне нужно привязатьсся к обекту не на верху стека а в начале, положение я привязал к точке а вот с вращением незнаю к чему привязаться.. мне кажется что это должно быть связано с polyop.getFaceNormal

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


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


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

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
#2
Не вижу в тексте ни одного вопроса. Кто кроме тебя знает, к чему тебе нужно привязаться ?
Постановка задачи мне не известна.
Если тебе кажется что polyop.getFaceNormal подходит то пробуй.
Но скорее всего тебе понадобиться еще один вектор в плоскости полигона, если не хочешь чтоб объект проворачивало вокруг нормали.
 

sylka

Пользователь сайта
Рейтинг
4
#3
Не вижу в тексте ни одного вопроса. Кто кроме тебя знает, к чему тебе нужно привязаться ?
Постановка задачи мне не известна.
Если тебе кажется что polyop.getFaceNormal подходит то пробуй.
Но скорее всего тебе понадобиться еще один вектор в плоскости полигона, если не хочешь чтоб объект проворачивало вокруг нормали.
Код:
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 вот ссылка на видео с моей проблемой с другого форума
 

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
#4
Где то на верном пути, держи так вернее будет:

Код:
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
 

sylka

Пользователь сайта
Рейтинг
4
#5
я так понимаю, моя проблема в worldUpVector , даже если его константой назначить тоже не помагает ...тоесть получается что контроллер не может динамически сравнивать значение, getFaceNormal $box01 2 с константой внутри себя?
что то я запутался((...

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

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

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

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
#6
Все просто строится три ортогональных вектора и по ним создается матрица трансформации.
Сам думай откуда тут мог взяться worldUpVector ?
онтроллер не может динамически сравнивать значение, getFaceNormal $box01 2 с константой внутри себя?
Причем здесь это ? просто самим его легче вычислить.
 

sylka

Пользователь сайта
Рейтинг
4
#7
откуда worldvector взялся я знаю я с помощью него нашел rightVector потом upvector , таким образом получаю 3 компонента матрицы трансформации rightVector upvector faceNormal ну и положение в конце ... наверное у меня с изложением проблемы , я непонимаю почему мой скрип тконтроллер не работает в реальном времени а как обычный скрипт посмотрите видео по ссылке, он срабатывает через evaluate. даже если я назначаю нодой box а worldvector константой, тоесть 2мя переменными вместо dependson.

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

sylka

Пользователь сайта
Рейтинг
4
#9
уже дал )))

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

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

sylka

Пользователь сайта
Рейтинг
4
#11
expression controller - ы , не все ведь в скриптах сильны (к примеру случаи применения различных функций экспрешн контроллеров
хотя стоит ли...)) всетаки этож хлеб сЭтап-еров и аниматоров )) шучу )) по крайней мере мне не жалко выложить пару тройку примеров
 

sylka

Пользователь сайта
Рейтинг
4
#12
да... с изъяснением у меня явно проблемы... по крайней мере на работе, вечно приходится 3 дела одновременно делать ))

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

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

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
#13
Возможно идея имеет право на существование,
хотя сетап подразумевает достаточно тонкую подгонку и настройку, что рядовой пользователь все равно сам не сделает.
А кто хоть чуть понимает, там ничего сложного нет.

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