2017年12月8日金曜日

F-16風(続き)


 24インチFHD(本物の3割増しの大きさ)でスイッチを押してみたけど、意外と押しづらかったのでボタンを大型化したのが前回からの見た目の違いかな。前回はclassだったけど、UserControlになってたり、いろいろ変わってるのだが。

 ボタンの表示や操作内容はContextMenuStripで渡すが、C#は参照渡しなので、複数のパネルで同じ内容を表示できる。1箇所でも違う内容を表示したいなら面倒だけど。
 本物のF-16等でも、左右のMFDで全く同じ内容を表示できるので、複数のパネルで操作できるのは実物準拠という感じ。実機の場合は、もし片方が壊れても大丈夫なように、万が一片方が被弾しても大丈夫なように、という事なんであろう。

 ただし、片方のpaintイベントがもう片方に波及しないので、片方でCheckedを変えたりしても、もう片方は反映されない。paintハンドラでもう片方をrefreshすると、無限ループになってしまうので、うまいやり方を考えないと。
 現実的には、ディスプレイの内容は20fpsとか30fpsで書き換えることになるだろうから、タイマで定期的にrefreshすれば無問題、という気がする。

 1280x800のノートPCでは、ディスプレイを2面表示することは可能。
 左右で別の情報を表示するようなインターフェースにしてもいいし、片方を情報表示、片方をコンフィグページ、みたいにしてもいい。

 ジンバルのコントロールパネルを作ってるが、マニュアル操作をどうするかが問題になってる。アナログ入力があればいいんだが、C#で簡単に使えるアナログUIは意外と少ない。Xbox360のコントローラであればXNA経由で使えるが、すでに入手性が悪くなってる。Xbox oneもXNAから扱えるんだろうか?
 一応C#でもジョイスティック等は読み出せるが、製品によってボタンやスティックの割当が違うから、このあたりをうまく吸収してくれるように作る必要がある。


 さっき、一瞬、F-15のディスプレイも調べてみたが、あまり良くわからなかった。
 F-15A/B/C/Dはいかにもなアナログ計器のコックピットだが、F-15Eではグラスコックピット化されている。
 EF(E型フロント席)はMFD3面と、HUD下に6行キャラクタディスプレイがある。ER(E型リア席)はMFD4面と、右側に小さなパネルがあるらしい。ERは兵装士官(WSO: Weapon Systems Officer)が乗るが、戦闘機とは思えないくらい簡素化されてる感じ。操縦桿があるのが飛行機らしい点。もっとも、F-35は電源OFFならのっぺらぼうだが、アレは「そういうもの」という思い込みがあるし。

 F-15の操縦桿には親指で操作する「キャッスルスイッチ」という物がある。滑らないようにする突起が、西洋の城の見張り台(身を隠す突起があるやつ)に似ているから、「キャッスル」スイッチと言うんだそうだ。
 ゲーム用のジョイスティックでは、ここにはPoVスイッチ(あるいはハットスイッチ)と呼ばれるスイッチが付いていて、主に視点操作に使われる。これは基本的に「開放」と「操作」の2値を受け付ける(開放と8方向で9値?)。
 F-15では、これはFLIRの視線方向操作に使うらしい。ということでゲームと同じく視点操作なのだが、ON/OFFで望遠のFLIRを操作するのは大変だろうから、おそらくアナログ入力になっているはず。
 一方で、操縦桿にはハットスイッチみたいなスイッチがもう一つ有って、これはトリムの調整に使われるらしい。これはアナログ入力が必要なほど敏感じゃないはずだから、2値(9値?)で足りるはず。


 ジンバルの操作でも、やはりアナログ入力がほしいのだけど、どうやって作るかなぁ。
 スタンドアロン重視ならマイコンにジョイスティックを追加すればいいんだけど、PS2のコントローラに入ってるようなやつでは気分が出ないし、かと言って工業用のタイプになると値段が2桁上がってしまう。
 F4ならUSBホストもハードウェアでできるけど、USBを実装するのはとても面倒くさい。気がする(USBって使ったこと無いので不明)。
 適当なUSBジョイスティックのXYをC#で読めばいいじゃないか、とも思うけど、せっかくジョイスティックを使うならHOTASっぽくしたい。スロットルデバイスは持ってないから、HOSになっちゃうけど。

 他の方法としては、JHMCS風の「見た方に向く」とか、短SAM風の「覗いた方に向く」とかもあるけど、どちらも作るのは面倒そう。

 当面は、MFDで「アナログモード」みたいな設定を作って、それがtrueのときにMFD上を左クリックしたままドラッグしたりすれば、それが入力になる、みたいな感じかなぁ。
 PC画面なら本物のMFDと違って、画面座標の直接入力が可能だけど、あんまり多用しすぎるとプログラムが大変になる。
 これはF-35でも同様なはず。もっとも、F-35は振動や加速度の条件が厳しい戦闘機のシステムだから、「振動で指が動いてしまった」とかで誤った入力にならないように、フリックやらスワイプやらの操作は無いらしい。ということで、画面をタッチした座標と、単押しか長押しか、くらいの判定しか無いはず。

 暖かくなるまでに動くようになればいいから、とか余裕かましてたけど、大変そうだ。

0 件のコメント:

コメントを投稿