У меня есть граф сцены для моего приложения OpenGL. Мой текущий график сцены работает нормально, за исключением одного: дети не настроены правильно.
Я рекурсивно перебираю граф сцены и соответственно устанавливаю матрицы преобразования мира. Эта часть сама работает нормально и дает правильный вывод. Но мне нужны матрицы где-то еще в моем коде. Однако матрицы дочерних узлов любого узла не верны. Я думаю, это потому, что я неправильно настроил их в графе сцены. Я думаю, что эта проблема из-за того, что они копируются, когда я перебираю граф сцены. Я сильно сократил свой класс.
class Node {
public:
Node::Node();
Node(std::string aName);
void setName(std::string aName);
std::string getName();
void addChildren(Node& node);
Node &getChild(std::string aName);
std::vector<Node> &getChildrenList();
void setParent(Node* node);
Node* &getParent();
void toString();
private:
Node* parent;
std::vector<Node> children;
std::string name;
};
// inside another file
void recursRender(Node& it, glm::fmat4& mat) {
if (it.getName() != sg->getName()) {
it.setWorldTransform(mat);
drawPlanet(it);
}
if (!it.getChildrenList().empty()) {
for (Node itChild : it.getChildrenList()) {
recursRender(itChild, it.getWorldTransform());
}
}
}
Это оригинальный код. Я пробовал совсем немного разных вещей, например изменение
std::vector<Node> children
до
std::vector<Node*> children
Но это тоже не сработало.
В конце концов я хочу иметь возможность изменить
Node itChild
в каждом цикле
Node& itChild
Однако, если я сделаю это сейчас, мои объекты больше не будут видны.
Любая помощь высоко ценится. Я извиняюсь за то, что не объяснил себя достаточно хорошо, трудно описать проблему, оставляя ее "короткой"