この記事で学べること#
- メタセコイヤ(.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 で変換するのが確実です。
必要なソフトウェア#
- メタセコイヤ(3.x 以降、無料版で可)- .mqo → .obj エクスポート用
- Blender 4.5 LTS 以降 - OBJ → AC3D 変換用
- Blender AC3D Exporter アドオン - NikolaiVChr/Blender-AC3D(2.80 ブランチ)
Step 0: メタセコイヤで座標変換 + OBJ エクスポート#
FMS 用モデルは FlightGear と座標系が異なります:
| FMS 用モデル | FlightGear | |
|---|---|---|
| 機首方向 | Z 軸 | X 軸 |
| 単位 | cm | m |
Blender での後処理回転より、メタセコイヤでの事前変換が確実です(後述の検証で、Blender 側の回転補正では機体姿勢が正しく変わらないケースを確認済み)。
- メタセコイヤで .mqo を開く
- オブジェクト → すべて選択(Ctrl+A)
- 座標軸の入れ替え: Z 軸 → -X 軸(マイナスを付けて機首方向を統一)
- 拡大縮小: スケール 0.01(cm → m)
- ファイル → エクスポート → 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 $tmpModules 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 -ForceStep 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に帰属します。引用部分については各引用元のライセンスが適用されます。