アセットコルサの車の見た目を変える方法

「アセットコルサの車にGTウイングを足したい」「普通のSクラスを使いたいがS63AMGしか見つからなかった。せめてS63のバッジだけ削除して使いたい」「アンパンマン号みたいな魔改造車を作りたい」という場合に有用なのが3Dモデルの編集だ。

ちなみに今回の作業内容、3Dモデリングの知識が必要になるため初心者向きではない。

高度なことをしないならば、Blenderの入門本を一通り実践した程度でも充分だ。とりあえずやっていこう。

まずクルマのモデルを用意する

なんでもいいのでまず車種のモデルを用意する。

私の場合はS63 AMGである。

展開してみると以下のようになる。

まずネットで紹介されている方法でcontent managerに読み込む必要があるようだ。

「kn5」という拡張子がモデル本体だ。

この手の3Dモデルにおいては「fbx」という拡張子が定番だが、どうやらkn5はアセコル専用の3Dモデル形式らしい。

kn5という拡張子をzipファイルのように展開すると、展開されたファイル達の中にクルマ本体の3dモデルであるfbxが入っている。そのfbxを編集して見た目を書き換えるというわけ。

また、ダウンロードしてきたデータを移動したら、移動先を覚えておこう。

「C:\Program Files (x86)\Steam\steamapps\common\assettocorsa\content\cars\mercedes_s63amg」

みたいな具合に入っているはずだ。たぶん後で必要になる。

そもそもちゃんと編集前の車MODが機能しているか確認する

これはやっておいたほうがいいだろう。特に車の出所や完成度が不明な場合。

私の場合は適当に走ったせいで大事故を起こした。

脳みそが機能してない気がするが、「まぁただの動作テストだし」と気にせず突き進む。

モデルビューワを開いてみる

アセットコルサにわかなので名称を知らないが、右下の車をくるくるするマークをクリックする。

するとモデルビューワーのようなものが開くので、そこで編集したいオブジェクトを確認してみよう。

このビューワーでは何もできない前提で進む。

content managerの開発者モードをONにする

どうやら開発者モードが必要になるらしい。

contents mangerの右上に超小さい字で「SETTINGS」と書いてあるはずだ。

そこを開くとこういう画面になるので、左端からまずGeneralをクリック。

開発者モードの項目なんか見当たらないが、どうやら右上のApp versionの右側の数字をクリックしまくると良いらしい。 

は?

言われた通りやってみたら、開発者モードをONにするか聞かれた。

たぶんここで、おそらくコンテンツマネジャーを閉じて開き直す必要がある。

そうすると左端にDEVという項目が出て来るはず。

開発者モードを使ってKN5をfbxにエキスポートする

一旦メニューに戻り、車の選択の部分からshowroomを開く。

さっきのモデルビューワーはshowroomのことだったらしい。

開発者モードでこのshowroomを開くと、追加で開く縦長のウィンドウに「Unpack LOD KN5」というボタンが出て来る。

私の場合、そのボタンを押すとエクスプローラーに保存先フォルダが直接開いた。

よく見ると3Dモデリング、ゲーム制作者にとってはお馴染みのfbxが見える。

Blenderでfbxファイルを編集

インポート

Blenderを開く。

先に余計なオブジェクトを全消ししておこう。

fbxをドラッグアンドドロップすると以下のようなメニューが出る。

何も触らずにインポートして構わない。

ここから先はBlender作業だ。私は数年ぶりなのだが、ちょっと頂点というかエンブレム消すで済むはず…

消したいオブジェクトを消す

消したいオブジェクト部分をクリックした状態なら、Editモードに移行できるはずだ。

※Fileの中のSave asから保存ができるので、忘れて後悔する前にやっておこう。

消したい部分を選択して.,,

削除!

消すのはVerticesかEdgesのどっちがいいんだろうね…

立体エンブレムだからなのか一回ではぜんぶ消えないので、賢いやり方じゃなさそうだが繰り返し選択しては消していく。

とりあえず作業終わり!

本当は「S550」と数字を足すべきなのだが、面倒くさそうなのでスキップする。

GTウイングなどを足す,魔改造車を作る

当然ながらゲームに入れるMODの3Dファイルそのものをイジっているので、ここから工夫すれば車にGTウイングをつけたり、アンパンマン号みたいなおふざけ魔改造車も作ることができる。

ここでは紹介しないが、もしかしたら自分も世間に無い車種を作る必要にせまられて何かやるかも・・・?

改造が終わったモデルをエキスポート

バックアップとしてフツーにBlenderモデルを保存しておく

書き出し前にいまいちど保存を掛けておこう。

fbxとしてエキスポート

最終保存が終わったらいよいよexportである。

