Применение преобразований в двумерном графе сцены - PullRequest
0 голосов
/ 18 сентября 2011

В двухмерном графе сцены: когда я выполняю преобразование, например, вращение или другое в узле, как мне применить эти операции в дочерних узлах? Если я применяю операцию у каждого ребенка, это может занять много времени. Я думал, что когда приложение рендерит сцену, в каждом узле вниз глобальное вращение добавляется с текущим вращением узла. То же самое с переводом и масштабом. Когда поднимается на графике, эти глобальные свойства вычитаются. Есть ли лучший способ?

1 Ответ

3 голосов
/ 18 сентября 2011

Вам нужно использовать стек, в который вы нажимаете и извлекаете текущую матрицу преобразования.

def calculateTransformRecursive(self):

  pushGlobalTransform();
  self.calculateAndStoreGlobalTransform();
  for node in self.nodes:
    node.calculateTransformRecursive();
  popGlobalTransform();

Таким образом, каждый узел имеет глобальное преобразование во время рисования, и нет необходимости «отменять» преобразования при переходе вверх по дереву.

...