2020年5月11日月曜日

小ネタ:F-35のMFDとか

 天気悪くてジンバルの実動テストができない。


 たまにやってくるF-35のGUI作りたい欲がまたやってきたので、チマチマ作りながら情報収集。信頼度の高そうな写真でも、時期?によってアイコンの並べ方とかが微妙に変わるのがいやらしい。F-35のソフトウェアバージョンによってちょっとずつ変わってるのかも。三角ボタンが実線か破線か、MENUの画面で囲みが有るか無いか、大画面時に内側に表示されるボタンが隣接してるか否か、といった感じで、実用上はさほど変化はないにしろ、微妙に変化があるので、模倣しようとするとけっこう大変。

 空軍の訓練風景、F-35クラスに入ってすぐはPCで市販のジョイスティックを使って飛ばす練習。完全にテレビゲームしてる絵面。その使ってるソフトウェアが、タイトルにPrepar3D v2と書いてある。現時点での最新バージョンは5か。動画自体が古い時期なので、その当時はv2だったんだろう。
 F-35は複座機がないので、初飛行までに緊急時のリカバリーも一通り知っておく必要がある。いちいち高価なシミュばかり使っていられないので、普通のデスクトップPCにシミュを入れて、市販のジョイスティックで飛ばす。画面がタッチ液晶なら、F-35のMFDのタッチ操作もできるみたい。
 P3D自体は現在も開発が続いているけど、オリジナルのソースコードは15年ほど前に作られたもの。細かい描画を省けばノートPCでも問題なく動くはず(少なくとも、FSXはミドルレンジのノートでも動く)。飛ばす訓練ならグラフィックは重要ではないから、地上オブジェクトの描画とかを減らせば軽快に動くはず。ただ、さすがに市販のP3DにはF-35はバンドルされていないらしくて、F-35パイロットが自前のPCにP3D入れて自主練、ということはできなさそう。空軍のP3DはF-35の機能が一通り実装されているはずだから、機密情報の塊って感じ。そのあたりはちゃんと考えて、ある程度はラフに作ってあるんだろうけども。


 LMオフィスのシミュの動画をちらっと見る限り、F-16のHOTASと同様の操作ができるっぽい。F-16のHOTASはOwners' Workshop Manualの図とDCS F-16をあわせて使えばかなりの部分が推測できるので、F-35に関しても、F-16の延長線上で考えれば、かなり推測できそう。ただ、F-35で追加された操作もありそうなので、そのあたりは難しい。あと、LMオフィス暗いので動画も暗くて、動画ではスイッチ類が見えづらいのが難点。
 F-35のシミュ自体はいろいろな場所に持ち込んで報道陣へ体験させたり、エアショーでも展示することがあるらしい? F-35のシミュは1回やってみたいんだけどなぁ。


 シミュのMFD画面は、外部では1280x1024の液晶2枚に表示するか、FHDの液晶1枚に表示するか、といった見せ方が多い。F-35の液晶もSXGAだから、SXGA2枚に表示すると綺麗に収まる。SXGA2枚分でアス比16対6だから、FHDの16対9だと上下が余る。横解像度2560pxだから1920だとフルサイズでは表示できないので、スケーリングもしてるだろうし。ベクターで流してスケーリングしてるのか、ラスタでスケーリングしてるのかは不明。映像データ流すよりは、テレメ引っ張り出して画面再構成したほうが楽だろうから、FHD用に合わせてレンダリングしてる可能性もある。F-35のMFDもC++で抽象化して書いてるはずだから、PC用にビルドするのもそう大変ではないはず。


 基本的に、F-35のGUIはデジタル的にキリの良い数字で構成されている。1280、896、640、320、256、128、あたり。
 ただ、ソフトキーや数字入力パネルは、640pxで6個と、整数で割り切れない数値になる。640/5=128とか、896/7=128とか、896/8=112とか、112や128で構成しても良さそうな気がするけど、そうはなっていない。
 メニュー画面は128x112のタイルを使っているが、メニュー画面とソフトキーはピッチが異なる。動画からメニュー画面を基準にソフトキーのピッチを計算すると、105くらいか。640/6=106.66..で、1画面6個と計算は合う。が、整数じゃないし、キリのいい数字でもない。


 F-35のTSD(Tactical Situation Display)、F-16と同じようにHOTASの左手でカーソル移動、右手でロックオン、みたいな操作で、指でタッチしてもロックしたりはしないらしい。
 実際にMFD表示するライブラリ作ってみると、タッチされた場所を受け渡すのが結構面倒くさいので、タッチ操作はMFDのヒューマンインターフェースだけに使っていて、その下に表示される各画面には渡していないんじゃないか、という気がする。数値入力だったり文字入力みたいなものは、MFD側でテンキー(実際は15キーとか)を実装してあるような気がする。これならテンキーの操作感はMFD側で決まるから、機能毎に操作感が異なることもないし、機能ごとに実装する手間もない。
 ただ、テンキーというか、場合によっては最大40キーくらいになるけど、文字のレンダリングエンジンが結構多機能な感じ。1行・2行・3行で中央揃えや下揃え、色や囲い枠、下線とか。あるいは、図形も表示できる。これを再現するのは面倒だなぁ。
 当面は単純なテンキーだけかな、と思いつつ、単純なテンキー(15キー)でも結構複雑なことやってるんだよなぁ。。。

 こんなもん全部内製してたらそりゃ納期計算なんてできるわけないよ。GUIだけでもこれだけ高カロリーなのに、開口合成とか合成開口とか画像認識とか、たいへん。。。

