我试图打印给出的场景节点的所有子网格。它基本上是深度优先搜索。我想输出的JSON值1级,2级,在此之前最后一个子输出“”深度优先搜索子网格
似乎我失去了一些东西,我无法理解的递归可能
更新:这里是另一项试验:
void AssimpLoader::WriteSubMeshesToJson(const aiScene* mScene, const aiNode* pNode, Json::StyledWriter &writer, std::ofstream &myfile, int level, Json::Value root)
{
// if we have meshes
if(pNode == nullptr)
{
// write to disk
Ogre::LogManager::getSingleton().logMessage(" for mesh '" + Ogre::String(pNode->mName.data) + "'");
Json::Value parameter;
parameter["level0"];
root.append(parameter);
std::string output = writer.write(root);
myfile << output;
level = 0;
}
else
{
Json::Value parameter;
level++;
parameter["Level " + std::to_string(level)] = Ogre::String(pNode->mName.data) ;
root.append(parameter);
std::string output = writer.write(root);
myfile << output;
}
// Traverse all child nodes of the current node instance
for(unsigned int childIdx=0; childIdx < pNode->mNumChildren; childIdx++)
{
const aiNode* pChildNode = pNode->mChildren[ childIdx ];
WriteSubMeshesToJson(mScene, pChildNode, writer, myfile,level, root);
}
}
我需要的JSON怎么是这样
{
"Parenting1" : {
"Parenting2" : {
"Parenting3" : {}
}
}
}
这将不会按原样运行,但您循环“网格”却很奇怪,但实际上并未使用idx。你似乎只是一遍又一遍地写同样的mName.data。 –
@KennyOstrom你可以发布一个修复答案吗? –
请更好地解释一下你的实现中没有*工作*。从你的代码中,我了解到打印的“level”不正确,但其他读者可能不了解目的或问题。 – fjardon