ETS2 SimHubで自作ダッシュボードを作ってみる その4 画像を使ったインジケーターランプ作成

どうも、け~えすです。

今回は画像を使ってダッシュボードにインジケーターランプを作ってみます。
事前準備がかなり手間なので、そのあたりは覚悟して下さい。



事前準備

まずインジケーターランプで使う画像の用意が必要になります。
これについては正直「自分で何とかして下さい。」としか言えません。

私が自作したダッシュボードにはいろんなアイコンを使ってますが、大半が「個人使用OK・再配布不可」の物です。
そして、その画像もかなり以前に入手していた物で、すでに配布サイトがクローズドになっております。

そして不足しているアイコンについてはGIMPで自作しました。 しかし、参考にした画像があって、フルトレースではないのですが意匠としてはほぼフルトレースしている用の物ばかりで、こちらも再配布は出来ません。

フルスクラッチした物もあるのですが、それはSimHub側で対応していなかったもので、使用する機会がありませんw(リフトアクスルとか作ったのに、関数が無かったorz)


フルスクラッチですが、例えばハザードランプだったら二重の三角形を作って色を赤色にし、背景を透明にすれば完成です。
パーキングやリターダー、エマージェンシーランプであれば、二重丸を作って外側の丸の上・下部分をカットしてあげればそれっぽくなります。 パーキングなら中にPの文字を、エマージェンシーなら中に!を入れればさらにそれっぽくなります。

アイコンサイズは適当でOKです。 正方形の形だと問題ありません。
SimHub側で拡大・縮小出来るので、ある程度大きくても大丈夫です。 自分の場合は50x50か100x100にして縮小しながら使ってます。

「自動車 警告灯」とか「トラック 警告灯」で画像検索すると色々と出てきますので、それらを参考にして自作するのが一番早くて確実かと思います。

最後に作成時の条件を再度書いておきます。

・背景は透明である事
・保存フォーマットはPNGかJPEGがいいと思います。 自分はすべてPNGで保存してます。
・サイズは正方形の形であればGood。 50x50とか100x100なら問題ありません。

ランプの点灯条件に関する解説

先に関数に関する補足を入れておきます。 今までの記事で使っていた関数は、数値を拾って対応させるものでした。
今回の記事ではハザードランプを動作している時にアイコンが点滅するように動作させる方法を解説します。
この場合はハザード動作の関数を使うのですが、この系統の物は大抵「その目的の物のスイッチの動作を監視して判断する」形になってます。

ハイビームで例を取りますが、ハイビームはヘッドライトがONの状態でハイビームのボタンもONになっていることが条件になります。
パッシングもハイビームと同じライトを点灯させますが、こちらはヘッドライトのON/OFF関係なく動作します。
ゲーム側のパネルを見ていると、ハイビームでもパッシングでもハイビームのインジケーターが点灯します。

しかし、SimHubのダッシュボードはハイビームのボタンが押されていて、かつヘッドライトがONの状態じゃないと点灯しません。
SimHubのDLL(テレメトリサーバーも一緒ですが)はヘッドライトに割り当てられたボタンを監視しているから、上記のような動作しか行いません。

同じような例で、クルーズコントロールをONの状態で下り坂に差し掛かった場合、自動的にリターダーが動作して速度を抑制してくれます。(オートマのみかも?)
この時もゲーム内のダッシュボードにはリターダー動作のランプが光る車両もあるのですが、SimHubのダッシュボードでリターダーランプは点きません。

物によってはスイッチ監視ではなく動作監視を行っている物もありますが、インジケーター系は大半がスイッチ監視です。

また、ゲーム内で使われているインジケーターのすべてをSimHubが対応している訳ではありません。
今の時点でも、リフトアクスル(トラック・トレーラー共に)、トレーラーブレーキ、デフロックについては関数がありません。

リフトアクスルはトラックのタイヤの状態を監視して疑似的に対応出来そうなんですが、トラックの軸数の判定を入れないとどうにもならない感じです。

ホイール8本の接地判定の関数はあるのですが、例えば3軸のリフトアクスルだと5・6番のホイール設置を監視すれば対応出来ます。 しかし2軸の場合だと5・6番は元々ホイールが無いのでリフトアクスルを設定していると点灯しっぱなしになります。
ダッシュボードをそれ用に作れば回避可能ですが、1つのダッシュボードで使いまわすのはなかなか難しいです。

ちょっと話が横にそれましたが、インジケーター系の関数はちょっと癖があるので取り扱いの際には気を付けてください。

ダッシュボードのハザードランプを付けてみる

