首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Assimp处理节点

Assimp处理节点
EN

Stack Overflow用户
提问于 2019-01-09 10:08:28
回答 2查看 270关注 0票数 0

出于某种原因,我的处理骨头层次结构的脚本只为一个骨头找到了max两个子,而忽略了其余的。我似乎无法确定我在剧本中做错了什么。GetNode函数似乎只运行了两次,即使mNumChildren超过两次。

代码语言:javascript
复制
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);
    }
}
EN

回答 2

Stack Overflow用户

发布于 2019-01-09 10:29:37

node = node->mChildren[i]; GetNode(node)改为GetNode(node>mChildren[i])似乎解决了这个问题。然而,我不知道为什么。

票数 0
EN

Stack Overflow用户

发布于 2019-01-09 15:47:02

看上去你是以一种深度优先的方式穿越的。你可以试着先以广度优先的方式迭代孩子,

代码语言:javascript
复制
for (auto node : node->mChildren) {
    std::cout << node->mName.data << "\n";
}
for (auto node : node->mChildren) {
    GetNode(node);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54107617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档