この記事で学べること#

  • メタセコイヤ(.mqo) → OBJ → AC3D(.ac) の 2 段階変換フロー
  • FMS 用モデルと FlightGear の座標系の違いと変換方法
  • Blender をヘッドレスモード(GUI なし)で使う AC3D エクスポート自動化
  • FlightGear 機体ディレクトリへの配置と set XML の書き方

対象読者#

  • FMS(Flying Model Simulator)用に配布されている機体モデルを FlightGear で使いたい方
  • メタセコイヤ形式の自作モデルを FlightGear に持ち込みたい方
  • Blender の変換作業をコマンドラインで自動化したい方

検証環境: Blender 4.5.3 LTS / FlightGear 2024.1 / Windows 11(検証日: 2025-10-05、対象モデル: Savanna〔EPP製電動グライダー、RokuDenPA様配布〕)


全体フロー#

[FMS用 .mqo (Z軸=機首、cm単位)]
        ↓ メタセコイヤで座標変換
        │ 1. Z軸 → -X軸(機首方向統一)
        │ 2. スケール 0.01(cm → m)
        ↓ メタセコイヤでOBJエクスポート(座標系: 維持)
[FlightGear座標系 .obj (X軸=機首、m単位)]
        ↓ Blender 4.5 + AC3D Exporter(ヘッドレス、変換なし)
    [AC3D .ac]
        ↓ 機体ディレクトリへコピー + テクスチャ配置
  [FlightGear機体として表示]

なぜ 2 段階か: Blender 4.x では標準の MQO インポーターが存在せず、サードパーティアドオン(blender-mqo)も Blender 4.x 未対応のため、.mqo の直接インポートはできません。メタセコイヤ本体で OBJ にエクスポートしてから Blender で変換するのが確実です。

必要なソフトウェア#

  1. メタセコイヤ(3.x 以降、無料版で可)- .mqo → .obj エクスポート用
  2. Blender 4.5 LTS 以降 - OBJ → AC3D 変換用
  3. Blender AC3D Exporter アドオン - NikolaiVChr/Blender-AC3D(2.80 ブランチ)

Step 0: メタセコイヤで座標変換 + OBJ エクスポート#

FMS 用モデルは FlightGear と座標系が異なります:

FMS 用モデル FlightGear
機首方向 Z 軸 X 軸
単位 cm m

Blender での後処理回転より、メタセコイヤでの事前変換が確実です(後述の検証で、Blender 側の回転補正では機体姿勢が正しく変わらないケースを確認済み)。

  1. メタセコイヤで .mqo を開く
  2. オブジェクト → すべて選択(Ctrl+A)
  3. 座標軸の入れ替え: Z 軸 → -X 軸(マイナスを付けて機首方向を統一)
  4. 拡大縮小: スケール 0.01(cm → m)
  5. ファイル → エクスポート → Wavefront OBJ
    • 座標系: 維持(変換済みのため)、スケール: 1.0、法線・マテリアル: 有効

.obj と .mtl が生成されます。テクスチャ画像(.bmp 等)は自動でコピーされないため、同じフォルダに手動配置しておきます。

Step 1: AC3D エクスポーターをヘッドレスでインストール#

PowerShell から Blender を GUI なしで起動してアドオンを導入できます:

# アドオンZIPのダウンロード
$td = "$env:TEMP\fg_addons"
New-Item -ItemType Directory $td -Force | Out-Null
$zipAC = Join-Path $td "Blender-AC3D-2.80.zip"
Invoke-WebRequest "https://github.com/NikolaiVChr/Blender-AC3D/archive/refs/heads/2.80.zip" -OutFile $zipAC

# Blenderパスの特定
$bl = (Get-Command blender -ErrorAction SilentlyContinue).Source
if (-not $bl) {
    $bl = (Get-ChildItem 'C:\Program Files\Blender Foundation\Blender*\blender.exe' -Recurse |
           Select-Object -First 1 -ExpandProperty FullName)
}

# インストールと有効化
$installScript = @"
import bpy
bpy.ops.preferences.addon_install(filepath=r'$zipAC', overwrite=True)
bpy.ops.preferences.addon_enable(module='io_scene_ac3d')
bpy.ops.wm.save_userpref()
"@
$tmp = "$td\install_ac3d.py"
[IO.File]::WriteAllText($tmp, $installScript, [Text.Encoding]::UTF8)
& $bl -b -P $tmp

Modules Installed ... into '...\scripts\addons'Preferences saved が出れば成功です。

Step 2: OBJ → AC3D 変換(ワンライナー)#

$in  = "C:\Users\<ユーザー名>\Downloads\Savanna\Savanna.obj"
$out = "$env:USERPROFILE\Desktop\fg_out\Savanna.ac"
New-Item -ItemType Directory (Split-Path $out) -Force | Out-Null

