41 lines
1.9 KiB
C++
41 lines
1.9 KiB
C++
#include <tools.h>
|
||
|
||
using namespace std;
|
||
|
||
|
||
/**
|
||
* 递归遍历FBX节点树结构
|
||
* @param parent_node 起始父节点,从此节点开始向下遍历(若为nullptr则函数不执行任何操作)
|
||
* @param level 当前节点层级(用于缩进或层级标识,建议初始调用时传入0)
|
||
* @note 函数内部会递归访问parent_node的所有直接子节点和间接子节点
|
||
* @warning 若输入的parent_node无效(如野指针)可能导致程序崩溃
|
||
*/
|
||
void each_node(FttContext* ctx, FbxNode* parent_node, int level);
|
||
/**
|
||
* 打印FBX节点的基本信息(含层级缩进)
|
||
* @param node 待打印信息的节点指针(nullptr时输出警告日志)
|
||
* @param level 节点层级(用于控制打印缩进,每级建议缩进4空格)
|
||
* @details 输出内容包含:节点名称、类型、子节点数量、层级深度
|
||
* @example 层级2的节点打印格式:" |-- NodeName (Type: Mesh, Children: 3)"
|
||
*/
|
||
void print_node_info(FbxNode* node, int level);
|
||
/**
|
||
* 从FBX文件加载并返回根节点
|
||
* @param fbx_path FBX文件路径(需绝对路径或相对于可执行文件路径)
|
||
* @return FbxNode* 成功时返回根节点指针,失败返回nullptr
|
||
* @note 内部会初始化FBX SDK环境并自动释放资源
|
||
* @warning 路径无效或文件损坏时返回空指针,需调用方检查
|
||
*/
|
||
FbxNode* get_fbx_root_node(const char* fbx_path);
|
||
|
||
|
||
/**
|
||
* @brief 从FBX网格属性加载顶点数据和三角化索引
|
||
* @param[in] attr FBX节点属性,需为FbxMesh类型
|
||
* @param[out] vertices 输出顶点坐标数组(每个Triangle存储3个FbxVector4顶点)
|
||
* @param[out] triangles 输出三角形索引数组(每个Triangle存储3个顶点索引)
|
||
* @return bool 成功返回true,失败返回false
|
||
* @note 内部会强制三角化网格,非三角形多边形将被忽略
|
||
*/
|
||
int load_triangles(fbxsdk::FbxNodeAttribute* attr, std::vector<V3>& indices, std::vector<V3>& triangles);
|