簡単に自作できそうなハザードランプのアイコンを使ってハザードランプをダッシュボードに取り付けていきます。
アイコンが無い人は、適当な正方形のアイコンを引っ張ってきてください。

毎度ながらですが、左側のボタンメニューの画像(Textの下のボタン)を押します。
今回は赤い枠だけ出てきましたので、ここに画像を割り当てます。

大項目Imageの所に画像を選択する項目がありますので、一番右の...ボタンを押してください。
押したら別ウインドウが出てきますので、そこから目的の画像を選択して下さい。
選択したらウインドウが消えますが、まだ画像は表示されていません。

次に先程の...ボタンの左側をクリックすると、先程選択したファイルの名前が出てくると思います。

ここで選択すると画像が表示されます。

ちなみにダッシュボードの画面サイズが1280x720で、今回使ったハザードランプのアイコンが50x50です。ちょっとアイコンが大きいので縮小したいと思います。

GeneralのWidthとHeightを両方とも50にしてみてください。 ちょうど半分のサイズになったと思います。
円形メーターやテキストと違い、画像の場合はこの2つの数値で拡大・縮小が自動的に行われます。
これをスピード表示の上あたりに持っていきます。
Top260 Left350で置いたらこんな感じになりました。

次に関数を入れていきます。 ハザードのVisibleにあるfxを押して関数画面に移動します。
 ハザードの関数があればよかったんですが、残念ながら関数にハザードはありません。
ではどうやって対応させるかというと、左右のウインカーが同時点滅している時にのみ点灯させる方式を取ります。通常の関数ではだめなので、以下の物をコピペして貼り付けてください。
isnull([DataCorePlugin.GameRawData.Lights.BlinkerRightOn],0) && isnull([DataCorePlugin.GameRawData.Lights.BlinkerLeftOn],0)
(改行なしの1行でコピペして下さいね)
これで、左右のウインカーだ点灯した時のみハザードのアイコンが表示されるようになります。
通常ではウインカーは片方の点滅が消灯ですので、上記の条件には当てはまりませんから点灯する事はありません。

SimHubの関数はNCalcをベースとしたものを使っており、ある程度プログラマブルな事が出来ます。
詳しく調べていないのですが、専用のiniを使うともっと細やかな動作条件とか分岐条件とか作れそうな感じです。

これで完成ですので、セーブしてから実際に試してみてください。

リターダーランプの作り方

今度は画像+文字でリターダー動作のランプを作っていきます。 上の解説で書いてある部分や、前回までに開設した部分については省略していきますのでご了承ください。

まずリターダーのアイコンを設置します。

GeneralのVisibleにリターダーの関数を割り当てます。 関数は GameRawData.Drivetrain.Retarderです。
これでリターダースイッチが入っているとランプが点灯します。

ここでちょっと気になる事がありまして、関数画面をよく見てください。

スイッチ系は普通TrueかFalseに表示ですが、リターダーは0の表記です。
これは、リターダーにはブレーキ強度の段数があって、この関数ではその段数を拾ってます。
せっかくなので、リターダーのアイコンの中に段数表示を入れてみます。

左のボタンリストでテキストを押します。 今回は一桁の数字のみを使うので、まず表示テキストを0にします。
全体サイズを50x50にして、フォントサイズは40、TextColorをオレンジにしました。
 
Textの所にリターダーアイコンと同じ関数を割り当てます。 これでリターダーの使用段数が表示されます。

ですが、このままだとリターダー非動作時に数字の0だけが表示され続けます。
GeneralのVisibleにも同じ関数を割り当てると、リターダー動作時のみ表示されるようになります。

これでリターダーランプの完成となります。


ここからは余談ですが、リターダーと同じように排気ブレーキも複数段の設定があります。 ですが、排気ブレーキは段数表示が出来ません。
それはDLL側が排気ブレーキのON/OFFしか監視してないからです。 段数表示をさせたくても、その数値を拾う関数が無いので表示出来ないのです。

本家のテレメトリサーバーでもダメっぽいので、本家の更新があれば今後対応されるかもしれませんね。(もう3年近く更新ないけどw)

最後に

制作に関する解説はこれで以上となります。 まだ左のボタンメニューで解説していない部分もございましが、私がこれ以外のアイテムを使っていないので解説出来ないんです。

とりあえずETS2で使う分にはこの3つがあれば問題なかったので、私の解説としてはここまでとさせていただきます。

あともう1回記事を作ります。 こちらはETS2で使うであろう関数名をまとめた物となります。
よくあるダッシュボードを作るのであれば、これを見ていただいて関数をそのままコピペして頂ければすぐ使えると思います。

後もう1回お付き合いくださいませ。


スポンサーリンク