takeyohのおぼえがき

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

ルームミラーにマスコットをつるす

discordのとあるチャネルで、ルームミラーにマスコットをつるすにはどうしたらよいか?という書き込みがあったのを見てやってみたので、その覚書です。

もっと簡単にできればよいのですが、今のところ下記が最もシンプルなやり方になっています。

 

まず、マスコットの3Dモデルを用意します。(どこから持ってくるもよし、自分で作成するもよし)

大きさを調整し、ワールド原点(0,0,0)よりちょっと下に置きます。

この時のマスコットモデルの原点も(0,0,0)にしています。

(Shift+Sを使って、3Dカーソルをワールド原点に移動させた後、マスコット選択して右クリックし、「原点を3Dカーソルへ移動」で移動します。)

今回のモデルは頭に紐がついていなかったのですが、blenderのカーブを使って作成しています。
カーブを使った紐の作り方はこちらのサイトで勉強させていただきました。

【Blender】カーブを使って複雑な結び目をモデリングする - STYLY

つづいて、このマスコットをつるしたい車のルームミラーのところへ移動させます。
車のモデルを読み込んで位置合わせしても良いですし、ゲーム内のObjectInspectorで座標を探してもよいです。

車のモデルを読み込んで調整する場合は、直感的でわかりやすいですが、モデルがプロテクトされている車とかだと、座標がつかみにくくなります。

 

Object Inspectorで探す場合は、ルームミラー近くのオブジェクトををalt+左クリックして、Clicked at localという部分の座標を見ます。

正確な座標は取れませんが、近くには配置できると思いますので、あとは微調整しましょう。

Object Inspectorで表示されるローカル座標をグローバル座標に変換して、blenderのオブジェクトを移動させます。下記のように関連づいています。

ローカル座標 X(プラスが左、マイナスが右) →グローバル座標 -X(符号を反転)

ローカル座標  Y(上下) →グローバル座標 Z

ローカル座標 Z(前後) →グローバル座標 Y

丸で囲った位置の部分に座標情報を入れると、マスコット(の原点になっている紐先端部分)がそこへ移動します。

その後、マスコットの原点をワールド原点に移動させます。

(Shift+Sを使って、3Dカーソルをワールド原点に移動させた後、マスコット選択して右クリックし、「原点を3Dカーソルへ移動」で移動します。)
これは、マスコットを車に差し込むとき、COCKPIT_HRに対して指定するからです。COCKPIT_HRはどの車も基本的にワールド原点(0,0,0)にあります。

あ、あと揺らすマスコットのオブジェクト名(ここではMikuFigureとしています。)もメモしておいてください。

 

できたら、fbxでエクスポート。(車と一緒です。大きさや向きにご注意を。)

ksEditorでマテリアルを設定したら、kn5を作成。これでモデルは完成です。

 

続いて、車への組み込み。

つるしたい車のmodフォルダにあるextensionフォルダに移動。

そこに作成したkn5(今回はmascot_miku.kn5という名前にしてます)をコピー。

ext_config.iniにモデルの挿入と揺らす設定を記載します。


[MODEL_REPLACEMENT_...]
ACTIVE = 1        ; set to 0 to disable the whole section (default value is 1)
FILE = mx5.kn5
INSERT = mascot_miku.kn5
INSERT_IN = COCKPIT_HR
SCALE = 1,1,1     ; change size: X, Y and Z axis (for car, X is left-right, Y and up-down)
ROTATION = 0, 0, 0  ; rotate: heading, pitch and roll, in degress
OFFSET = 0,0,0

[WOBBLY_BIT_...]
NAME = MikuFigure
CONNECTED_TO =-0.00858, 1.10181, -0.132806
MAX_RANGE = 1         ; to remove any boundaries
DAMPENING_LAG = 10.0  ; to reduce friction
OFFSET_GAIN = 0       ; actual zero stiffness
G_GAIN = 2
GRAVITY_GAIN = 1.2
G_FILTER = 0
DEFAULT_GRAVITY_INCLUDED_ALREADY = 0
STIFF_AXIS_STIFFNESS = 0

MODEL_REPLACEMENTがマスコットのkn5を挿入です。

FILEには挿入する車のkn5を指定します。マスコットはドライバ視点でしか見えないと思いますので、追加するのはlodAの車だけでよいと思います。

INSERTは作成したマスコットのkn5のファイル名。

INSERT_INにCOCKPIT_HRを指定してます。ここも基本車内視点はCOCKPIT_HRのパターンのみ(COCKPIT_LRでは要らない)で十分かなと思います。
OFFSETは0,0,0です。

つづいて、WOBBLY_BITでマスコットを揺らします。

NAMEはマスコットのオブジェクトの名前。さっき上でメモしておいてくださいと書いたやつです。

CONNECTED_TOは揺れるときの中心座標。(ここを中心に揺れます)

基本的には、blenderでマスコットを移動させたときに指定した座標と同じ場所です。(こちらはローカル座標で指定します)

#ローカル座標とグローバル座標はややこしいですよね。この辺が理解できるようになると、「あれ?どっかいっちゃった?」ということを減らせます。(笑)

MAX_RANGEから下の行は公式WIKIのパクりコピーです。

Cars – Wobbly bits · ac-custom-shaders-patch/acc-extension-config Wiki · GitHub

さらに激しく揺らしたい!とかいう場合は、こちらのWIKIでパラメータの内容を確認してみてください。

(2023/2/27 追記)

さらに激しく揺れるように上記パラメータを修正してみました。

 

設定は以上です。動いている様子はこちら。

youtu.be

 

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