FrontPage > FlightGearマニュアル / 第3章

The FlightGear Manual Version 1.0

このドキュメントは http://www.flightgear.org/Docs/getstart/getstartch3.html の日本語訳です。

第3章
離陸:プログラムの起動方法

3.1 環境変数

FlightGearを起動するために必須の環境変数が2つあります。 これらは、データとシーナリーのありかをFlightGearに伝えます。

プラットフォームや必要性により様々に設定できます。

3.1.1 FG_ROOT

航空機や航空標識の位置、空港の周波数といったデータファイルをFlightGearが探す場所を指定します。 FlightGearをインストールした場所の下のdataサブディレクトリになります。 例えば、/usr/local/share/FlightGear/datac:\Program Files\FlightGear\data になります。

3.1.2 FG_SCENERY

FlightGearがシーナリー(風景)ファイルを探す場所を指定します。 ディレクトリを検索順にリストします。 ディレクトリの区切りは、Unixでは":"、Windowsでは";"になります。

例えば、FG_SCENERYの値が

c:\Program Files\FlightGear\data\WorldScenery;c:\Program Files\FlightGear\data\scenery

である場合、まず最初に検索するシーナリーは

c:\Program Files\FlightGear\data\WorldScenery

であり、次に

c:\Program Files\FlightGear\data\scenery

を検索します。

このことは、異なるシーナリーを別の場所にダウンロードできることを意味します。

3.2 Unix/Linuxにおけるシミュレータの起動

getstart2x.png
図3: 離陸準備完了。サンフランシスコ国際空港(KSFO)のデフォルト出発位置にて待機中。

FlightGearを実行する前に、いくつかの環境変数を設定する必要があります。

Bourneシェル(とその互換シェル)で追加する方法を以下に示します。

LD_LIBRARY_PATH=/usr/local/share/FlightGear/lib:$LD_LIBRARY_PATH  
export LD_LIBRARY_PATH  
FG_HOME=/usr/local/share/FlightGear  
export FG_HOME  
FG_ROOT=/usr/local/share/FlightGear/data  
export FG_ROOT  
FG_SCENERY=$FG_ROOT/Scenery:$FG_ROOT/WorldScenery  
export FG_SCENERY

Cシェル(とその互換シェル)では以下のようになります。

setenv LD_LIBRARY_PATH=\  
  /usr/local/share/FlightGear/lib:$LD_LIBRARY_PATH  
setenv FG_HOME=/usr/local/share/FlightGear  
setenv FG_ROOT=/usr/local/share/FlightGear/data  
setenv FG_SCENERY=\  
  $FG_HOME/Scenery:$FG_ROOT/Scenery:$FG_ROOT/WorldScenery

訳注: FG_HOMEは現在は使われていないようです。-toshi

(参考) Re: [Flightgear-devel] FG_HOME no longer used?

以上の環境変数の設定が終わったら、fgfs --option1 --option2... を実行してFlightGearを単純に起動します。 コマンドラインオプションは3.5節に書かれています。

3.3 Windowsにおけるシミュレータの起動

ビルド済みのWindowsバイナリを使うと、グラフィカルなウィザードを用いてFlightGearを起動することができます。 スタートメニューのFlightGear Launcher、またはデスクトップアイコンを単純にダブルクリックしてください。

ランチャーでは以下を選ぶことができます。

getstart3x.png
図4: FlightGear Launcher画面。

初回起動時に、変数FG_ROOT(通常はc:\Program Files\FlightGear\data)とFG_SCENERYを設定するように求められるかもしれません。 FG_SCENERYはあなたがインストールしたシーナリーのディレクトリのリストで、典型的には、

c:\Program Files\FlightGear\data\scenery

c:\Program Files\FlightGear\data\WorldScenery

になります。

無効な値を設定してしまったり、後からシーナリーのディレクトリを変更した場合は、ランチャーの最初のページから"Prev"ボタンで戻って設定を変更することができます。

3.3.1 コマンドラインからの起動

もう一つの方法として、コマンドラインからFlightGearを実行できます。 これを行うには、環境変数FG_ROOTFG_SCENERYを手作業で設定する必要があります。

コマンドプロンプトを開き、あなたのバイナリが保存されているディレクトリ(c:\Program Files\FlightGear\bin\win32 のような場所)に移動し、キーボードから環境変数を設定します。

SET FG_HOME="c:\Program Files\FlightGear"
SET FG_ROOT="c:\Program Files\FlightGear\data"
SET FG_SCENERY="c:\Program Files\FlightGear\data\Scenery";"c:\Program Files\FlightGear\data\WorldScenery"

そして、同じコマンドプロンプト内でFlightGearを呼び出します (環境変数の設定は同じシェル内でのみ有効です)。

fgfs --option1 --option2...

もちろん、Windowsのテキストエディタ(メモ帳など)で上記コマンド行を使ったバッチファイルを作ることもできます。

パフォーマンスを最大にするために、FlightGearの実行中はテキスト出力ウィンドウを最小化(アイコン化)することをお勧めします。

3.4 Mac OS Xにおけるシミュレータの起動

まず、ベースパッケージとバイナリをあなたのホームディレクトリにダウンロードしたものとします。 それからTerminal.appを開き、次の手順を実行します。