fbx書き出し画面に来たら、以下の設定で書き出す。

  • Selected Objects:OFF ← 車全体を書き出すのでこのまま
  • Object Types:Empty / Mesh はON。ほかも元モデルの階層を壊さないため、基本そのままでOK
  • Scale:1.00
  • Apply Scalings:All Local
  • Forward:-Z Forward
  • Up:Y Up
  • Apply Unit:ON
  • Use Space Transform:ON
  • Add Leaf Bones:OFF(Armature欄にある場合)

私の場合は特に触る必要が無かったが、一番注意が必要そうなのは「Forward」だろうか?

「なぜか90度右を向いてしまうッ!」というとき、大抵どっちの角度がフロントかの設定でやらかしている。

出力できたfbxをアセットコルサに適応する(ksEditor編)

ksEditorを起動する

「C:\Program Files (x86)\Steam\steamapps\common\assettocorsa\sdk\editor」

という場所に、ksEditor.exeがあるはずだ。それを開く。

もしかしたら管理者権限で実行しないと開いてくれないかも。

ksEditorにfbxを読み込む

ここまで来れた人なら簡単にできるはず。

左上のFileからopen fbx.

真っ黒い車が読み込まれた。

真っ暗闇なのはテクスチャやらマテリアルの適用がされていないかららしい。

ここで見る必要があるのがunpack後の車のフォルダである。

このunpacked-s63-amgのフォルダはコピーして適当なところにバックアップしておこう。

s63amg.fbxの名前を適当に変えた後に、さっき出力した編集後の車のfbxを持ってくる。

そして編集後のfbxの名前を、元からあった車の名前にしてしまう。

これで成り代わりが完了したわけである。

そしたらエディタをリスタート。いちいちエディタを閉じなくてもFile内にメニューがある。

もう一度、ksEditorで成り代わり後のfbxをひらく。

探すのが面倒臭ければ、ディレクトリ名をコピーして上側に貼り付けられることを思い出そう。

上手くいけばマテリアルだかテクスチャが読み込まれ、カラフルな姿が見られるはずである。

ksEditorのカメラの動かし方

どうしようもなく使いづらいksEditorだが、基本的にはキーボードでカメラを動かす。

まず左クリックをホールドしながらマウスぐるんぐるんでカメラがその場で回転。

キーボードの上下左右で前後ろ右左に動く。

コントロールを押せば高速移動になる。

PageUpとPageDownで上昇下降。

私のASUSのキーボードには無かったが、Fnキーを押しながら矢印の上下を押すと、それがpageUp pageDownの代わりとして機能するらしい。

問題なさそうだ。次に進もう。

kn5で完成系のクルマデータをエキスポートする

ここまでくれば後はkn5のエキスポートだ。いよいよ最終局面。

まず編集元のkn5はバックアップしておこう。

fbxと同じ場所に避難させておけばいいと思う。

ちなみに編集元のkn5であるs63amg.kn5はまだ削除する必要はない。

さぁいよいよ Save KN5していこう。

save kn5から、一番上のCarを選択。

元のkn5と同じ位置にs63amg_edited.kn5みたいな名前で保存する。

エラーログにしか見えないお知らせウィンドウが出るが、これは正常な処理完了を知らせてくれるもの。

こうなっていれば成功。

出力できたfbxをアセットコルサに適応する(アセットコルサ編)

いよいよ適合テスト。

モデル名を書き換える

編集前のkn5は念のため s63amg_original に名前を変えておいて…

編集後のkn5の名前を正式な名前に書き換える。

content managerで車を開いて確認

コンテンツマネジャーを開き、該当の車を選択。

最初にやったようにモデルビューワーを開こう。

ちゃんと変更後のモデルになっていれば成功。

試験走行

これにて成功! …となるはずが失敗してしまった。

さっき分離しておいた複製元、そちらに戻すとまた問題なかった模様。なぜだ…

車が透明になる場合の対処法

車が透明になるようなトラブルは、blender→fbx書き出しの際の設定ミスである。

何回か試行錯誤しながら最適な設定を見つける。

たとえばapply scalingsをfbx units scaleに変更。

もう一個変える。スクショを撮り忘れたが

Add Leaf Bones:現在:ON→ OFF

と言った具合に変える。下の方にあるので、ちゃんと矢印をクリックして開くこと。

おわったらksEditorでfbxを読み込む。

確認したらkn5へ入れて適当に戻す。

直った。

しかしライトがカバーしか表示されていない

ーーー

ここから先はchatGPTと対話しながら進めた結果、解決してしまった。

その概要もchatGPTにまとめさせたので貼り付けておく。

長すぎるので全文をAIに読ませるといい。

ーーーーー