***
追記
 youtubeでF-35の動画を探すと、採用国が多いだけに、政治的な主張の強いチャンネルで話題にされてることが多い。コックピットの操作の参考になりそうな動画は5本前後かな。参考になる動画でも再生数があまり多くなくて、探すのに苦労しそう。他の動画も見たいんだけど。


 表示モードは便宜的にLarge, Medium, Small, Thumbと呼んでるけど、基本的にはThumbとそれ以外に分けられる。
 Smallが標準の表示モード。下に広げたMed、横に広げたLarge。一部のモード(TSD等)はThumbでの表示には対応していない。
 TSD(Tactical Situation Display)をSmallで表示した場合、主に自機前方が表示される。Medは前方の範囲は変わらず、後方が広がる。Largeは前後の範囲は変わらず、左右が広く表示される。
 SMS(Storage Management System)をSmallで表示した場合、機体上方から見たイラストが表示される。Medの場合は拡張された下部に機体後方から見たイラストが追加され、ウェポンベイの開閉状況等が表示される。Thumbの場合は機体上方から見たイラストが表示される。イラストに重ねて、選択中の武器がの情報が表示される(”NO WPN SELECTED”や”STA4 GB31 - RDY”や”STA5 A120 - RDY"など)。また、Small/Medではチャフやフレアの残数も表示される。表示領域的には5-6行の表示ができそうなので、チャフ/フレア以外にも表示できそう(アクティブデコイとか?)。Largeはどういう状況が表示されるか不明。

 画面外周にはソフトウェアボタンがあるが、Smallでは左右5個ずつと上側に4個が表示される(上側は5個表示できるが、左端はメニューを開くボタンに割り当てられているため使えない)。Medでは左右に1個ずつ追加される。Largeでは横幅が広くなるが、使えるボタン数に変化はなく、上側の左側に集中して表示される。
 更に追加でソフトウェアキーを表示したい場合、Smallでは横3x縦5のキーパッドを追加できる(Med/Largeでどうなるかは不明)。3x5は画面外周のキーと共用が可能。
 また、ソフトウェアキーがメインの機能の場合(図や画像の表示が不要の場合)、画面外周のキーが使えなくなる代わりに5x8のキーパッドを表示できる。ただしこれはMedモードでのみ全域が表示され、Smallでは最下段が完全に非表示、その上の段の下側が少し隠れる。このキーパッドは、複数のボタンのエリアをまとめて一つとして使うことができる。例えば緯度経度のような文字数が大きい表示を行う場合は横2個を組み合わせて大きな表示領域として使える。
 F-35では通常の緯度経度(度と分の実数)が表示できるが、UTM表示も可能になる。ただしUTMではアルファベットが使用されるが、F-35のキーパッドでアルファベットが入力できるか(=UTMを入力できるか)は不明。現地地上部隊との連携を考えると、UTMを直接扱えるほうが便利なはずだから、何らかの手段はありそう。


 とりあえず、個人的に興味深い機能はこのあたりか。

***
追記
 ソフトキー、実装方法を考え中。



 ガバガバやな!!!
 そもそも動画中だと右の画面はサブディスプレイのメニューだし。

 ウインドウ描画内でソフトキーも書いてるけど、その後でユーザーインターフェースを書き加えるので、それを非表示にする方法が必要。
 ウインドウ書いて、UI書いて、ソフトキー書く、みたいな処理のほうがいいかも。

 C#のGraphics.MeasureStringで後端の空白を計算に含めるには、StringFormatのflagにStringFormatFlags.MeasureTrailingSpacesを指定すればいい。が、それをやるとテキスト内に改行コード("\n")が含まれていた場合に、そこに2文字分が追加される。おいおい、エスケープシーケンスを普通の文字として認識してるのかい? 君はアレかね、いわゆるバカというやつか?

 ちなみに、この座標はラスベガス近郊の砂漠の中。ネリス空軍基地から郊外に向かって離陸して少し左にそれたあたり。
 久しぶりにGoogle Map使ったけど、劣化しすぎじゃねーのって気がする。こんなに不便だったっけ? もっと使いやすかった気がするんだけど。。。

 そういえば、日本って防災用の地図には日本で言うUTM、諸外国で言うMGRSが使われるんだよな。と思ったけど、F-35もMGRSのことをUTMって表示してるな。ってことはUTMとMGRSは同じものとして扱ってもいいんだろうか?
 日本の防災対策で使う座標が戦闘機で直接表示できるの、大規模災害の発生時とかにはちょっと便利な気がする。地震直後に5分待機のF-35飛ばせば夜間でも赤外線カメラで被害状況とか一発で見えるし、そのまま画像を司令部に送信できるし、必要があれば現地の部隊が使っている座標を口頭で伝達できる。災害発生時にロケットで人工衛星打ち上げるよりF-35飛ばすほうが楽じゃねーのって思うのだが。

0 件のコメント:

コメントを投稿