& (Get-Command blender).Source -b --python-expr "import bpy,addon_utils; bpy.ops.wm.read_factory_settings(use_empty=True); addon_utils.enable('io_scene_ac3d', default_set=True, handle_error=None); bpy.ops.wm.obj_import(filepath=r'$in'); bpy.ops.object.select_all(action='SELECT'); bpy.ops.export_scene.export_ac3d(filepath=r'$out'); print('Exported:', r'$out')"

実行時間は 3〜5 秒程度です。ポイントは処理の順序で、read_factory_settings() の直後にアドオンを有効化してからインポート・エクスポートに進みます(この順序を守らないとエクスポーターが見つからないエラーになります)。

出力される警告と対処#

変換ログには次の警告が出ますが、いずれも致命的ではありません:

  • Material ... is not Principled BSDF or Specular using nodes, Emission not exported → 一部マテリアル情報は失われるが、形状とテクスチャ参照は正常にエクスポートされるため実用上問題なし
  • Texture "xxx.bmp" contains no image and was not exported alongside model → テクスチャ画像本体はエクスポートされない(参照のみ .ac に残る)。Step 3 で手動コピーすれば表示される

Step 3: FlightGear 機体ディレクトリへ配置#

$base = "C:\Users\<ユーザー名>\FlightGear\Downloads\Aircraft\Savanna-JSBSim"
$mdl = Join-Path $base "Models"
$tex = Join-Path $mdl "Textures"
New-Item -ItemType Directory $tex -Force | Out-Null

Copy-Item "$env:USERPROFILE\Desktop\fg_out\Savanna.ac" (Join-Path $mdl "Savanna.ac") -Force
Get-ChildItem "C:\Users\<ユーザー名>\Downloads\Savanna" -File -Include *.bmp,*.png,*.jpg |
    Copy-Item -Destination $tex -Force

Step 4: set XML を作成#

<?xml version="1.0" encoding="UTF-8"?>
<PropertyList>
  <sim>
    <description>Savanna JSBSim (visual-only setup)</description>
    <model>
      <path>Models/Savanna.ac</path>
      <texture-path>Models/Textures</texture-path>
    </model>
  </sim>
</PropertyList>

<機体名>-set.xml として機体ディレクトリ直下に保存します。**エンコーディングは UTF-8(BOM なし)**にしてください。

最終的なディレクトリ構成:

Aircraft\Savanna-JSBSim\
├── Models\
│   ├── Savanna.ac
│   └── Textures\
│       └── Savanna.bmp
└── Savanna-JSBSim-set.xml

補足: モデル修正後のライブ反映#

FlightGear を起動したまま .ac ファイルを差し替えても自動では反映されません。起動時に --telnet=5401 を指定しておけば、Telnet 経由でグラフィックスを再初期化できます:

set /sim/reinit/graphics 1

モデルの向きの微調整も /sim/model/offsets/heading-deg 等のプロパティで再起動なしに試せます。


まとめ#

  • .mqo 直接インポートは Blender 4.x では不可 → メタセコイヤで OBJ 経由が確実
  • FMS 座標系(Z=機首、cm)→ FlightGear 座標系(X=機首、m)の変換はメタセコイヤ側で事前に行う
  • Blender のヘッドレス実行では factory settings 読み込み → アドオン有効化 → インポート → エクスポートの順序を守る
  • マテリアル警告は実用上問題なし、テクスチャは手動コピーが必要

参照資料#

本記事の執筆にあたり、以下の資料を参照しました。

筆者の過去実装・調査データ#

  • jsbsim_fg(private repository)
    • docs/3D_MODEL_CONVERSION_GUIDE.md - 変換フロー完全記録(2025-10-05 検証)
    • temp/savanna3d_log.md / savanna3d作業報告書.md - 変換試行ログ

公式ドキュメント・配布元#

  • Blender-AC3D アドオン(https://github.com/NikolaiVChr/Blender-AC3D)- GPL
  • Blender Python API Documentation(https://docs.blender.org/api/current/)
  • メタセコイヤ公式サイト(https://www.metaseq.net/)
  • Savanna モデル配布元: RokuDenPA様(https://sekiai.net/)
  • FlightGear Wiki - AC3D(https://wiki.flightgear.org/AC3D)- CC BY-SA 3.0
  • FlightGear Wiki - Howto: 3D Aircraft Models(https://wiki.flightgear.org/Howto:3D_Aircraft_Models)- CC BY-SA 3.0

関連記事#

  • Sekiai.netのFMSモデル - SouthernXシリーズ(記事B-6)
  • Dmitry NizhのFMSモデルコレクション紹介(記事B-5)
  • 【FlightGear】Telnet接続失敗 - ポート5401接続拒否エラー(記事E-12)

© 2026 Yaaasoh. All Rights Reserved.

本記事の著作権はYaaasohに帰属します。引用部分については各引用元のライセンスが適用されます。