以下の文章は、Assetto Corsa用の「Mercedes-Benz S63 AMG 2014(W222)」MODを編集し、リアの「S63」バッジを削除した際に発生したトラブルと、その解決までの手順をまとめたものである。

単に「バッジを消す方法」だけではなく、以下の内容まで含めている。

  • KN5とは何か
  • Content ManagerからKN5をFBXへ展開する方法
  • Blenderで編集するときに維持すべき構造
  • BlenderからFBXを書き出す設定
  • ksEditorでKN5へ戻す方法
  • 車体が消えてタイヤとドライバーだけになる問題
  • ksEditorで車が真っ黒になる問題
  • ヘッドライト/テールランプ内部だけ消える問題
  • 透明マテリアルのDepthMode問題
  • .FBX.iniを使ったマテリアル調査
  • トラブル時にどう原因を切り分けるか

特に後半の「ライト内部だけ消える問題」は、Blender上では正常なのにAssetto Corsaへ持っていくと壊れるため、かなり原因を見つけにくかった。

この記事をAIに読み込ませて相談する場合にも、何をやった結果どこで壊れ、最終的に何を変更して直ったのか分かるように、できるだけ具体的に残しておく。


最初に結論:今回最終的に起きていた問題

最終的な最大の問題は、Blenderでメッシュが消えたことでも、テクスチャが消えたことでもなかった。

透明なライトカバーのDepthModeが「eDepthNormal」になっていたことにより、その奥にあるライト内部の部品が正しく描画されなくなっていた。

ksEditorで透明マテリアルについて、以下のように変更した。

DepthMode
eDepthNormal
↓
eNoZWrite

すると、その場でヘッドライト内部が復活した。

同様にテールランプの透明系マテリアルにも「eNoZWrite」を設定すると、内部が復活した。

今回実際に変更した透明系マテリアルは主に以下である。

clearglass
redglass
_test2rear_bamper_glas

一方で、以下のような不透明なライト内部部品については「eDepthNormal」のまま触らなかった。

chrome
black
s63_lights_rear_red
Material #6658

ここが今回の最重要ポイントである。


1. そもそもの目的

使用したのはAssetto Corsa用の「Mercedes-Benz S63 AMG 2014 / W222前期型」の車MODである。

ただし、自分が再現したかった車両はAMG S63ではなく通常のW222型Sクラスだった。

そこで、外観上特に目立つリアの「S63」バッジを消したかった。

Content ManagerのCM ShowroomでS63バッジをクリックして調べてみると、バッジだけが独立したオブジェクトではなかった。

MAIN_BODY_SUB1

という比較的大きなメッシュの一部になっていた。

つまり、単純にS63バッジだけを非表示にすることはできず、他のクローム部品などと同じメッシュに含まれていた。

そのため、3DモデルそのものをBlenderで編集する必要があった。


2. KN5とは何なのか

Assetto Corsaの車MODフォルダには、以下のようなファイルが存在していた。

s63amg.kn5

KN5は、簡単に言えばAssetto Corsaがゲーム内で使用する3Dモデル形式である。

一般的な3D編集形式であるFBXとは用途が異なる。

Blenderなどで編集
        ↓
       FBX
        ↓
Assetto CorsaのksEditor
        ↓
       KN5
        ↓
Assetto Corsaで使用

KN5をそのままBlenderへ読み込んで普通に編集するのではなく、一度FBXとして展開する必要がある。


3. 車MODの場所

通常、車MODはAssetto Corsaの以下に入る。

Steam\steamapps\common\assettocorsa\content\cars\

今回の場合は例えば、以下のような場所である。

C:\Program Files (x86)\Steam\steamapps\common\
assettocorsa\content\cars\mercedes_s63amg\

フォルダ内には、以下のようなファイルやフォルダが存在する。

s63amg.kn5
data
skins
texture
ui
animations
sfx
...

4. 最初に必ず元KN5をバックアップする

これはかなり重要である。

編集前に、

s63amg.kn5

をコピーして、

s63amg_original.kn5

などとして保存しておく。

編集失敗時にこれがないと、MODそのものを再ダウンロードすることになる。

今回も途中で、車体が完全に透明になり、タイヤとドライバーだけが表示される状態になったため、バックアップが非常に役に立った。


5. Content ManagerのDeveloper Mode

KN5をFBXへ展開するため、Content ManagerのDeveloper Modeを使用した。

Developer Modeが有効になっている場合、

Settings
→ Content Manager

の左側メニューに、

DEV

が表示される。

今回の環境ではすでにDEVが表示されていたため、Developer Modeは有効になっていた。


6. CM ShowroomからKN5をFBXへ展開する

Content Managerで以下を開く。

