Assimp обрабатывает узел - PullRequest
0 голосов
/ 09 января 2019

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

void GetNode(aiNode *node) {
    string name = (string)node->mName.data;
    //Third child does not get putput
    cout << name << endl;

    for (int i = 0; i < node->mNumChildren; i++) {
        node = node->mChildren[i];
        GetNode(node);
    }
}

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Похоже, вы проходите в глубину. Вы можете попробовать итерировать детей сначала в ширину,

for (auto node : node->mChildren) {
    std::cout << node->mName.data << "\n";
}
for (auto node : node->mChildren) {
    GetNode(node);
}
0 голосов
/ 09 января 2019

Изменение node = node->mChildren[i]; GetNode(node) на GetNode(node>mChildren[i]), казалось, исправило это. Однако я не уверен, почему.

...