处理节点的 assimp

Assimp processing a node

本文关键字:assimp 节点 处理      更新时间:2023-10-16

出于某种原因,我用于处理骨骼层次结构的脚本最多只能找到两个子项,而忽略其余项。我似乎无法确定我在脚本中做错了什么。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);
    }
}

node = node->mChildren[i]; GetNode(node)更改为GetNode(node>mChildren[i])似乎可以解决它。但是我不确定为什么。

看起来您正在以深度优先的方式进行遍历。 您可以尝试首先以广度优先的方式迭代子项,

for (auto node : node->mChildren) {
    std::cout << node->mName.data << "n";
}
for (auto node : node->mChildren) {
    GetNode(node);
}