takeyohのおぼえがき

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

モデル追加方法の複雑性に挑戦! #trackmod #kn5

ちょっと複雑ですが、自分のためのメモということでご勘弁ください。
なんでもよいのですが、あるtrack modに別で作成したkn5を追加するにはいくつか方法があります。

ちなみに今回の例は、追加するオブジェクトはマップ上に配置されていて、アニメーションしない想定のものです。
飛行機やヘリコプター、船みたいに動かす想定の場合は、過去の覚書を参照ください。
この辺→
SRPで飛行機を飛ばすmodを作る(飛行機作成編) - takeyohのおぼえがき

1)models_XXX.iniに追加する方法
track mod直下にレイアウトの数だけ、models_(レイアウト名).iniというファイルがあるはずです。
kn5を追加したいレイアウトのiniファイルをメモ帳で開いて、一番最後の部分に

[MODEL_XX]
FILE=(追加したいファイル).kn5
POSITION=0,0,0
ROTATION=0,0,0

XXはそのiniファイルの最後の[MODEL_]の番号の次の番号を入れてください。
(最後が[MODELS_18]だったら、上記は[MODELS_19]です。)

2)MODELS_REPLACEMNETを使う方法
extensionの機能を使う方法です。extension/ext_config.iniに設定して使います。
下記は、SRP 0.9.3 PTB1への追加例です。

[MODEL_REPLACEMENT_...]
ACTIVE = 1
FILE = shuto_revival_project_beta_ptb.kn5
INSERT = (追加したいファイル).kn5
INSERT_AFTER = geo_PA_tatsumi_parts
OFFSET = 0,0,0

FILEはそのtrack modのメインkn5を選択すると良いです。
INSERT_AFTERはFILEで指定されたkn5に含まれるメッシュを選択すると良いです。
(上記例は辰巳PAのパーツの一つ。名前の取得はObject Inspectorを使うと簡単です。)

3) physics.RigidBodyを使う方法
これはtrack用のlua script内で追加する方法です。
track用lua scriptとして、addparts.luaを用意するとします。

 physics.RigidBody("(追加したいファイル).kn5", 100000,vec3(0,0,0),true,true) 

100000は追加したメッシュの重さです。個々では仮に100000kgとしています。
その後ろのvec3は重心位置。その後ろのtrueは追加したメッシュが衝突などでアクティブに動かすか動かさないかが制御できるようです。
このphysics.RigidBodyは追加されるkn5がcolliderとして扱われます。追加するkn5はksEditorでkn5作成するとき、track用kn5として出力する必要があります。

以上、3つの追加方法をメモリました。
1は一番オーソドックスな方法ですが、track modのルートフォルダにファイルの追加や設定を追加する必要があるので、他のファイルを弄ってしまって壊さないように注意が必要です。
また、オンラインサーバで使用しているレイアウトに追加してしまうと、オンラインサーバログイン時にmodels_XX.iniはチェックされ、設定が異なるとbanされます。
オンラインサーバで使うレイアウトへの追加は避けた方が良いです。

2は若干面倒ですが、自分専用レイアウトを作成し、そこだけに追加することができるので、おおもとのtrackに影響を与えなくて済むというメリットがあります。
同じtrack modでもオンラインサーバで使うレイアウトとは別のレイアウトとして作成できるので、1のオンラインサーバログイン時のban問題も発生しません。

3はさらに面倒ですが、lua script上であれば、ランダム関数がうまく使えるので、確率で表示したりしなかったりみたいな制御も可能です。
ただし、3の設定はオンラインサーバでは動作しないように制限がかけられているようです。まぁ、同時に走っている人によって表示されてたりされてなかったりということを避けるためかなと思います。
assettoserver上で、ランダムに事故車両をあちこちに表示出来たら面白いなと思って始めた検証作業ですが、1と2の方法では、ランダムな追加・表示は出来ず、3の方法はオフラインならランダムな追加・表示が可能ですが、オンラインサーバではcolliderの追加が使えないということがわかりました。
なので、ランダムに事故車両を登場させるmodはオフラインでは衝突判定も含めてランダムに登場させられますが、オンラインでの利用においては、車両や煙、火だけ表示して、衝突判定は無し(すり抜けられてしまう)というのが今のところの限界です。

また、追加の情報がわかってきたら、アップデートします。

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