Применение преобразований в двумерном графе сцены

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

1 ответ

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

def calculateTransformRecursive(self):

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

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

Другие вопросы по тегам