見出し画像

【ResoRail】軌道Slot標準について

ResoRail (VR鉄道) 線路の規格について解説いたします。


ResoRail軌道Slot標準とは

Resoniteで自由に鉄道を遊ぶにはどうすればよいのか?
線路を自由に敷いて、車両を自由に載せて走らせる。それを可能とする為の仕組みや構造を考案しました。それがResoRail軌道Slot標準です。
この標準に従って線路を作り、車両システムを開発する事で、どのワールドでも好きな車両を走らせる事が可能となります。

ResoRail共有フォルダーにテキストが入っていますので、詳細はそちらをご確認ください。

軌道Slot標準には3つの項目があります。

  1. 軌道に関する仕様(絶対)

  2. 継目に関する仕様(任意)

  3. スナップに関する仕様(任意)

それぞれの詳細は次の通りです。


1.軌道に関するSlotの仕様

一番大事な内容です。線路を作る際は仕様を遵守する必要があります。
ResoRail軌道の仕組みはとてもシンプルで、コライダーを並べるだけです。
コライダーの付いてるスロットの座標を利用して車両を誘導します。
つまり、見た目は何でも良いので、標準軌・狭軌・路面軌道・モノレール・ジェットコースター等何でもOKです。(ただし、三線軌条や背向割出し等の機能を実装する場合は、別途工夫が必要になります。)

SlotのTagは「Rail」
(車両側はRaycast→HasTagして線路を判別します。)

Slotの原点位置
 X軸:軌道中心線
 Y軸:レール頭面
 Z軸:軌道端又は中心
(車両側はRaycast→GetSlotして軌道中心及びレール頭面の位置データを取得します。)

Slotの原点方向(+)
 X軸:マクラギと平行
 Y軸:上向き
 Z軸:進行方向
(車両側はRaycast→GetSlotして進行方向及び傾きのデータを取得します。)

Slotの縮尺
 X軸:1
 Y軸:1
 Z軸:1
(ワールドRoot等倍。)

BNR式(ResoRail準拠)線路のSlot座標設定(例)

このSlotにはBoxColliderコンポーネントを一つアタッチします。
(車両側のRaycastをこのコライダーにHitさせます。車両との間に別のコライダーが存在するとRaycastが妨害されるため、線路上には障害物を設置しないでください。線路3Dモデルには余計なコライダーを極力付けないようにしましょう。)

Colliderの各設定はRaycastが当たる設定ならOKです。

ColliderOffset
 X軸:0
 Y軸:上面がレール頭面から±0.2m以内
 Z軸:軌道と同じ範囲

ColliderSize
 X軸:0.8m以上
 Y軸:下面がレール頭面から-0.2m以上
 Z軸:軌道と同じ大きさ

コライダーの横幅は0.8mよりも広く、軌間と同じぐらいか、隣接線路を支障しない程度の幅にします。厚みは0mでも可能ですが、安定してRaycastをHitさせる為、ある程度の厚さが望まれます。こちらも隣接線路を支障しない程度の厚さにします。

BNR式(ResoRail準拠)線路のコライダー設定(例)

以上が軌道に関するSlot標準です。

この他にも、線路は大量に並べるので描画負荷軽減の為にLODGroupを設定したりMaterialの削減をするなどして、軽量化に努める必要があります。
また、分岐器を作る際はコライダーのActiveを切り替えるなどして、開通方向に対してこの仕様を満たす必要があります。

線路を敷設する際は、縮尺と線路の向きに注意してください。敷設後は、コライダーの形状及び線路上を支障するコライダーの有無などを確認してください。
車両走行システムを開発する場合は、可能であれば縮尺や線路方向に依存しない仕組みだと良いです。また、軌道狂いやコライダーの隙間等があっても問題なく走行できる台車を開発する必要があります。


2.継目に関するSlotの仕様

レール継目に関する仕様です。
主な用途はレール継目の音(ガタンゴトン♪)を発生させる為に使用されますが、転動音の種別切替制御や、車両の誘導等に使用されることもあります。
継目の衝撃音も数種類に分ける事が可能で、通常・鉄橋・隧道・溶接・伸縮・相互・分岐のように指定する事が可能です。(これらの実装は、車両走行システムの開発者に委ねられます。)
継目の見た目(3Dモデル)はなんでも良いです。

SlotのNameは「音の種類+半角スペース+Joint」
通常=「Normal Joint」
鉄橋=「Bridge Joint」
隧道=「Tunnel Joint」
この3つ以外の音を指定する場合は「Normal Long Joint」「Tunnel Long Joint」「Normal Expansion Joint」等のように指定します。
(車両側はRaycastでHitしたSlotのNameを分析して音の種類を取得します。)

SlotのTagは「Joint」
(車両側はRaycast→HasTagして継目を判別します。)

Slotの原点位置
 X軸:軌道中心線
 Y軸:レール頭面
 Z軸:継目位置
(車両側はRaycast→GetSlotして軌道中心及びレール頭面の位置データを取得します。)

Slotの原点方向(+)
軌道と同じ

Slotの縮尺
軌道と同じ

BNR式(ResoRail準拠)継目のSlot座標設定(例)

このSlotにはShpereColliderコンポーネントを一つアタッチします。

Colliderの各設定はRaycastが当たる設定ならOKです。

ColliderOffset
 X軸:0
 Y軸:軌道コライダー上面と同じ高さ。
 Z軸:0

Radius
 0.15

BNR式(ResoRail準拠)継目のコライダー設定(例)

以上が継目に関するSlot標準です。

この他にも、レール継目板及びレールボンドは大量に並べるので描画負荷軽減の為にLODGroupを設定したりMaterialの削減をするなどして、軽量化に努める必要があります。

継目を設置する際は、縮尺と継目の向きに注意してください。
車両走行システム側での継目音実装は開発者に委ねられます。継目通過時のハプティクス設定・台車の上下動揺・転動音の切替・車両の誘導等、様々な目的で継目を使用する事ができます。


3.スナップに関するSlotの仕様

レール敷設作業に関する仕様です。
Module Snapping Toolで配置できるようにするために設定します。
方向に注意して設定しましょう。

Z+端の設定

SlotのNameは「Rail.F」
SlotのTagは「Rail.B」

Slotの原点位置
 X軸:0   Y軸:0   Z軸:レールZ+端
Slotの原点方向
 X軸:0   Y軸:180   Z軸:0
Slotの縮尺
 X軸:1   Y軸:1   Z軸:1

Z-端の設定

SlotのNameは「Rail.B」
SlotのTagは「Rail.F」

Slotの原点位置
 X軸:0   Y軸:0   Z軸:レールZ-端
Slotの原点方向
 X軸:0   Y軸:0   Z軸:0
Slotの縮尺
 X軸:1   Y軸:1   Z軸:1

BNR式(ResoRail準拠)線路のスナップ設定(例)

以上がスナップに関するSlot標準です。
工夫する事で線路敷設以外に、継目や標識類の設置にも応用できます。

Module Snapping Tool は上記のSlotだけでは機能しません。
上記Slotに親Slotを作り、SlotのNameを「Snap Points」にします。
さらに、軌道SlotのRootにObjectRootコンポーネントをアタッチする必要があります。

この機能は車両走行システムと関係ありません。あくまでも、工事を楽にするための設定です。


おわり

次回はResoRail軌道回路標準の解説を予定しております。

この記事の内容が良いと思ったら、『スキ』『サポート』『フォロー』してくれると嬉しいです。
皆様のご支援と応援が活動継続の力となります。

この記事が気に入ったらサポートをしてみませんか?