CONTENT
→ Cars
→ Mercedes-Benz S63 AMG 2014
→ CM Showroom

Developer Modeが有効になっていると、CM Showroom右側のToolsに以下が表示される。

Unpack LOD KN5

これを実行する。

今回の場合、

unpacked-s63amg

というフォルダが作られ、その中に以下が生成された。

s63amg.FBX
s63amg.fbx.ini
texture\

この3つが後で非常に重要になる。

特に「s63amg.fbx.ini」は捨ててはいけない。

元KN5に設定されていた以下のような情報が保存されている。

  • Shader
  • Alpha Blend
  • Depth
  • Specular
  • Fresnel
  • 使用テクスチャ

7. BlenderへFBXを読み込む

Blenderで、

File
→ Import
→ FBX

から「unpacked-s63amg\s63amg.FBX」を読み込む。

重要なのは、読み込んだ後の階層構造である。

この車には以下のようなAssetto Corsa向けノードが存在していた。

MAIN_BODY
COCKPIT_HR
FRONT_BUMPER
SUSP_LF
SUSP_LR
SUSP_RF
SUSP_RR
WHEEL_LF
WHEEL_LR
WHEEL_RF
WHEEL_RR
LIGHTS
LCOVERS
...

例えば「MAIN_BODY」は以下のような階層になっていた。

MAIN_BODY
 ├─ MAIN_BODY_SUB0
 ├─ MAIN_BODY_SUB1
 ├─ MAIN_BODY_SUB2
 ├─ MAIN_BODY_SUB3
 ...

8. Assetto Corsa車MODでは階層を不用意に変更しない

Assetto Corsaでは以下のようなノード名や親子関係が意味を持つ。

WHEEL_LF
WHEEL_RF
SUSP_LF
STEER_HR
MAIN_BODY

そのため、以下のような操作は避けた方がいい。

  • オブジェクト名を整理する
  • Emptyを削除する
  • 全部Joinする
  • 親子関係を変更する
  • 全オブジェクトへ不用意にCtrl+Aをかける

今回の目的はS63バッジを消すだけなので、必要なポリゴン以外はできるだけ触らないという方針にした。


9. S63バッジをBlenderで削除

「MAIN_BODY_SUB1」の中にS63バッジが入っていた。

オブジェクト全体を削除すると他の部品まで消えるため、

MAIN_BODY_SUB1を選択
→ Edit Mode
→ S63バッジ部分のポリゴンだけ選択
→ Delete

という処理を行った。

ここでは、オブジェクトそのものの名前・位置・親子関係は変更しないことが重要である。


10. BlenderからFBXを書き出す

ここで一度大きく失敗した。

最初のFBX書き出しではAssetto Corsaへ戻した際、車体が消滅し、タイヤとドライバーだけが表示され、正常操作もできない状態になった。

その後、書き出し設定を見直した。

最終的に使用した主要設定は以下である。

Scale               1.00
Apply Scalings      FBX Units Scale
Forward             -Z Forward
Up                  Y Up

Apply Unit          ON
Use Space Transform ON
Apply Transform     OFF

Empty               含める
Mesh                含める

Add Leaf Bones      OFF

特に変更したのは以下である。

Apply Scalings
All Local
↓
FBX Units Scale

そして、

Add Leaf Bones
ON
↓
OFF

Assetto Corsa向けノードの親としてEmptyが大量に存在するため、EmptyをFBXから除外しないことも重要である。


11. ksEditorで車が真っ黒になった問題

Blenderから別名でFBXを書き出し、そのままksEditorへ読み込んだところ、車体がほぼ真っ黒になった。

これはモデルそのものが壊れたわけではなかった。

原因は、元のFBXに対応するマテリアル設定とテクスチャを正しく参照できていなかったことである。


12. .fbx.iniとFBX名を合わせる

Unpack時に生成されたフォルダには以下が存在していた。

s63amg.FBX
s63amg.fbx.ini
texture\

そこで以下のようにした。

  1. 元のs63amg.FBXをバックアップする
  2. Blenderから出した編集後FBXを同じフォルダへコピーする
  3. 編集後FBXを「s63amg.FBX」へ改名する
  4. s63amg.fbx.iniは元のまま残す
  5. textureフォルダもそのまま残す
  6. ksEditorで新しいs63amg.FBXを読み込む

すると、車体色・内外装・テクスチャが完全に復活した。

つまり、このMODでは以下をセットで扱うことが重要だった。

FBX
+
FBX.ini
+
texture

13. ksEditorからKN5を書き出す

FBXを開いた後、以下を選択する。

File
→ Save KN5
→ Car

「Track」ではなく「Car」である。

まずは以下のような別名で保存する。

s63amg_test.kn5

正常なら、

元:
s63amg.kn5
↓
s63amg_original.kn5

編集版:
s63amg_test.kn5
↓
s63amg.kn5

として入れ替える。

元KN5は完全に動作確認が終わるまで削除しない。


14. 最初のKN5では「車体だけ消える」状態になった

最初の編集版KN5をゲームへ入れると、以下のような壊れ方をした。

  • ドライバーはいる
  • 4輪もある
  • 車体は透明
  • 一部の機構だけ残っている
  • 操作もうまく受け付けない

この場合、テクスチャだけの問題ではない。

Blenderで「MAIN_BODY」「WHEEL_LF」「WHEEL_RF」「SUSP_LF」などの階層が残っているか確認した。

階層自体は残っていたため、FBXエクスポート時のTransform、Unit、FBXノード処理を疑い、前述の書き出し設定へ変更した。


15. CM Showroomで車が異常に遠く見えた

新しいKN5をCM Showroomで開くと、車が豆粒のように遠く表示される現象も発生した。

最初はスケールが壊れたと疑った。

しかし実際にAssetto Corsaで走行させてみると、車そのものには問題が発生しなかった。

このケースではCM Showroom側のカメラ、またはバウンディング認識の問題だった可能性がある。

Showroomの見え方だけで最終判断せず、バックアップを残したうえで実ゲームでも確認した方がよい。


16. 次の問題:ヘッドライトが透明になった

車体そのものは正常になったが、次にヘッドライトの中身が消えて、スケスケになったように見える問題が発生した。

テールランプにも似た症状があった。

最初は以下を疑った。

  • テクスチャ消失
  • Blenderでライトメッシュを誤削除
  • Shader破損
  • Alpha設定破損

しかしBlenderで確認すると、ライトのメッシュは全部存在していた。

ここから「モデル形状ではなく、描画設定の問題」と判断した。


17. ライトの構造をBlenderで1個ずつ調べた

この車ではライト関係が大きく以下に分かれていた。

LCOVERS
LIGHTS

簡単に言えば、

LCOVERS
→ ライトの外側カバー、透明レンズなど

LIGHTS
→ ライト内部の反射板、黒いハウジング、発光部分など

である。


18. LCOVERSの対応関係

今回のMODでは以下のようになっていた。

LCOVERS
├─ LCOVERS_SUB0 → clearglass
├─ LCOVERS_SUB1 → redglass
└─ LCOVERS_SUB2 → _test2rear_bamper_glas

3個とも透明系のカバーだった。


19. LIGHTSの対応関係

Blenderで5個すべて調べると、以下のようになっていた。

LIGHTS
├─ LIGHTS_SUB0
│   → s63_lights_rear_red
│
├─ LIGHTS_SUB1
│   → Material #6658
│   → s63_lights_rear_red_light.dds
│
├─ LIGHTS_SUB2
│   → chrome
│
├─ LIGHTS_SUB3
│   → clearglass
│
└─ LIGHTS_SUB4
    → black

役割を整理すると以下のようになる。

SUB0
→ テールランプの赤い内部

SUB1
→ テールランプの発光系内部

SUB2
→ ヘッドライト内部のクローム/反射板

SUB3
→ 透明ガラス系

SUB4
→ ヘッドライト内部の黒いハウジング

20. ksEditorでマテリアルを見る際の注意

ksEditorのUIは少し分かりにくい。

下側のMaterials一覧では、黒文字がマテリアル名、その下の緑文字がDDSテクスチャ名である。

clearglass
 └ glass_clear_d.dds

この場合、

  • clearglass=マテリアル
  • glass_clear_d.dds=テクスチャ

である。

DDSをクリックしてもShader設定画面にはならない。

マテリアル名そのものをクリックすると、Materialタブに以下のような詳細設定が表示される。

DepthMode
Shader
BlendMode
Name

ksAmbient
ksDiffuse
ksSpecular
ksSpecularEXP
ksEmissive
ksAlphaRef
fresnelC
fresnelEXP
...

21. clearglassの設定は一見正常だった

「clearglass」をksEditorで確認すると、以下だった。

Shader
ksPerPixelReflection

BlendMode
eAlphaBlend

DepthMode
eDepthNormal

さらに、

ksAmbient     0.4
ksDiffuse     0.4
ksSpecular    2
ksSpecularEXP 200
ksAlphaRef    0.7
fresnelC      0.2
fresnelEXP    5

なども正常だった。

つまり、Shaderが別物に変わったわけでも、テクスチャが消えたわけでもなかった。


22. chromeも正常だった

「LIGHTS_SUB2」のchromeを調べると以下だった。

Shader
ksPerPixelReflection

BlendMode
eOpaque

DepthMode
eDepthNormal

その他の値も、

ksAmbient      0.05
ksDiffuse      0.05
ksSpecular     0.7
ksSpecularEXP  60
txDiffuse      AC_silver.dds

となっていた。

そのため、chrome自体をいじる必要はなかった。


23. blackも正常だった

「LIGHTS_SUB4」のblackは以下だった。

Shader
ksPerPixel

BlendMode
eOpaque

DepthMode
eDepthNormal

txDiffuse
AC_black.DDS

これも変更しなかった。


24. 本当の原因:透明材のDepthMode

ここで、

  • メッシュは存在する
  • テクスチャも存在する
  • Shaderも正しい
  • 内部材は不透明で正常
  • それなのに透明カバー越しの内部だけ消える

という状況になった。

そこで「clearglass」のDepthModeを疑った。

ksEditorではDepthModeとして以下が選択できた。

eDepthNormal
eNoZWrite
eOff

試しに以下へ変更した。

eDepthNormal
↓
eNoZWrite

するとその瞬間、それまで消えていたヘッドライト内部がパッと復活した。

プロジェクターや内部のクロームパーツなどが正常に見えるようになった。


25. eNoZWriteとは何をしているのか

簡単に言えば、その透明オブジェクト自身は描画するが、Zバッファ、つまり深度へ通常の書き込みを行わないようにする設定である。

透明ガラスが通常の深度を書き込むと、描画順などの関係で、本来ガラス越しに見えるはずの奥のオブジェクトが「隠れている」と判定されることがある。

今回はFBX→ksEditor→KN5という再構築を行ったことで、元モデルと描画順などの条件が変化した可能性がある。

結果、

透明ガラス
DepthMode=eDepthNormal

では内部が消え、

透明ガラス
DepthMode=eNoZWrite

では内部が正常に見えた。


26. テールランプも同じ方法で直った

ヘッドライトが直ったため、テールランプの透明カバー「redglass」についても、

DepthMode
eDepthNormal
↓
eNoZWrite

へ変更した。

すると、消えていたテールランプ内部が一部復活した。

さらに「LCOVERS_SUB2」を調べると、

_test2rear_bamper_glas

という別の透明系マテリアルが使われていた。

設定を見ると、

Shader
ksPerPixel

BlendMode
eAlphaBlend

DepthMode
eDepthNormal

だった。

これについても、

eDepthNormal
↓
eNoZWrite

へ変更した。

すると、このパーツについても正常に表示されるようになった。

最終的にゲームへ読み込んだところ、ヘッドライト、テールランプとも正常になっていた。


27. 今回eNoZWriteへ変更したもの

最終的に重要だったのは、Alpha Blendを使用する透明な外側部品だけをeNoZWriteへするという考え方だった。

今回変更したものは以下である。

clearglass
redglass
_test2rear_bamper_glas

28. 逆に変更しなかったもの

以下はライト内部の不透明材なので、「DepthMode=eDepthNormal」のままにした。

chrome
black
s63_lights_rear_red
Material #6658

特に、

BlendMode=eOpaque

となっているマテリアルを、「ライト関係だから」という理由だけでeNoZWriteに変更するべきではない。

今回のトラブルで重要なのは、透明なカバー側だけを疑うことである。


29. 今回の最終的なモデル構成

LCOVERS
│
├─ SUB0
│   Material = clearglass
│   → Alpha Blend
│   → eNoZWriteへ変更
│
├─ SUB1
│   Material = redglass
│   → Alpha Blend
│   → eNoZWriteへ変更
│
└─ SUB2
    Material = _test2rear_bamper_glas
    → Alpha Blend
    → eNoZWriteへ変更


LIGHTS
│
├─ SUB0
│   Material = s63_lights_rear_red
│   → Opaque
│   → eDepthNormalのまま
│
├─ SUB1
│   Material = Material #6658
│   → Opaque
│   → eDepthNormalのまま
│
├─ SUB2
│   Material = chrome
│   → Opaque
│   → eDepthNormalのまま
│
├─ SUB3
│   Material = clearglass
│   → Alpha Blend
│   → clearglass側でeNoZWrite
│
└─ SUB4
    Material = black
    → Opaque
    → eDepthNormalのまま

この一覧は今回使用したW222 S63 MOD固有の名前であり、他のMODでは名前が異なる。

しかし考え方自体はそのまま利用できる。


30. 他の車MODでも使える診断方法

STEP 1:Blenderでメッシュそのものが存在するか確認

まず対象部分をクリックする。

存在しているなら、削除ミスではない。

STEP 2:そのメッシュのMaterial名を確認

BlenderのMaterial Propertiesを見る。

LIGHTS_SUB3
→ clearglass

のように対応関係を記録する。