setenv FG_ROOT ~/fgfs-base-X.X.X
./fgfs-X.X.X.-date --option1 --option 2

あるいは、

./fgfs-X.X.X-version-date --fg-root=\~/fgfs-base-X.X.X --option1

訳注: --fg-root=の後の"\"は余計な感じがしますが、一応原文のまま残しておきます。-toshi

3.5 コマンドライン パラメータ

訳注: 本節の一部には古い情報が含まれています。 最新の情報は、米国Wikiサイト内の「Command Line Parameters」に掲載されていますので、あわせてご覧ください。-toshi

以下に、FlightGearに存在する数多くのコマンドラインオプションに対して、完全なリストと短い説明を記します。 これらのオプションの大半は、Windowsバイナリで配布されるFlightGearランチャーを通じて見ることもできます。

もし継続的に再利用するオプションがある場合は、設定ファイルにそれを含めることができます。 これは個人個人の設定に依存するのでFlightGearとは一緒に配布していませんが、どんなテキストエディタ(メモ帳、emacs、お好みならvi)でも作成可能です。

3.5.1 一般的なオプション

--help
もっともよく使われるコマンドラインオプションのみを表示。
--help-verbose
全てのコマンドラインオプションを表示。
--fg-root=path
デフォルト設定でコンパイルしなかった場合に、ルートdataファイルを探す場所をFlightGearに指示。
--fg-scenery=path
基本シーナリーへのパスをある特定のパスに指定。 デフォルト位置の$FG ROOT/Sceneryにシーナリーがない場合など。 これは、CD-ROMにシーナリーがある場合に特に有用です。
--disable-game-mode
フルスクリーン表示無効。
--enable-game-mode
フルスクリーン表示有効。
--disable-splash-screen
アクセラレータボードの初期化時に3DFXのロゴが回転する機能を無効(3DFXのみ)。
--enable-splash-screen
宣伝するのがお好きならこれを設定!
--disable-intro-music
FlightGear起動時にオーディオサンプルを再生しない。 イントロ演奏に問題がある場合に推奨。
--enable-intro-music
マシンパワーが十分なら、この設定をお楽しみください。
--disable-mouse-pointer
外部マウスポインタ無効。
--enable-mouse-pointer
外部マウスポインタ有効。古いVoodooベースのカードでフルスクリーンモードを使うときに有用。
--enable-random-objects
ランダムなシーナリーのオブジェクト(ビルや樹木)を含有。デフォルトは有効。
--disable-random-objects
ランダムなシーナリーのオブジェクト(ビルや樹木)を除外。
--disable-freeze
FlightGear起動時にエンジンを動作させ、すぐに離陸可能にする。
--enable-freeze
エンジン停止状態でFlightGearを起動。
--disable-fuel-freeze
燃料の消費は標準。
--enable-fuel-freeze
燃料タンクに一定の残量を保つ
--disable-clock-freeze
時刻の進行は標準。
--enable-clock-freeze
時刻を止める。
--control-mode
操作デバイス(joystick, keyboard, mouse)の指定。 デフォルトはjoystick(yoke)。
--disable-auto-coordination
エルロン/ラダーの自動連携オフ(デフォルト)。
--enable-auto-coordination
エルロン/ラダーの自動連携オン(ペダル無し時は推奨)。
--browser-app=/path/to/app
Webブラウザの場所を指定。 例: --browser-app="C:\Program Files\Internet Explorer\iexplore.exe" (空白があるため" "に注意!)。
--prop:name=value
あるプロパティ値をvalueに設定。 エンジン動作状態で起動させる例:

--prop:/engines/engine0/running=true

もう1つの例:

--aircraft=c172
--prop:/consumables/fuels/tank[0]/level-gal=10
--prop:/consumables/fuels/tank[1]/level-gal=10

これはセスナにショートフライト用の給油をします。
--config=path
追加プロパティをパスからロード。 例: fgfs --config=./Aircraft/X15-set.xml
--units-meters
距離の単位にメートルを使用。

3.5.2 機能

--disable-hud
HUD(ヘッドアップディスプレイ)をオフ。
--enable-hud
HUDをオン。
--enable-anti-aliased-hud
HUDの線のアンチエイリアス処理をオン。 もしハードがサポートしていれば質が向上します。
--disable-anti-aliased-hud
HUDの線のアンチエイリアス処理をオフ
--enable-panel
計器パネルをオン(デフォルト)。
--disable-panel
計器パネルをオフ。
--disable-sound
サウンドをオフ。
--enable-sound
サウンドをオン。

3.5.3 航空機

--aircraft=航空機の定義ファイル名
例: --aircraft=c310。 選択可能なファイルを見つけるには、$FG_ROOT/Aircraft ディレクトリをチェックして " -set.xml" で終わるファイルを探してください。 航空機を指定するときは、ファイル名から " -set.xml" を除外してください。 別の方法として、下記の --show-aircraft オプションを使うこともできます。 追加の航空機をダウンロードするには、2.2節 をご覧ください。
--show-aircraft
現在存在する航空機の種類をソートしてリスト表示。

3.5.4 飛行モデル

