2008-12-08 2 views
1

Так что я столкнулся с этой проблемой несколько раз:Получение абсолютного положения и поворота изнутри графика сцены?

У меня есть некоторый объект в моей 3D-графике сцены, который является дочерним элементом какого-либо другого объекта. Позволяет называть их c (Child) и p (Parent).

Позиция c определена относительно p. Таким образом, c может иметь позицию (1,0,0), но, разумеется, из-за того, что p имеет некоторую другую позицию, скажем (1,2,3), она фактически не отображается в оригинале нашего мира, а при (2 , 2,3).

Теперь позвольте сказать, почему мы хотим знать абсолютное положение c в мировых координатах (или вращение, проблема такая же), как это обычно делается?

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

ответ

4

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

Как вы это сделаете, это будет зависеть от используемой графической библиотеки. Часто каждый узел в графе сцены включает матрицу, которая преобразует систему координат этого узла в глобальные координаты. Эта матрица вычисляется путем умножения матрицы от родительского узла на матрицу преобразования от координат родителя к дочерним координатам или наоборот в зависимости от того, как определяются вещи.

Если у вас есть такая матрица, вы можете сделать нужный вам расчет, умножив точку на дочерние координаты на матрицу узла. Опять же, порядок здесь важен.

1

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

Кроме того, я не думаю, что вращение можно обрабатывать так же, как перевод. Если родительский объект повернут, он также будет перевести положение дочернего объекта. Следовательно, в большинстве 3D-систем используются однородные координаты, которые используют (4x4) матрицы преобразования, которые сочетают в себе как вращения, так и переводы в одной матрице.

 Смежные вопросы

  • Нет связанных вопросов^_^