STEP 3:ksEditorで同じMaterialを探す

ksEditorのMaterials一覧で、DDSではなくMaterial名そのものをクリックする。

STEP 4:Shader / BlendMode / DepthModeを見る

特に以下の組み合わせを重点的に疑う。

BlendMode=eAlphaBlend
DepthMode=eDepthNormal

STEP 5:透明材ならeNoZWriteを試す

症状が「透明なものの奥だけ消える」なら、

DepthMode
eDepthNormal
↓
eNoZWrite

をテストする。

変更した瞬間に内部が復活すれば原因が確定する。

STEP 6:Opaque材はむやみに変更しない

BlendMode=eOpaque

の内部パーツは基本的にそのままにする。

STEP 7:最後は実ゲームで確認

ksEditorやCM Showroomだけでなく、実際にコースへ出して確認する。


31. 今回やって遠回りになったこと

transparent ON/OFFだけを触った

ksEditor下部には、

transparent ON
transparent OFF

というボタンがある。

最初はこれが問題かと思ったが、今回の本質はそこではなかった。

必要だったのはMaterial詳細画面のDepthModeだった。

DDSテクスチャとMaterialを混同した

clearglass
 └ glass_clear_d.dds

という構造の場合、「glass_clear_d.dds」を選んでもShader編集画面にはならない。

選ぶのは「clearglass」の方である。

ライト内部が消えているのにLCOVERS自体が消えたと思った

実際には外側レンズは存在しており、その奥のLIGHTSが見えなくなっていた。

透明材の描画問題は「ガラスそのものが透明すぎる」と見えるため、どちらが消えているのか判断しにくい。

すべてのライトマテリアルを疑った

chromeやblackも調べたが、これらは正常だった。

最終的には、

透明材
+
eDepthNormal

の組み合わせが原因だった。


32. FBX編集で絶対に残しておきたいファイル

作業中は以下を消さない方がいい。

元のs63amg.kn5

元のs63amg.FBX

s63amg.fbx.ini

textureフォルダ

Blenderの.blendファイル

編集後FBX

テスト用KN5

例えば、

s63amg_original.kn5
s63amg_edit.blend
s63amg_edited.fbx
s63amg_test.kn5

のように残しておけば、どの工程で壊れたか戻って確認できる。


33. 問題の切り分け方

車全体が真っ黒

疑うもの:

.fbx.ini
textureフォルダ
FBXファイル名
Material設定

今回の解決:

編集済FBXを元と同じs63amg.FBXという名前にする
+
元のs63amg.fbx.ini
+
元のtextureフォルダ

を同じ場所に置いてksEditorで読み直す。

タイヤとドライバーだけ残って車体が消える

疑うもの:

FBXエクスポート設定
Empty
ノード階層
Transform
Unit
MAIN_BODY

今回その後使用した設定:

Scale = 1
Apply Scalings = FBX Units Scale
Forward = -Z
Up = Y
Apply Unit = ON
Use Space Transform = ON
Apply Transform = OFF
Add Leaf Bones = OFF
Emptyを含める
Meshを含める

Blenderには存在するのにライト内部だけ消える

疑うもの:

透明カバーのMaterial
BlendMode
DepthMode
描画順

今回の解決:

eAlphaBlendの透明材について

DepthMode
eDepthNormal
↓
eNoZWrite

34. この作業で一番重要だった考え方

「消えて見える=そのメッシュがなくなった」と決めつけないことである。

3Dゲームでは、以下のどこか1つがおかしくても「消えた」ように見える。

  • メッシュ
  • テクスチャ
  • Material
  • Shader
  • Alpha
  • Depth
  • 描画順
  • ノード階層

今回のヘッドライトも、

Blender
→ メッシュ存在

FBX
→ メッシュ存在

ksEditor
→ メッシュ存在

テクスチャ
→ 存在

Shader
→ 正しい

Opaque内部材
→ 正しい

ところまで確認したため、残ったDepth処理を疑うことができた。

その結果、「eNoZWrite」へ変更した瞬間に直った。


35. 今回の作業を最短ルートでやり直すなら

1.
元KN5をバックアップ

2.
Content Manager
→ CM Showroom
→ Unpack LOD KN5

3.
生成された
FBX
FBX.ini
texture
をセットで保存

4.
BlenderへFBXインポート

5.
必要なポリゴンだけ編集
ノード名・階層は触らない

6.
FBX書き出し

Scale 1
FBX Units Scale
-Z Forward
Y Up
Apply Unit ON
Use Space Transform ON
Apply Transform OFF
Empty/Meshを維持
Add Leaf Bones OFF

7.
編集後FBXを元と同じs63amg.FBXへ改名

8.
元のs63amg.fbx.iniとtextureフォルダの場所へ戻す

9.
ksEditorでFBXを開く

10.
カラー・Materialが復元されていることを確認

11.
透明ライト材を確認

12.
内部が消える透明材のみ

eDepthNormal
↓
eNoZWrite

13.
Save KN5
→ Car

14.
テスト用KN5として保存

15.
元KN5をバックアップ名へ変更

16.
編集KN5を元KN5と同じ名前へ変更

17.
CM Showroom確認

18.
実際にAssetto Corsaを起動して確認

AIへこのトラブルを説明するための要約

Assetto Corsa用のMercedes-Benz S63 AMG 2014(W222)車MODを編集した。

目的はリアのS63バッジ削除。

元モデルはs63amg.kn5。
Content ManagerのDeveloper Mode付きCM Showroomから
「Unpack LOD KN5」を使用し、

s63amg.FBX
s63amg.fbx.ini
texture/

を取得した。

Blenderでs63amg.FBXを読み込んだ。

S63バッジは独立メッシュではなくMAIN_BODY_SUB1の一部だったため、
Edit Modeでバッジ部分のポリゴンのみ削除。
ノード名や親子関係は変更していない。

Assetto Corsaのモデルには
MAIN_BODY、WHEEL_LF、SUSP_LFなどの重要なノードがあるため、
Emptyや階層を破壊しないことが重要。

BlenderからFBXを書き出す際は最終的に、

Scale=1.00
Apply Scalings=FBX Units Scale
Forward=-Z Forward
Up=Y Up
Apply Unit=ON
Use Space Transform=ON
Apply Transform=OFF
Add Leaf Bones=OFF
EmptyとMeshを維持

という設定を使用した。

編集後FBXを別名のままksEditorへ持っていくと
Materialが復元されず車が真っ黒になった。

そこで編集FBXを元と同じs63amg.FBXへ改名し、
同じフォルダに元の

s63amg.fbx.ini
texture/

を残してksEditorで読み込んだところ、
カラーとMaterialが復活した。

ksEditorからSave KN5→CarでKN5化。

その後、
ヘッドライトとテールランプの内部が消える問題が発生。

Blenderではライトのメッシュは正常に存在。

ライト構造は以下。

LCOVERS_SUB0 = clearglass
LCOVERS_SUB1 = redglass
LCOVERS_SUB2 = _test2rear_bamper_glas

LIGHTS_SUB0 = s63_lights_rear_red
LIGHTS_SUB1 = Material #6658
LIGHTS_SUB2 = chrome
LIGHTS_SUB3 = clearglass
LIGHTS_SUB4 = black

chrome、black、s63_lights_rear_red、
Material #6658はeOpaqueなので変更しなかった。

問題だったのは透明系Material。

clearglass:
Shader=ksPerPixelReflection
BlendMode=eAlphaBlend
DepthMode=eDepthNormal

となっていた。

DepthModeを

eDepthNormal → eNoZWrite

へ変更した瞬間、
消えていたヘッドライト内部が復活した。

同様にredglassも
eDepthNormal → eNoZWrite
へ変更するとテールランプ内部が復活。

_test2rear_bamper_glasも
BlendMode=eAlphaBlend
DepthMode=eDepthNormal
だったため、
eNoZWriteへ変更して正常化。

したがって今回のライト消失の直接的な解決策は、

「Alpha Blendの透明ライトカバーがeDepthNormalになっており、
奥のライト内部メッシュをDepth処理で隠していたため、
透明カバーだけDepthMode=eNoZWriteへ変更する」

ことだった。

Opaqueの内部材までeNoZWriteにはしない。

Material調査時は、
Blenderで対象メッシュをクリックしてMaterial名を調べ、
ksEditorのMaterials一覧で同名Materialを選択する。

ksEditorでは黒文字がMaterial名、
その下の緑文字の.ddsはTextureなので混同しない。

Materialタブから
Shader、BlendMode、DepthModeを確認する。

最終的にKN5をゲームへ読み込むと、
ヘッドライト・テールランプとも正常になり、
S63バッジを削除した編集モデルが正常動作した。

まとめ

今回の最終的な教訓は、KN5→FBX→Blender→FBX→KN5の往復では、モデル形状だけでなく「ノード構造」と「MaterialのDepth/Alpha描画」を別々に検証する必要があるということである。

特に「透明パーツは見えるのに、その奥だけ消える」場合は、メッシュ削除やテクスチャ欠落を疑い続けるより、まず透明材のDepthModeを確認するのが有効だった。

今回のケースでは、透明系マテリアルのDepthModeを「eDepthNormal」から「eNoZWrite」へ変更することで、ヘッドライトとテールランプの内部表示が正常に復旧した。

上部へスクロール