Безболезненное зеркальное преобразование

algraf

Красная X зеленая Y синяя Z
Есть такая вещь. Каждый желтый кружок - точка в пространстве, который имеет глобальную матрицу преобразования
в момент времени t=0 выглядит так

в момент времени t=ti выглядит так

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

incwizitor

чтобы зеркально поворот скелета отобразить относительно оси Z ?
не понял что надо сделать, воображения не хватает :grin:
то есть чтобы скелет поворачивался в другую сторону
нельзя ли просто сделать осевую симметрию (инверсию) относительно прямой (0, y, 0) ? то есть каждую (x, y, z) перевести в (-x, y, -z) ? только при этом весь скелет инвертнется
зы. я нуб в 3д, так что сильно не пинайте :grin:

lenmas

нельзя ли просто сделать осевую симметрию (инверсию) относительно прямой (0, y, 0) ? то есть каждую (x, y, z) перевести в (-x, y, -z) ? только при этом весь скелет инвертнется
Он спрашивает, на какую матрицу оператора нужно умножить единичные вектора в каждом кружке, чтобы получить зеркально отраженные орты.

lenmas

на какую матрицу надо домножить каждый кружок и когда чтобы зеркально поворот скелета отобразить относительно оси Z ?
Зеркально относительно оси — это что? Зеркально относительно плоскости обычно отражают.

incwizitor

Он спрашивает
я почему-то не уверен, что он именно это спрашивает :grin:
может, ему хочется инвертировать не сам скелет, а его движение ?

Vikuschechka9

меня пугает это животное
очевидно, что это гордый собой самец какого-то загадочного вида, но вот какого...
и да, боли при зеркальных преобразованиях не должно быть!

algraf

это обыкновенный скелет медведя в модели скелетной анимации.
а болезненность ситуевины в следующим что натравив зеркальную матрицу на конечные точки, получаем лишнее домножение на матрицу в количестве костей. так вот скелет это связанная система (как дерево и вопрос скорее состоит в том что можно ли обойтись одним умножением матрицы на рутовую
там принцип очень простой, рассмотрим положение пальца:
матрица положения пальца в пространстве =
(произведение всех матриц костей по которым проложен путь до пальца от рутовой родителя пальца) * локальную матрицу пальца

natunchik

на какую матрицу надо домножить каждый кружок и когда чтобы зеркально поворот скелета отобразить относительно оси Z ? то есть чтобы скелет поворачивался в другую сторону
В какой момент ты это хочешь делать?
То есть, смотри, проблема в том, что поворот вокруг Z зависит от того, где у тебя эта ось находится. Если ты это сделаешь с трансформированным ктулху (не пизди мне про медведя, я вижу тентакли то он повернётся вокруг оси мира и окажется в каком-то странном месте (where it would endure a dreamless sleep until stars are right).
Поэтому поворачивать его тебе надо между его skinned mesh transforms и world transforms, надеясь, что у модельки ось Z приблизительно посередине. Ну чо, вот туда и вхуячь матрицу поворота, чо. У тебя функция для этого уже должна быть в том API которое ты используешь. Типа D3DXMatrixRotationZ или похожая функция из glut.

sashok01

чтобы зеркально поворот скелета отобразить относительно оси Z
умножить x и y на минус один. Или я не очень понял, что требуется

algraf

Поэтому поворачивать его тебе надо между его skinned mesh transforms и world transforms, надеясь, что у модельки ось Z приблизительно посередине. Ну чо, вот туда и вхуячь матрицу поворота, чо. У тебя функция для этого уже должна быть в том API которое ты используешь. Типа D3DXMatrixRotationZ или похожая функция из glut.
блин так и делал чето какая-то херня выходит. достаточно изменить положение скелета, сам скининг тут не причем это верно. апи у меня нет не директикса не глута все написано лапками
причем также попробовал отскейлить по -1 по X в результате разъезжается обход треугольников.
не очень понимаю почему поворот должен идти по Z поясни плиз. на 180 нужен ?
ПС. модератор лопух, какое нахрен не соответствие тематике раздела? перенеси нас в девелопмент тогда только девелопмента тут мало в треде пока.

markova

В какой момент ты это хочешь делать?
То есть, смотри, проблема в том, что поворот вокруг Z зависит от того, где у тебя эта ось находится. Если ты это сделаешь с трансформированным ктулху (не пизди мне про медведя, я вижу тентакли то он повернётся вокруг оси мира и окажется в каком-то странном месте (where it would endure a dreamless sleep until stars are right).
Поэтому поворачивать его тебе надо между его skinned mesh transforms и world transforms, надеясь, что у модельки ось Z приблизительно посередине. Ну чо, вот туда и вхуячь матрицу поворота, чо. У тебя функция для этого уже должна быть в том API которое ты используешь. Типа D3DXMatrixRotationZ или похожая функция из glut.
Ох, ФЖ, ты все еще "там" живешь. Оси координат мира статичны. Решение заключается в тупейшем отражении всех матриц по одной из осей. В данном случае - по оси X.

markova

блин так и делал чето какая-то херня выходит. достаточно изменить положение скелета, сам скининг тут не причем это верно. апи у меня нет не директикса не глута все написано лапками
причем также попробовал отскейлить по -1 по X в результате разъезжается обход треугольников.
не очень понимаю почему поворот должен идти по Z поясни плиз. на 180 нужен ?
ПС. модератор лопух, какое нахрен не соответствие тематике раздела? перенеси нас в девелопмент тогда только девелопмента тут мало в треде пока.
Меньше на форумах пиши, да головой думай. Успех обеспечен. А так до бесконечности будешь копать в направлении, противоплоложном от цели.
Оставить комментарий
Имя или ник:
Комментарий: