takeyohのおぼえがき

気になったこと、試したことの記録です。

2つの条件をINPUTにして、アニメーションを動かす!

KNIGHT2000にはEBS(緊急ブレーキシステム)というのがあります。

まぁ、ダサいですよね。それが好きですが。(笑)

このパカッと飛び出してくるアニメーションを作るところまではよかったのですが、ここで問題が。

これまでのアニメーション実装はすべてINPUT(アニメーション制御のためのインプット情報)が一つしかありませんでした。速度とか、横Gとか、アクセル・ブレーキとか・・・。

しかし、EBSはSPMが動いている状態で発動します。ですが、INPUTが一つしかないため、INPUT=BRAKEとすると、SPMではない通常モードでもEBSのアニメーションが動いてしまう・・・。

 

これは困った・・・。ということでいつものwiki頼みでまた読んでいると、あるじゃないですか!これです。

github.com

ということで、2つの条件をINPUTにしてアニメーションを動かす方法の覚書です。

このページの下の方に行くと

More complex expressions

With CSP 0.1.77 it is now possible to have inputs referring to other inputs and using expressions. First of all, to refer to another input you can create new shared inputs:

というセクションがあります。どうやらCSPの0.1.77から実装されているもので、INPUT情報にほかのインプット情報を加えられるとあります。

そして、サンプルを見ると、INPUTに「calc:」という文字が。

これはもしかすると、複数のインプット情報を演算処理できるのでは?

で、KNIGHT2000のEBSの設定はextension/ext_config.iniに以下を追記しました。

; EBS

[ANIMATION_3]
FILE=ebs.ksanim
TIME= 0.5
INPUT = "calc:(BRAKE * EXTRA_D)"
INPUT_AS_PROGRESS = 0
INPUT_LUT = (|0.5=0 | 0.7=1|)

ebs.ksanimはEBSのアニメーション用のksanimファイルです。

ポイントになるのは、INPUTの行です。

これは、BRAKEとEXTRA_Dの乗算をしています。EXTRA_DはSPMの切り替えに使っています。SPMモードがOFFだと0、ONだと1になります。それにBRAKEのINPUT(踏まないと0、ブレーキペダルベタ踏みが1)をかけるので、SPMがONの時だけ、BRAKEのINPUTがANIMATION_3に渡されることになります。

これは便利ですね~!いろいろ応用できると思います。

これを反映した結果はこのようになります。

youtu.be

/* -----codeの行番号----- */