Fallout箱庭DIY

「箱庭DIY」Fallout分室

【Fallout4】景観オブジェクトの変更&削除と、precombined meshとの関係

スポンサーリンク


メッシュとテクスチャ

微妙に邪魔な景観オブジェクトを削除したい!

 

ってこと、ありますよね。 バニラの木が邪魔で居住地建設に支障でたり、MODの競合で変な建物沸いちゃったり等。

Workshopで壊せるなら楽ですけど、出来ないなら何か別の手が必要です。まずこれを試します。

次に少し話が飛びますが、

景観のリモデル(リメッシュ)MODを入れても、一部しか変更されない

 

って経験無いです?樹木のメッシュ差替えた筈なのに、大部分は何故か変化無し、みたいな(多分Descriptionに対策書いてあると思いますけども)。

 

この2つ、微妙に話が繋がってるんですよね。景観メッシュの取り扱いが、Skyrimと大きく異なることに起因してます。その辺りを、ちょっくら見ていくことにします。

邪魔な木の削除

Red Rocketの隅っこ。だいぶ昔にコンクリ兵舎を建てたのですが・・・ある日気付いたら、こんな有様に(汗)

建物を突き破った木

  • 近くの木ギリギリに建てた
  • 樹木のリモデルMODは建築前に入れた

という状態だったのですが、何らかの要因でこれが壁を突き破ったようです(原因は後ほど)。

残念ながら居住地外なので、Workshopでは撤去できません。困りましたぬ。

 

邪魔な木のIDを捜索

とりあえず、Skyrimブログでも書いたネタと同じ方法で。パッチespを作ってこの木を消すことに。Better Console超便利。

木のIDチェック

問題の木のIDチェック。ID2つ有りますね。

上のID(RefID)は、セル配置された”Maple Tree”のID。下のID(BaseID)は、”Maple Tree”というオブジェクトの設定情報のID。

セル上のMaple Treeを消したいので、用があるのはRefIDの方。これを無効化します。

よく解らなかったら、こちらをどうぞ。Skyrimと全く同じです。

skmod.hatenablog.com

 

邪魔な木をespで無効化

RefID:0002C6D5のFlagsに、Initially Disabledを追加。下の2C6D6も邪魔だったので、同様に。これで無効化(地中深くに移動)となります。

espで邪魔な木を無効化

 

※(注意)コンソールコマンド「MarkForDelete」で削除してしまうと、セーブデータ依存で二度と元に戻せない為、ゲーム内で生成されたオブジェクト(FFxxxxxx)以外には使わない方がいいです。

 

綺麗に無くなりました!

木の無くなったコンクリ兵舎

パッチのレコードを削除すれば、いつでも元に戻せるので安心です。

めでたしめでたし・・・

・・・・・・

 

・・・実はこれ、おかしいんです

SkyrimならこれでOKです。でもFallout4の景観メッシュは、基本的にprecombined meshで括られてる為、大半はこんな手順で削除できない筈なんですよね。

※bUseCombinedObjects=0 設定してると、普通にこの削除が可能です。マシンパワーに相当自信ある人でないと、やってないと思いますが・・・

 

以下、ひとまず木の話は置いておきます。

 

Precombined meshとは?

僕も詳細まで把握してる訳ではないので、話半分程度でお願いします。

 

Skyrimでは、必要なreference(RefIDの振られたオブジェクト)を1個づつメモリにロードすることで、セルを構築してると思います。地形、木、岩等、個々のメッシュを読み込み、座標を計算、配置することでセルが完成するイメージかと。

一方のFallout4では、必要なreferenceを予め配置、合体させたメッシュファイル(precombined mesh)を作り置きして、これを読み込むだけでセルを完成させてしまおう、といった手法だと思います。

LOD(遠景モデル)のノリで、近景も予め作ってしまおう的な発想?。配置数の割には、ファイルサイズが小さいように見えます(固定だし、座標関係とか削れそう)。メッシュファイル1個に多くが集約される為、細かいファイルを多数読み込むより負荷も軽そうです。

Boston FPS Fix - aka BostonDT PreVis-PreCombineの評判からも、非常に効果的な手段なんだと思います。

同様にPrevisは、occlusion planeの事前計算版みたいな感じ?見えない所を効果的に描画しないことで、負荷を軽くしてるんでしょうか。

 

Minuteman銅像のIDチェック

僕もわからない事だらけなんで、具体的に見ていきます。

Sanctuary前の、Minuteman銅像。さっきの木と同様にIDを調べようとしても・・・表示されません

銅像のID取得失敗

これは、銅像のメッシュが単体でセル配置されておらず、precombined meshとして他と結合している為、だと思います。

 

Precombinationを無効化したら?

試しにprecombinationを解除したら、どうなりますかね?

Falout4.iniの[General]に(将軍だけにww・・・すいません)、

 

bUseCombinedObjects=0

 