--fdm=abcd
核となる飛行モデルを選択。 オプションはjsb, larcsim, yasim, magic, balloon, external, pipe, ada, nullで、デフォルト値はjsb (JSBSim)です。 larcsimは、LaRCSimシミュレータからFlightGearが受け継いだ飛行モデルです。 yasimは、Andy Ross氏のもうひとつの飛行力学シミュレータ(Yet Another Flight Dynamics Simulator)です。 magicは旋回モードでUFOの機体を動かします。 balloonは熱気球です。 externalは、TCPソケット経由でシミュレータのリモートコントロールを参照します。 pipeは、その名もpipeを経由してローカルからコントロールするためのものです。 nullは、飛行力学モデルを一切選択しません。 UIUC飛行モデルは、ここでは選択せずに次のオプションを使ってください! 飛行モデルに関するより多くの情報は1.4節?及びこれ以降をご参照ください。
--aero=abcd
ロードする空気力学モデルを指定。 デフォルトはc172です。 利用できる空気力学モデルは選択した飛行モデルに依存します。
--model-hz=n
飛行力学モデルをこの速さ(1秒あたりの繰り返し回数)で実行します。
--speed=n
飛行力学モデルを現実世界よりn倍速く実行。
--notorim
JSBSimの初期化時にモデルをトリムしない。
--on-ground
地上で起動(デフォルト)。
--in-air
空中で起動。 当然ながら、意味のある操作をするには下記の初期高度を指定する必要があります。 X15では必須のオプションです。
--wind=DIR@SPEED
方位DIR(度)から風速SPEED(ノット)の風が吹くように指定。 コロン区切りで範囲を指定することもできます。 例: 180:220@10:15。

3.5.5 初期位置と方向

--airport-id=ABCD
直接起動したい空港の国際コードを入力。 例えばニューヨークのJFK空港ならKJFKです。 取り込まれている空港のIDの長いリストと短いリストは$FG_ROOT/Airportsで見つけることができます。 けれども、該当する地域の地形データが必要であることをお忘れなく!
--offset-distance=nm
基準点に対する距離を海里(nm)で指定。
--offset-azimuth=deg
基準点に対する機首方位を度(degree)で指定。
--lon=degrees
起動時の経度を度で指定(西経はマイナス)。
--lat=degrees
起動時の緯度を度で指定(南緯はマイナス)。
--altitude=feet
起動時の高度を指定。 --in-airオプションとともに自由飛行を開始するときに有用です。 --units-metersを使っていなければフィート単位です。
--heading=degrees
機首方位(ヨー角)の初期状態を度で設定。
--roll=degrees
機体の左右の傾き(ロール角、バンク角)の初期状態を度で設定。
--pitch=degrees
機首の上下の傾き(ピッチ角)の初期状態を度で設定。
--uBody=feet per second
機体のX軸方向の速度。 --units-metersを指定していなければフィート毎秒です。
--vBody=feet per second
機体のY軸方向の速度。 --units-metersを指定していなければフィート毎秒です。
--wBody=feet per second
機体のZ軸方向の速度。 --units-metersを指定していなければフィート毎秒です。
--vc=knots
対気速度の初期値をノットで指定(--fdm=jsbの場合のみ)。
--mach=num
対気速度の初期値をマッハで指定(--fdm=jsbの場合のみ)。
--glideslope=degrees
飛行経路角(滑空角)を指定(正の値も可)。
--roc=fpm
上昇速度の初期値を指定(負の値も可)。

3.5.6 レンダリング(描画)オプション

