takeyohのおぼえがき

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

割れた窓ガラス

窓シリーズ第2弾。衝突した際に、ガラスがバッキバキになる効果の設定になります。
assettocorsaのパイプライン資料でいうとこのあたりになります。

割れたガラスの表現には、ちょっとコツが必要です。
元々あるガラスのオブジェクトとは別に、割れたガラスを表現するオブジェクトをコピーして作成し、それに専用のマテリアルを設定していきます。

最初に、割れたガラスを表現するためのテクスチャですが、こちらもKunosの車から拝借してきました。
修正)アセットコルサインストールフォルダ内にこの2つのファイルはありましたので、ここからコピーが可能です。
assettocorsa\sdk\dev\car_pipeline_2.0rev\Common Texture
DAMAGE_GLASS_color.dds (割れたガラスのDiffuse用テクスチャ)
DAMAGE_GLASS.dds (割れたガラスのNormal用テクスチャ)
の2つが必要です。

続いて、割れたガラス用のオブジェクトを作成します。
car modにある外側用のガラスオブジェクトをコピーします。
今回のスープラの例ではオブジェクト名を「Vidros_broken」としました。

このコピーしたオブジェクトのマテリアルも複製(ここではglassBroken)し、テクスチャとしてDAMAGE_GLASS_color.ddsを設定します。

設定出来たら、割れたガラス用のオブジェクトを編集モードにし、元あるガラスよりも外側に5mm (0.005m)ずらします。
(一応、マニュアルに忠実にずらしてみました)
続いて、割れたガラス用のオブジェクトは命名規則が決められた特定のエンプティの下に入れる必要があります。
フロントガラスの場合は、DAMAGE_GLASS_CENTER_1です。
衝撃の場所がこのエンプティの場所と連動しており、さらにその下に入っている割れたガラスオブジェクトが表示される仕組みのようです。
なので、元の車のガラスがすべて一つのオブジェクトになっている場合、それぞれの窓ガラスにオブジェクトを分割して、割れたガラスオブジェクトを用意した方が良いと思います。
(全部一つになっていると、前方衝突しただけで、すべての窓ガラスが割れてしまう・・・)

各箇所に割り当てるエンプティの命名規則はこのようになっています。

それぞれの窓の近く(上の図だと赤井印が点いているあたり)に新規エンプティを作成し、回転X=90、Y=0、Z=180を設定し、命名規則に基づいてエンプティの名前を付けます。
そして、そのエンプティの下に、割れた窓ガラスのオブジェクトを入れます。スープラの例だとこうなります。

センター、前は1つずつ、左、右、後ろは2つずつエンプティを作成しています。
同じ場所に2つ目のエンプティを作成するときは、命名規則の最後の数字が1ずつ増えていきます。
左の1つ目が「DAMAGE_GLASS_LEFT_1」なので、左の2つめは「DAMAGE_GLASS_LEFT_2」となります。

blenderでの各種作業が終わったら、いつものようにfbxでエクスポートして、ksEditorで読み込みます。

まず、割れたガラスオブジェクト用に作成したマテリアル(スープラの例ではglassBroken)のパラメータ設定をします。
各種パラメータの値はマニュアルに合わせてみました。

txDiffuseにDAMAGE_GLASS_color.ddsを、txNormalにDAMAGE_GLASS.ddsを設定します。

続いて、割れたガラスのオブジェクトの設定を変更します。
それぞれの割れたガラスのオブジェクトを選択し、IsTransparentをTrueに変更するのと、Priorityを-2に設定します。

そして、設定し終わったら、右にあるrecorderボタンをクリックします。

すると、ksEditorの右の方にあるアイコンで、割れたガラスの設定がされているかどうかを確認できるようになります。

これが割れたガラスオブジェクトが非表示の状態。

〇で囲ったアイコンをクリックするとこうなります。

割れたガラスの様子が表示されるのではなく、縞々のメッシュ状で表示されます。

あとは、Save Persistenceでパラメータ値を保存し、kn5ファイルを作成します。
そして、できたkn5ファイルをcar modフォルダに入れて、ゲームスタート!
あ、ゲームを開始する際、「機械的損傷」を100%にするのをお忘れなく。(0%のままだと、永遠にガラスは割れません。)

ゲームスタートしたら、適当に壁やフェンスに車をぶつけてみましょう。(笑)
するとこんな感じで再現されます。


ちなみに、車載やドライバー視点でも、衝突するとガラスが割れたような表現になります。

普段ゲームをするときは、車のダメージをオフにして走ることが多いと思いますので、この設定やノウハウがどこまで役立つのか?はギモンですが、とりあえず使い方は以上になります~。

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