出于某种原因,我的处理骨头层次结构的脚本只为一个骨头找到了max两个子,而忽略了其余的。我似乎无法确定我在剧本中做错了什么。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);
}
}发布于 2019-01-09 10:29:37
将node = node->mChildren[i]; GetNode(node)改为GetNode(node>mChildren[i])似乎解决了这个问题。然而,我不知道为什么。
发布于 2019-01-09 15:47:02
看上去你是以一种深度优先的方式穿越的。你可以试着先以广度优先的方式迭代孩子,
for (auto node : node->mChildren) {
std::cout << node->mName.data << "\n";
}
for (auto node : node->mChildren) {
GetNode(node);
}https://stackoverflow.com/questions/54107617
复制相似问题