Skip to main content

ufbx

ufbx logo

🧩 ufbx — 単一ソースファイルの FBX ローダー

ufbx は、単一のソースファイルで構成された FBX ローダーです。
このライブラリは、FBX ファイル形式を簡単に扱える ユーザーフレンドリーなインターフェースを提供することを目的とし、必要に応じて 高度な機能にも完全対応しています。


特徴

  • 単一ファイル構成:C99 / C++11 に対応した1つのソースファイルで完結
  • 堅牢なエラーハンドリング:無効なファイルやメモリ不足などにも安全に対応
  • 型安全なAPI:C++およびRustバインディングでは境界チェック付きスライスを使用
  • 徹底したテストとファジング(fuzzing) による高信頼性

💾 ダウンロードと使用例

ufbx_load_opts opts = { 0 }; // 任意設定、デフォルトを使う場合は NULL を渡す
ufbx_error error;            // 任意、エラーを無視する場合は NULL を渡す
ufbx_scene *scene = ufbx_load_file("my_scene.fbx", &opts, &error);
if (!scene) {
    fprintf(stderr, "読み込みに失敗しました: %s\n", error.description.data);
    exit(1);
}

// 読み込まれた `scene` を自由に利用できます。
// これはただのプレーンなデータ構造です!

// 例: シーン内のすべてのオブジェクトを列挙して表示
for (size_t i = 0; i < scene->nodes.count; i++) {
    ufbx_node *node = scene->nodes.data[i];
    if (node->is_root) continue;

    printf("オブジェクト: %s\n", node->name.data);
    if (node->mesh) {
        printf("→ メッシュ(%zu 面)\n", node->mesh->faces.count);
    }
}

ufbx_free_scene(scene);

💡 補足

上記コードをコンパイルすれば、任意の .fbx ファイルを読み込み、ノード(オブジェクト)やメッシュ情報を列挙できます。
scene 構造体には、マテリアル、トランスフォーム、アニメーションなどの詳細情報も格納されています。