を追加。precombinationを無効化して、Skyrim同様にreference1個づつ読み込んでのセル構築に切り替えます。

precombination解除で銅像のID取得可

IDが取れるようになりました。銅像メッシュが単体で配置されたようです。fpsめっちゃ落ちると思います

 

ひと括りに結合された景観メッシュ

Minuteman銅像のRefIDが、000317A5と判明しました。そこでFO4Editで、この周辺のセルをチェック。

サンクチュアリ周辺のprecombined mesh

266個のreferenceが、22個のcombined mesh(precombined mesh)に合体しているようです。

 

Minuteman銅像も、他の多数のreferenceと一緒に合体してます。

precombined meshに合体してるminuteman銅像

 

メッシュファイルを差替えたら?

もひとつ実験。ここでMinuteman銅像のメッシュを、台座だけの物に差替えたら・・・どうなるでしょう?

minuteman銅像メッシュを台座のみに

 

変わらないですね。precombined meshが使われてる為、単体のメッシュファイルを差替えても反映されません

単体メッシュファイルは適用されず

Commonwealth Conifers ReduxのようなMODで樹木のメッシュファイルを差替えても、そのままでは大半が反映されない理由がここにあります。precombined meshを読んでる為、差替えたメッシュファイルがシカトされてる訳ですね。precombined meshを使っていない樹木(居住地周辺等)には、反映されてます。

 

差替えたメッシュファイルを反映させるには?

bUseCombinedObjects=0設定にすれば、前述の通りprecombined meshが無効化されるので、この通り台座だけに。

precombined mesh無効化で銅像meshが適用

ただ、ini設定で全部解除してしまうのは・・・よっぽどマシンパワーに自信ない限り、ちょっと厳しいですね。部分的に解除できればいいのですけども(CKでprecombined meshを作り直すという手も)。

 

・・・部分的解除。

なんか冒頭を思い出しません?

あれです、木の削除。どうしてあの木は、precombined meshじゃなかったんでしょうね?

そもそも、

  • コンクリ兵舎建設時には、木が貫通してなかった
  • Commonwealth Conifers Reduxを入れたのは、建設前

という事実があります。つまりこれ、Precombinationが何らかの要因で解除されてしまった為、リモデル対象になって壁を貫通した、という可能性が高いです。

 

Precombinationが無効化される条件

条件によっては、bUseCombinedObjects=0でなくとも、部分的にprecombinationが無効化されます

RedRocketをチェック。634個のreferenceが、41個のprecombined meshに合体してます。

RedRocket周辺のprecombined mesh

 

冒頭に削除した木も、precombined meshになってます。本来なら、あんな削除はできない筈。

冒頭で削除した樹木のprecombined mesh

 

色々調べてると・・・僕の実験用espに、覚えの無い変更を発見。RedRocketのreferenceを上書きしてますね。しかも何も変更してない、完全に只のdirty edit

謎のdirty edit

 

モロですね。例の木と同じprecombined meshを使ってます。

precombined meshを破壊するdirty edit

 

最初に作ったInitialy Disabledのeditを削除。木が貫通する状態に戻しました。

コンクリ兵舎の木を元に戻す

 

この状態で、 発見したdirty editを削除すると・・・バニラのメッシュに戻り、貫通が直りました。precombined meshが復活したようです。

こっちで直すのが正解。

dirty editの削除でprecombined mesh復活

つまり、プラグインでreferenceを上書きすると、precombinationが自動的に無効化される、ということですね。そうでないとセル変更がかなり大変になってしまうので、救済措置といった所でしょうか。

注意点としては、今回のように、

dirty editの影響で、無駄にprecombinationが無効化される可能性がある

ということですね。

CKでセルを弄ると、知らぬ間にdirty editが発生するので(仕様上仕方ない)、FO4Editでのクリーニングを忘れずにしたい所です。

 

Precombined meshの適用対象

そんな訳で完全に静的(static)なオブジェクトとして結合される為、ドアやコンテナといったアクティベート対象(椅子とか変形しない物は平気だったり?)、Havokでぶっ飛ぶようなオブジェクト、Workshopで移動、解体可能なオブジェクト等には適用されないようです。

 

まとめ

  • Fallout4の景観メッシュは、基本的に複数が事前に合体してる(precombined mesh)
  • precombined meshを使った景観は、オブジェクト単体をリモデルしても反映されない
  • precombined mesh未使用なら、オブジェクト単体のリモデルが反映される
  • プラグインでセルのreferenceを上書きすると、precombined meshが解除される
  • Workshop対象やコンテナ等、静的でないオブジェクトはprecombination対象外
  • 景観オブジェクト単体の削除は、Initialy Disabledのパッチを作る

 

こんな所でしょうか。以上、お終いです!

 

Precombined Visibility(Previs)のお話はこちら。

f4mod.hatenablog.com

 

Copyright © 2015 Fallout Hakoniwa DIY All rights reserved .

S.kutsumiya@gmail.com