--bpp=depth
色深度をピクセルあたりのビット数で指定。
--fog-disable
霧を無効化。 レンダリングの負担を軽くするために、デフォルトでは遠方の景色を霧で隠しています。 このオプションを使うと、遠くまで見える代わりにフレームレートが低下します。
--fog-fastest
このオプションを使うと、風景が良く見えなくなる代わりにフレームレートが向上します。
--fog-nicest
このオプションを使うと、もやのかかった日に飛行するような、かなりリアルな視界になります。
--enable-clouds
雲層を有効化(デフォルト)。
--disable-clouds
雲層を無効化。
--fov=degrees
視野を度で設定。デフォルトは55.0です。
--disable-fullscreen
フルスクリーンモードを無効化(デフォルト)。
--enable-fullscreen
フルスクリーンモードを有効化。
--shading-flat
最も速いモードですが、地形が見苦しくなります! このオプションは、画像プロセッサが本当に遅い場合に役立つかもしれません。
--shading-smooth
推奨設定(デフォルト)。実に素晴らしい見え方になります。
--disable-skyblend
霧やかすみの無い空を単色で表示。速いけど見苦しい!
--enable-skyblend
霧やかすみを有効にし、空や地形が本物っぽく見えます。 これがデフォルトであり推奨する設定です。
--disable-textures
地形の細部を無効化。 見苦しいけれども画像ボードが遅い場合に役立つかもしれません。
--enable-textures
デフォルトの推奨設定。
--enable-wireframe
FlightGearの世界が内部ではどのように見えるか知りたければ試してみましょう!
--disable-wireframe
ワイヤーフレーム無し。デフォルト。
--geometry='''WWWxHHH
ウィンドウサイズを定義。 WWWxHHHは例えば640x480800x6001024x768になります。
--view-offset=xxx
デフォルトの前方視界の向きを真正面に対するずれとして設定。 設定可能な値は、LEFTRIGHTCENTER、または度単位の特定の数値です。 マルチウィンドウディプレイで有用です。
--visibility=meters
視程の初期値をメートルで設定。
--visibility-miles=miles
視程の初期値をマイルで設定。

3.5.7 ヘッドアップディスプレイ(HUD)オプション

--hud-tris
レンダリングされた三角形の数をHUDに表示。
--hud-culled
間引かれた三角形の割合をパーセントでHUDに表示。

3.5.8 時刻オプション

--time-match-real
現実世界の時刻に同期。
--time-match-local
現実世界の現地時間に同期。
--start-date-sys=yyyy:mm:dd:hh:mm:ss
システム時間に対する開始日時を指定。
--start-date-gmt=yyyy:mm:dd:hh:mm:ss
グリニッジ標準時に対する開始日時を指定。
--start-date-lat=yyyy:mm:dd:hh:mm:ss
機内時間に対する開始日時を指定。

基本的には、--time-match-realが最初に使われるオプションです。 シミュレータ内の時刻はシステムクロックから読み込まれて、そのまま使われます。 シミュレータの時計はクロックと同期しているので、コンピュータのある場所と同じタイムゾーンの地域を仮想的に飛行する場合にはこのオプションが望ましいです。 けれども、世界の異なる箇所を飛行するときはそうではないかもしれません。 なぜならば、あなたのコンピュータと仮想的に飛行している場所との間には多くの時差があるからです。

--time-match-localオプションは、これを考慮して、あなたのいる現実世界と仮想的に飛行している場所とのタイムゾーンの差を計算します。 そして現地時間に同期します。

その後の3つのオプションは、起動日時を正確に特定するために使われます。 3つのオプションの違いは、コンピュータのシステム現地時間、グリニッジ標準時、仮想フライト内の現地時間のどれを基準点にとるかです。

以上5つのオプションは排他的に使われるように設計されています。 しかし、これらの機能によって設定された値は--time-offset機能を使って修正できます。 この機能は、他の機能によってすでに設定されている値に、指定した時間を加えます。

3.5.9 ネットワークオプション

--httpd=port
指定ポートでhttpサーバを有効化。
--telnet=port
指定ポートでtelnetサーバを有効化。
--jpg-httpd=port
指定ポートでスクリーンショット用httpサーバを有効化。
--enable-network-olk
Oliver Delises氏のマルチパイロットモードを有効化。
--disable-network-olk
Oliver Delises氏のマルチパイロットモードを無効化(デフォルト)。
--net-hud
ネットワーク情報をHUDに表示。
--net-id=name
自分のコールサインを指定。

3.5.10 ルート・ウェイポイントオプション

--wp=ID[@alt]
GCオートパイロットにウェイポイントを指定。 このコマンドを多数列挙することにより、複数のウェイポイント(すなわちルート)を指定できます。
--flight-plan=[file]
ウェイポイントがいくつもあるときに便利。 読み込むファイルを指定できます。

注意: これらのオプションは、自分が何をしているか分かっている上級ユーザ向けです。

3.5.11 入出力(I/O)オプション

--garmin=params
Garmin GPSプロトコルを使ってコネクションを張る。
--joyclient=params
Agwagonジョイスティックにコネクションを張る。
--native-ctrls=params
FGネイティブコントロールプロトコルを使ってコネクションを張る。
--native-fdm=params
FGネイティブFDMプロトコルを使ってコネクションを張る。
--native=params
FGネイティブプロトコルを使ってコネクションを張る。
--nmea=params
NMEAプロトコルを使ってコネクションを張る。
--opengc=params
OpenGCプロトコルを使ってコネクションを張る。
--props=params
双方向的なプロパティマネージャを使ってコネクションを張る。
--pve=params
PVEプロトコルを使ってコネクションを張る。
--ray=params
Ray Woodworthモーションチェアプロトコルを使ってコネクションを張る。
--rul=params
RULプロトコルを使ってコネクションを張る。
--atc610x
atc610xインターフェースを有効化。

3.5.12 デバッグ用オプション

--trace-read=params
あるプロパティに対する読み込みをトレース。 複数列挙できます。
--trace-write=params
あるプロパティに対する書き込みをトレース。 複数列挙できます。

3.6 ジョイスティック・サポート

キーボード一つで機械を制御するセスナのパイロットを想像できますか? 飛行感覚を正しく得るためには、ジョイスティックまたはヨーク(操縦桿)に加えてラダー(方向舵)ペダルが必要ですよね? ですが、いくつかのオペレーティングシステム用に市販されているジョイスティックやフライトスティック、ヨーク、ペダルなどには種々様々な組み合わせがあるので、FlightGearにおけるジョイスティック・サポートは重要です。

FlightGearには、どんなジョイスティックやヨーク、ペダルが取り付けられても自動的に検出するジョイスティック・サポートが統合されています。 とにかくお試しください! もしうまく動作しなくても、がっかりせずに落ち着いて! FlightGearのメニューから Help -> Joystick Information を選ぶと、あなたのどのジョイスティックが検出されているのかを見ることができます。

残念なことに、FlightGearでサポートされた(恐らく英語以外の)オペレーティングシステムと、市販のジョイスティックの組み合わせによっては、うまく動作しないことがあります。 基本的には、うまく動かすためには2通りのアプローチ方法があり、前者をお勧めします。

訳注: 下記の「Windowsユーザ向けのいくつかのヒント」には、日本のWindowsユーザにとって重要な情報が記載されています。 また現状にそぐわないファイルのパスは原文から変更し、特に断り無く3.1.1の$FG_ROOTを用いて書き直しました。-toshi

3.6.1 内蔵されているジョイスティック・サポート

全般的な留意点

ジョイスティックの自動検出を有効にするためには、各ジョイスティックごとに、ジョイスティック・バインディング用のxmlファイルが存在する必要があります。 このファイルには、どの軸とボタンがFlightGearのどの機能を操作するのに使われるのかが記載されています。 軸またはボタンを機能に関連付けることを「バインディング」と呼びます。 全てのバインディング・ファイルを探す場所をFlightGearに伝える役目をするのは、ジョイスティック記述ファイル

$FG_ROOT/joysticks.xml

です。このファイルの中に対応する項目があるならば、バインディング・ファイルはどんな名前でも許容されます。 後ほど、例を使って説明します。

いくつかのメーカのジョイスティックに対しては、数種類のバインディング・ファイルがメーカごとに名前の付いたフォルダの中に含まれています。 例えば、もしCH Productsのジョイスティックをお持ちなら、

$FG_ROOT/Input/Joysticks/CH

というフォルダを見て、ご自身のジョイスティックが動きそうなファイルを探してください。 そのようなファイルが存在し、ご自身のジョイスティックが他のアプリケーションで動作しているならば、FlightGearの初回起動時にそのジョイスティックは動作するはずです。 そのようなファイルが存在しない場合は、後節で、FlightGearに含まれるサンプルからカット&ペーストしてファイルを作成する方法について説明します。

 

ジョイスティックが有効であることの確認

あなたのコンピュータはジョイスティックを認識していますか? Linux環境下でこの質問に答える一つの方法として、システムを再起動してすぐにコマンドラインで

dmesg | grep Joystick

と入力する方法があります。 これは、ブート・メッセージをgrepにパイプして、ブート・メッセージ内で"Joystick"という文字列を含む全ての行を表示します。 もしSaitekのジョイスティックが接続されているならば、以下と似たような行を見ることができるでしょう。

input0: USB HID v1.00 Joystick [SAITEK CYBORG 3D USB] on usb2:3.0

この行から、ジョイスティックがオペレーティングシステムに対してSAITEK CYBORG 3D USBと名乗っていることが分かります。 このことから、ジョイスティックのドライバからあなたのジョイスティックが見えている、と言うことはできません。 Windows環境下で動作している場合には上記の方法は使えませんが、次の項に進んでください。

 

ドライバがジョイスティックを認識していることの確認

FlightGearには、js_demoと呼ばれるユーティリティが同梱されています。 これは、システムに接続されているジョイスティックの番号、それぞれの名称、能力を報告します。 Linux環境下では、 FlightGear/bin フォルダから次のようにしてjs_demoを実行できます。

$ cd /usr/local/FlightGear/bin
$ ./js_demo

Windows環境下では、コマンドプロンプト(スタート/すべてのプログラム/アクセサリ)を開き、FlightGearのバイナリ・フォルダに行って以下のようにプログラムを起動します(FlightGearは c:\Program Files\FlightGear にインストールされていると仮定)。

c:
cd "\Program Files\FlightGear\bin"
js_demo.exe

私たちの環境では、最初の何行かの出力はこのようになります(スクロールが早くて画面を通り過ぎてしまう場合はCtrl-Cでプログラムを止めてください!)。

Joystick test program.
~~~~~~~~~~~~~~~~~~~~~~
Joystick 0: ``CH PRODUCTS CH FLIGHT SIM YOKE USB''
Joystick 1: ``CH PRODUCTS CH PRO PEDALS USB''
Joystick 2 not detected
Joystick 3 not detected
Joystick 4 not detected
Joystick 5 not detected
Joystick 6 not detected
Joystick 7 not detected
+--------------------JS.0----------------------+--------------------JS.1----------------------+
| Btns Ax:0 Ax:1 Ax:2 Ax:3 Ax:4 Ax:5 Ax:6      | Btns Ax:0 Ax:1 Ax:2                          |
+----------------------------------------------+----------------------------------------------+
| 0000 +0.0 +0.0 +1.0 -1.0 -1.0 +0.0 +0.0   .  | 0000 -1.0 -1.0 -1.0   .    .    .    .    .  |

まず注目していただきたいのは、ドライバによって認識されたジョイスティックがそれぞれ何番に割り当てられたのかをjs_demoが報告することです。 また、各ジョイスティックが報告する"名称"が引用符の間に含まれることにも注目してください。 この名称は、各ジョイスティックに対するバインディングxmlファイルを記述しようとする際に必要になります。

 

軸とボタンの番号付けの特定

js_demoを用いて、軸とボタンの番号を以下のようにして特定することができます。 ジョイスティックの軸とボタンを操作しながらjs_demoの出力を観測することにより、ジョイスティックのそれぞれの軸とボタンがどの軸番号とボタン番号に割り当てられているかを決定することができます。 一般的に、番号は0から始まることに注意してください。

ボタンは2進数として内部で処理されており、0ビット目(最下位ビット)はボタン0を、1ビット目はボタン1を表しています。 しかしながら、画面上の番号は16進法で表示されます。つまり、以下のようになります。

0001 → ボタン0が押されている
0002 → ボタン1が押されている
0004 → ボタン2が押されている
0008 → ボタン3が押されている
0010 → ボタン4が押されている
0020 → ボタン5が押されている
0040 → ボタン6が押されている
... など。最大で ...
8000 → ボタン15が押されている
... そして ...
0014 → ボタン2と4が同時に押されている
... など。

Linuxユーザに対しては、ジョイスティックの"名称"や各軸とボタンに割り当てられた番号を特定するもう一つのオプションがあります。 たいていのLinuxのディストリビューションには"jstest"という非常に手軽なプログラムが含まれています。 CH Productのヨークがシステムに接続されている場合、jstestによって以下の出力行が表示されます。

jstest /dev/js3
Joystick (CH PRODUCTS CH FLIGHT SIM YOKE USB ) has 7 axes and 12 buttons. Driver version is 2.1.0
Testing ... (interrupt to exit)
Axes:  0:     0  1:     0  2:     0 3:     0 4:     0 5:     0 6:     0 Buttons:  0:off  1:off 
2:off  3:on  4:off  5:off  6:off  7:off  8:off  9:off  10:off  11:off

括弧で挟まれた"名称"に注目してください。 これが、あなたのジョイスティックにシステムが関連付けている名称です。

コントローラのどれかを動かすと、その動かしているコントローラに対応する軸番号の後の数字が変わります。 ボタンのどれかを押すと、押しているボタンに対応するボタン番号の後のoffがonに変わります。 このようにして、2進法に混乱させられることなく、それぞれの操作に対する軸番号とボタン番号を素早く書き出すことができます。

 

ジョイスティック・バインディング用xmlファイルの記述と編集

現時点で、オペレーティングシステムとジョイスティック・ドライバの両方があなたのジョイスティックを認識していることを確認してあります。 また、オペレーティングシステムとドライバに対してあなたのジョイスティックが報告するジョイスティックの"名称"を特定するためのいくつかの方法も分かりました。 すると、どの軸やボタン、対応する番号に対して何の制御機能を割り当てたのかを記述したリストが必要になることでしょう。

前述のjs_demoやjstestを使って(紙と鉛筆で)以下の表を作成してください。 ここでは、ハットスイッチに連動する2軸を含む5つの軸があると仮定しています。

軸 (Axis)ボタン (Button)
エレベータ (elevator) = 0視界切替 (view cycle) = 0
ラダー (rudder) = 1全ブレーキ (all brakes) = 1
エルロン (aileron) = 2トリムアップ (up trim) = 2
スロットル (throttle) = 3トリムダウン (down trim) = 3
左右ハット (leftright hat) = 4フラップ下降 (extend flaps) = 4
前後ハット (foreaft hat) = 5フラップ上昇 (retract flaps) = 5
回転数減少 (decrease RPM) = 6
回転数増加 (increase RPM) = 7

仮に、ジョイスティックがシステムとドライバに提供する"名称"が「QUICK STICK 3D USB」であるとしましょう。 FlightGearに含まれる例を用いて、今のところサポートされていないジョイスティックを自動認識させる一番簡単な方法は、既存のバインディング用xmlファイルを編集することです。 $FG_ROOT/Input/Joysticks/ サブフォルダ内のxmlファイルをご覧ください。 FlightGearで提供されているいくつかのxmlバインディング・ファイルを評価した後に、私たちは次のファイルを編集することに決めます。

$FG_ROOT/Input/Joysticks/Saitek/Cyborg-Gold-3d-USB.xml

このファイルには、軸に割り当てられた上記の全ての軸機能と、ボタンに割り当てられた上記の全てのボタン機能が含まれています。 このため、些細な編集で済みます。

編集を始める前に、バインディング用xmlファイルに対する名前を決め、QSジョイスティック用のフォルダを作成し、元となるxmlファイルをこのディレクトリにこの名前でコピーする必要があります。

$ cd /usr/local/FlightGear/Input/Joysticks
$ mkdir QS
$ cd QS
$ cp /usr/local/FlightGear/Input/Joysticks/Saitek/Cyborg-Gold-3d-USB.xml QuickStick.xml

ここでは、/usr/local/FlightGear にFlightGearがインストールされたLinux/UNIXシステムを仮定しました。 c:\Program Files\FlightGear\ にFlightGearがインストールされたWindowsでの同様な手順としては、コマンドプロンプトを開いて以下を入力してください。

c:
cd "\Program Files\FlightGear\data\Input\Joysticks"
mkdir QS
cd QS
copy "\Program Files\FlightGear\data\Input\Joysticks\Saitek\Cyborg-Gold-3d-USB.xml" QuickStick.xml

次に、QuickStick.xmlをお好みのエディタで開いてください。 ジョイスティック名を変更することを忘れてしまう前に、<name>を含む行を検索してください。

<name>SAITEK CYBORG 3D USB</name>

という行が見つかりますので、以下のように変更してください。

<name>QUICK STICK 3D USB</name>

この行は、xml文書の重要な特色を明らかにしています。 それは、<タグ>で始まり、</タグ>で終わるということです。

では、あなたの作った表と、コピーしたファイルの先頭にあるコメントの表を比較します。 コメントから、Saitekのエレベータは軸1に割り当てられていることが分かることに注意しましょう。

<axis n="1">

という文字列を検索して、

<axis n="0">

に変更してください。

次に、Saitekのラダーは軸2に割り当てられていることに注意してください。

<axis n="2">

という文字列を検索して、

<axis n="1">

に変更してください。

訳注: 現在のFlightGearに同梱されているCyborg-Gold-3d-USB.xmlにおけるラダー軸は、UNIXとMacでは軸2、Windowsでは軸3に割り当てられています。 例えばUnix環境でラダーの割り当てを軸2から軸1に変更したい場合は、<desc>Rudder</desc>行の後の<number>の直後の

<unix>2</unix>

と書かれた行を

<unix>1</unix>

に変更すれば良いと考えられます。-toshi

引き続き、あなたの作った表とSaitekのコメント表を比較して、軸番号とボタン番号を適宜変更してください。 QUICKSTICK USBとSaitekの軸の数は同じですが、ボタンの数は異なるので、余計なボタンの行は削除しなくてはなりません。 また、開始タグ1つ1つに対して終了タグが存在することを念入りにチェックすることをお忘れなく。 さもないと、そのxmlファイルを用いるとエラーが発生します。

何人かのユーザからの報告によると、ある機能に割り当てられる軸とボタンの番号は、同じジョイスティックでもWindowsとLinuxで異なることがあり得ます。 上述の手順を用いることで、異なるオペレーティングシステム用に作成されたバインディングxmlファイルをご自身のオペレーティングシステム用に容易に変更することが出来ます。

 

新しいバインディングxmlファイルのFlightGearへの読み込み

あなたの新しいxmlファイルをFlightGearが使用する前に、

$FG_ROOT/joysticks.xml

を編集する必要があります。 nameタグの間に入力した"名称"が、ジョイスティックによってドライバに提供された名前と一致するのであれば、あなたの新しいファイルのパスを含んだ1行を追加します。 以下の行をjoysticks.xmlに追加してください。

<js-named include="Input/Joysticks/QS/QuickStick.xml"/>

メニューのHelp -> Joystick Information を選択すると、あなたのジョイスティック設定をFlightGearがどのように解釈しているかを知ることが出来ます。

 

Windowsユーザ向けのいくつかのヒント

基本的には、Windows上でも上記の手順が機能します。 ご自分のジョイスティック/ヨーク/ペダルがうまく動作している、または上記の方法でうまく行ったのでしたら、そのままで結構です。 しかし、残念ながらまだいくつか問題のある方がいるかもしれません。

1つ目の問題は、non-US版のWindowsを使っているユーザに関係があります。 上述のように、ジョイスティック名はjs_demoプログラムから得ることができます。 もしnon-US版のWindowsを使っていて、上記で名づけたジョイスティックの.xmlファイルがそのような特殊なジョイスティック名を含んでいなければ、その適合するファイルの最初にその特殊な名前を以下のような形式で追加してください。

<name>Microsoft-PC-Joysticktreiber </name>

joysticks.xmlベースファイルには新しい項目は要りません。

訳注: 日本語Windowsの環境では、

<name>Microsoft PC ジョイスティック ド</name>

のように設定することになるが、この設定で動作するかは現時点で不明である。-toshi

不幸にして、Windows上のジョイスティックサポートにはもうひとつの抜け穴があります。 2つのUSBデバイスを取り付けている場合(例えばヨークとペダル)はこのケースに該当するかもしれません。 この場合、同じドライバ名が2重に報告されます。 このケースでは、(0と1の中から)0番にヨークを割り当てることにより、少なくともヨークを動作させることができるようになります。 このために、エルロンを制御するヨークを回してjs_demoの出力を見てください。 コロンの最初のグループ(device0用)の図形が変化すれば、正しく割り当てられています。 もしコロンの2番目のグループ(device1用)の図形が変化するならば、まずは優先デバイスがヨークになるようにしなくてはなりません。 そうするためには、Windowsの「コントロール パネル」に入り、(訳注: クラシック表示で)「ゲーム コントローラ」を開き、「詳細設定」ボタンを選択してください。 ここで「優先」デバイスにヨークを選ぶことができます。 その後、もう一度js_demoを実行して割り当てを確認してください。 今度はヨークが図形の最初のグループをコントロールするはずです。

残念ながら、同じ方法を使ってペダルも操作できるようにする方法は分かっていません。 したがって、このようなケースなどにはジョイスティックコントロールを割り当てる別の方法を試してみることになるかもしれません。

訳注: Windows でCH Pro Pedal(ジョイスティック0)とSaitek X45(ジョイスティック1)の2台を使うには、単に$FG_ROOT/joysticks.xmlの<PropertyList>行以下を以下のように修正するだけで良いようです。-toshi

<PropertyList>
<!--
	<js-named include="Input/Joysticks/Local/X45-modified.xml"/>

	<js n="0" include="Input/Joysticks/Local/joystick_0.xml"/>
-->
	<js n="0" include="Input/Joysticks/CH/pro-pedals-usb.xml"/>
	<js n="1" include="Input/Joysticks/Saitek/X45.xml"/>
</PropertyList>

参考: 「2007/5/17のsambarさんのフォーラム投稿記事

補足:先述のWindowsの「優先デバイス」の設定でヨーク(あるいはスティック)を優先デバイスに設定した場合には、ヨークがjs0,ペダルがjs1になるように設定する必要があります (どういう条件でデバイスの優先順位が設定されるのかは知りませんが) -sambar

3.6.2 .fgfsrcを経由するジョイスティック・サポート

幸運なことに、これらのファイルの記述言語であるXMLの経験が無いであろう平均的なユーザから重荷を取り除くツールが現在は存在します。

この手法を使ってジョイスティックを設定するためには、コマンドシェル(Windowsではコマンド プロンプトであり、スタート|すべてのプログラム|アクセサリ にあります)を開いてください。 そして、/FlightGear/binにディレクトリを移動してください。 例えばこのようになります(ご使用の環境に合わせて修正してください)。

cd "c:\Program Files\FlightGear\bin"

そして、fgjsツールを起動します。 UNIX/Linuxマシンでは、

./fgjs

Windowsマシンでは、

fgjs

と入力します。 このプログラムは、どのジョイスティックが検出されたのかを(もし存在すれば)知らせてくれます。 では、画面に表示される指示に従ってください。 すなわち、要求されるとおりに軸を動かし、ボタンを押してください。 軽く触れるだけでも動作にカウントされることに注意してください。 画面上のレポートをチェックしてしてください。 もし何かおかしいと感じたら、単にプログラムを再起動してください。

全ての軸とスイッチが終了したら、上記のディレクトリ内にfgfsrc.jsというファイルが作成されます。 もしFlightGearのルートディレクトリ$FG_ROOTにオプションファイル.fgfsrc(UNIX)/system.fgfsrc(Windows)が含まれていなければ、単に$FG_ROOTディレクトリにコピーして、

$FG_ROOTディレクトリのfgfsrc.js.fgfsrc(UNIX)/system.fgfsrc(Windows) に

名前を変えてください。 オプションファイルを作成済みであった場合は、テキストエディタでfgfsrc.jsを開き、中身をコピーして.fgfsrc/system.fgfsrcの中に追加してください。1つのヒントとして、fgjsの出力はUNIX形式です。その結果、WIndowsのエディタ(メモ帳)では正常に表示しないかもしれません。お勧めは、UNIXファイルも取り扱えるエディタを入手することです(古いけれどもこの点から良く使われているのはPFEです。webで検索してください)。その目的で私の好みのフリーウェアのファイルエディタは、幾分と時代遅れですが、未だにPFEであり、以下から入手できます。

http://www.lancs.ac.uk/staff/steveb/cpaap/pfe/ (訳注: リンク先修正)

訳注: 上記は英語用テキストエディタです。(メモ帳以外の)日本語用テキストエディタの多くはUNIXの改行コードに対応していますので、http://www.vector.co.jphttp://www.forest.impress.co.jp などでお好みのテキストエディタを探してみることをお勧めします。

fgjsの軸・ボタンの割り当ては、少なくとも正しく軸を割り当てますが、その出力はちょっと調整する必要があるかもしれません。 本来とは反対方向に動いてしまう軸があったり、不感帯が小さすぎたりなどの現象が起きるかもしれません。 例えば、USB CH Flightsim Yoke を Windows XP で用いたときは、

prop:/input/joysticks/js[1]/axis[1]/binding/factor=-1.0

から

prop:/input/joysticks/js[1]/axis[1]/binding/factor=1.0

に修正しなくてはなりませんでした。 そこで、ジョイスティックのプロパティの割り当てについての短い紹介をここに記します。

基本的に、全ての軸の設定は以下の構造からなる行を通じて指定します。

--prop:/input/joysticks/js[n]/axis[m]/binding/command=property-scale (1行)

--prop:/input/joysticks/js[n]/axis[m]/binding/property=/controls/steering option (1行)

--prop:/input/joysticks/js[n]/axis[m]/binding/dead-band=db (1行)

--prop:/input/joysticks/js[n]/axis[m]/binding/offset=os (1行)

--prop:/input/joysticks/js[n]/axis[m]/binding/factor=fa (1行)

ここで、

nデバイス番号 (通常は0から始まる)
m軸番号 (通常は0から始まる)
steering optionelevator, aileron, rudder, throttle, mixture, pitch のいずれか
dead-bandその信号が破棄される範囲、ヨークの微小な動きによるジッタを避けるのに便利
offsetデバイスがニュートラル・ポジションにならない時に指定
factorその軸の感度を制御、+1がデフォルト、-1で逆方向に動作

これらの行に従って、あなたのジョイスティックは少なくとも動作するようになるはずです。 例えばジョイスティックのボタンを動作するようにすることなどさらに細かい点を考慮して、John Check氏が非常に有用なREADMEを書いています。 それはFlightGearベースパッケージに含まれており、FlightGear/Docs/Readme/Joystick.htmlにあります。 入力デバイスに関するどんなトラブルの場合でも、このドキュメントを読むことを強くお勧めします。


編集メモ


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS