【rfactor2】 プラグイン開発7 – クラッチFFB01 –

今回の趣旨とお知らせ

サンプルプログラム解説もひと段落したため、実際にどんなことを出来るのか試してみることにした。
今回実施することにしたのは、クラッチのフォースフィードバックである。

もともとは、ブレーキのフィーリングをどうやったら伝えられるかというのが開発開始の経緯だった。
だが「圧力」・「踏み加減」の再現は、どうしても機構が思いつかなかったのだ。

そこで考えたのが、バイブレーションである。
よくよく考えると、クラッチのミーティングの時の振動が似ていることに気がついた。

 

デバイス

今回はLogicool社製のF510を用意した。フォースフィードバックが2系統あり、今回はこれを流用する。
デバイスは2000円台と格安である。費用対効果も高い。誰でも導入可能である。

IMG_3076.jpg
XBOX360コントローラやLogicoolのF510・F710等XInput対応のものであれば、どれでも良い。
F510の場合はコントローラ裏面のスイッチをXにしておく。
※XInputとDirectInputを切り替えられる。

 

プラグイン・プロトタイプ作成結果

プロトタイプ版を2時間ほどかけて作成した。
最初の数秒は、DirectXのサンプルプログラムをそのもので、モーター2つのテストをしている。
G27のペダルが映る部分から、今回のプラグインをrFactor2で動かした動画となる。
クラッチを踏みこんでいくと、振動が始まるミーティングポイントがあり、そのまま踏み込むと振動が無くなっていく。振動は音が分かりやすい。

設置例

  1.  難易度中パターン
    Logicool社のG27のクラッチペダルの後ろ側に余っているネジ穴を使って、振動モーターを固定できないか検討中である。
    延長ケーブルを自作も必要である。
    IMG_3085.jpg
  2. 難易度少パターン
    簡単にやりたい場合は、FFB対応のコントローラをテープでG27のペダルの後ろに固定するだけでも、それなれにクラッチの振動の感触は得られるので、加工は必要ない。
    本プラグインをβで公開した際は、簡単なので試してみて欲しい。
    IMG_3077.jpg

F510分解

Logicool社製のF510を分解してみた。フォースフィードバックが左右2系統あるのだが、左右で振動の感触が違う。
その理由は、わざと重心をずらした重りの大きさと付け方が違うからだ。
IMG_3089.jpg
左側のFFB用モータを拡大してみた。赤と黒い線が、モーターを動かす直流の線である。
なんと延長しやすい構成か! ちなみにコントローラのネジも普通のプラスネジであり、改造向きである。

モーター部分のケースごと、カッターでオフして、G27に簡単に付けられそうである。
IMG_3089b.jpg

プラグインの中で行っていること

XInputを利用したのは、何よりもプログラムの簡易さである。
クラッチのミーティングポイントは、簡易版として作成した。振動の最小は0で、最大値は65535である。
※どのコントローラでも電気的に本当にそれだけ段階が取れると言う意味ではない。あくまで正規化された値として。

“Unfiltered”Clutchにしたのは、最初、”Filtered”Clutchしたところほぼ50以上の値しか取れなかったからだ。
テストがしにくいため、暫定で”UnfilteredClutch”にした。踏み込む量に線形に比例する。

クラッチが81%踏み込まれている時に、振動が最大となる。


  //暫定計算。FFBのMAX 65535。クラッチは、MIN 0.0%~MAX 100.0%
if( ( info.mUnfilteredClutch * 100.0f ) > 99.0f )
LeftMotorPower = 5535;
else if( ( info.mUnfilteredClutch * 100.0f ) > 96.0f )
LeftMotorPower = 15535;
else if( ( info.mUnfilteredClutch * 100.0f ) > 93.0f )
LeftMotorPower = 25535;
else if( ( info.mUnfilteredClutch * 100.0f ) > 90.0f )
LeftMotorPower = 35535;
else if( ( info.mUnfilteredClutch * 100.0f ) > 87.0f )
LeftMotorPower = 45535;
else if( ( info.mUnfilteredClutch * 100.0f ) > 84.0f )
LeftMotorPower = 55535;
else if( ( info.mUnfilteredClutch * 100.0f ) > 81.0f )
LeftMotorPower = 65535;
else if( ( info.mUnfilteredClutch * 100.0f ) > 78.0f )
LeftMotorPower = 55535;
else if( ( info.mUnfilteredClutch * 100.0f ) > 75.0f )
LeftMotorPower = 45535;
else if( ( info.mUnfilteredClutch * 100.0f ) > 72.0f )
LeftMotorPower = 35535;
else if( ( info.mUnfilteredClutch * 100.0f ) > 69.0f )
LeftMotorPower = 45535;
else if( ( info.mUnfilteredClutch * 100.0f ) > 66.0f )
LeftMotorPower = 35535;
else if( ( info.mUnfilteredClutch * 100.0f ) > 63.0f )
LeftMotorPower = 25535;
else if( ( info.mUnfilteredClutch * 100.0f ) > 60.0f )
LeftMotorPower = 15535;
else if( ( info.mUnfilteredClutch * 100.0f ) > 57.0f )
LeftMotorPower = 5535;
else
LeftMotorPower = 0;


 

課題

現在は、クラッチの踏み込み量だけである。実際は、その時のエンジンの回転数等によって、振動も異なるはずである。
当然、車種によっても違う。この辺りを今後検討したいと考える。

またrFactor2では、ClutchRPMなる数値(クラッチが滑ってエンジンからの軸と同速じゃない時違う値?)がある。
これが何か確認を行いたと思う。

その他

世の中には、パッドキッカー(低音の音に合わせる!?)なる装置がある。
だがこのXInput方式を使えば、重力方向の縦軸・進行方向の軸に合わせて、シートの中に仕掛けた振動を個別に計算で動かすことが可能になる。
重力等ないが、いわゆる「腰センサー」に合わせたプラグインとハードウェアを安く作れるかもしれない。

rfactor2 Plugin Develop
One comment to “【rfactor2】 プラグイン開発7 – クラッチFFB01 –”
  1. こんにちは。
    IL-2したらば掲示板の「【雑談コーナー】搭乗員詰所【1号室】」から来ました。
    rFactorほかPCカーシミュはまったくやってないのですが、IL-2のMODについて「やってみたいが情報がない」と書かれていましたので、軽ぅくそのあたりの事情についてご説明を。
    IL-2 1946の場合、MODは公式に許可されたものではなく、ハックで実現されているものなので、MODコミュニティでも開発方法の取り扱いについてはかなり慎重に行われています。
    安易に改造方法を公開することでチートの敷居が低くなってしまい、技術的志がないプレイヤーが容易にチートを行えるようになってしまうことへの警戒があります。
    そのため、何らかの「自分はチートに使いません。技術的志があります」ということを成果物としてMODコミュニティに見せると、「じゃあ手持ち技術をお知らせします」という段階になります。
    その段階にも数段階あって、特に重要な情報はなかなか教えてもらえません。
    特に大規模な大手MODコミュニティでは情報の取扱がより慎重である傾向があり、よそでは高機密な情報が小規模コミュニティではごろんと無制限に転がされている場合もあります。
    とりあえず3DモデルをいじったりするMOD作成ではなく。
    プログラミングを行いたいということになりますと。
    プログラム言語は「Java」になりまして、JDK内のjavac.exeもしくはEclipseのようなものでコンパイルすることになります。
    私は統合環境が苦手なので、テキストエディタでソースコードを書いて(いじって)javac.exeでコンパイルしてます。
    がりがりやってる人はEclipse使ってることが多いんじゃないかと思います。
    個人的には、IL-2 1946では機体をモデリングできる人はそれなりに居るのですが、コックピットをプログラミングできる人が圧倒的に不足していて、過去に作られたコックピットを流用流用で「非再現コックピットでとりあえず飛ばせます」というMOD機体が多数だったりするので、コックピットプログラミングできる人が増えてくれるとうれしいなぁと思っていたりはしないではないですが。
    ま、どういうことがしたいのか、私の方のblogに「管理者にだけ表示を許可する」チェックを入れて質問コメント入れておいていただければ、またこちらのblogに同様にして返信いたしますので。
    ただ前述のような事情があり、MODコミュニティで機密度が高く扱われている情報については私からも提供できない場合もあるかと思いますので、その点にはご了承いただければと思います。

コメントは停止中です。