На самом деле речь идет о преобразовании между координатными пространствами .
Хорошо, вы понимаете, что у вас может быть Матрица, которая выполняет Перевод или Вращение. (Или масштабирование. Или перекос. И т.д.). Вы можете умножить такую Матрицу на точку (V), чтобы получить новую (переведенную / повернутую / и т. Д.) Точку. E.g.:
Mtranlate = [ 1 0 0 Tx ] * V = [ Vx ] = [ Vx + Tx ]
[ 0 1 0 Ty ] [ Vy ] [ Vy + Ty ]
[ 0 0 1 Tz ] [ Vz ] [ Vz + Tz ]
[ 0 0 0 1 ] [ 1 ] [ 1 ]
Или вращение вокруг оси X / Y / Z:
Mrotate_x = [ 1 0 0 0 ] * V = [ Vx ] = [ Vx ]
[ 0 cos -sin 0 ] [ Vy ] [ Vy*cos - Vz*sin ]
[ 0 sin cos 0 ] [ Vz ] [ Vy*sin + Vz*cos ]
[ 0 0 0 1 ] [ 1 ] [ 1 ]
что вы можете объединить несколько операций, умножив матрицы вместе.
Например: Mnew = Mtranslate * Mrotate_x.
(И да, порядок имеет значение!)
Таким образом, учитывая базовое происхождение реального мира, вы можете перевести его в (xy) (известное / предоставленное) положение орка xy, вывести из ландшафта в этой точке, каково местоположение z ног вашего орка, и перевести на него. Теперь у вас есть ноги орка в глобальных координатах. Оттуда вы можете повернуть своего орка, чтобы он повернулся в определенном направлении.
Затем переведите вверх (в зависимости от модели вашего орка), чтобы найти его шею. От шеи мы можем переместиться вверх (и, возможно, повернуть), чтобы найти его голову или над ней, чтобы найти ее плечо. С плеча мы можем вращаться и переводить, чтобы найти локоть. От локтя мы можем вращаться и переводить, чтобы найти руку.
Каждый компонент вашей модели орков имеет локальную систему отсчета. Каждый связан с опорным кадром, где он присоединен одним или несколькими преобразованиями (матрицами). Умножая все локальные матрицы (трансформации), мы можем в итоге увидеть, как пройти от ног орка к его руке.
(Имейте в виду, я бы оживил орка и просто использовал бы его расположение ног x, y, z. В противном случае это слишком много работы.)
Вы видите много такого рода вещей в робототехнике, которые могут обеспечить хорошее элементарное введение в прямую кинематику. В робототехнике, по крайней мере, с более простыми роботами, у вас есть двигатель, который вращается, и длина конечности, на которую нужно перевести. А потом еще один мотор. (Напротив, плечевой сустав человека может вращаться вокруг всех трех осей одновременно.)
Вы можете просмотреть курс РУКОВОДСТВА для класса роботизированной манипуляции CMU (15-384).
Возможно, что-то вроде их Forward Kinematics Intro .