微妙に邪魔な景観オブジェクトを削除したい!
ってこと、ありますよね。 バニラの木が邪魔で居住地建設に支障でたり、MODの競合で変な建物沸いちゃったり等。
Workshopで壊せるなら楽ですけど、出来ないなら何か別の手が必要です。まずこれを試します。
次に少し話が飛びますが、
景観のリモデル(リメッシュ)MODを入れても、一部しか変更されない
って経験無いです?樹木のメッシュ差替えた筈なのに、大部分は何故か変化無し、みたいな(多分Descriptionに対策書いてあると思いますけども)。
この2つ、微妙に話が繋がってるんですよね。景観メッシュの取り扱いが、Skyrimと大きく異なることに起因してます。その辺りを、ちょっくら見ていくことにします。
邪魔な木の削除
Red Rocketの隅っこ。だいぶ昔にコンクリ兵舎を建てたのですが・・・ある日気付いたら、こんな有様に(汗)
- 近くの木ギリギリに建てた
- 樹木のリモデルMODは建築前に入れた
という状態だったのですが、何らかの要因でこれが壁を突き破ったようです(原因は後ほど)。
残念ながら居住地外なので、Workshopでは撤去できません。困りましたぬ。
邪魔な木のIDを捜索
とりあえず、Skyrimブログでも書いたネタと同じ方法で。パッチespを作ってこの木を消すことに。Better Console超便利。
問題の木のIDチェック。ID2つ有りますね。
上のID(RefID)は、セル配置された”Maple Tree”のID。下のID(BaseID)は、”Maple Tree”というオブジェクトの設定情報のID。
セル上のMaple Treeを消したいので、用があるのはRefIDの方。これを無効化します。
よく解らなかったら、こちらをどうぞ。Skyrimと全く同じです。
邪魔な木をespで無効化
RefID:0002C6D5
のFlagsに、Initially Disabledを追加。下の2C6D6も邪魔だったので、同様に。これで無効化(地中深くに移動)となります。
※(注意)コンソールコマンド「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を調べようとしても・・・表示されません。
これは、銅像のメッシュが単体でセル配置されておらず、precombined meshとして他と結合している為、だと思います。
Precombinationを無効化したら?
試しにprecombinationを解除したら、どうなりますかね?
Falout4.iniの[General]に(将軍だけにww・・・すいません)、
bUseCombinedObjects=0
を追加。precombinationを無効化して、Skyrim同様にreference1個づつ読み込んでのセル構築に切り替えます。
IDが取れるようになりました。銅像メッシュが単体で配置されたようです。fpsめっちゃ落ちると思います。
ひと括りに結合された景観メッシュ
Minuteman銅像のRefIDが、000317A5
と判明しました。そこでFO4Editで、この周辺のセルをチェック。
266個のreferenceが、22個のcombined mesh(precombined mesh)に合体しているようです。
Minuteman銅像も、他の多数のreferenceと一緒に合体してます。
メッシュファイルを差替えたら?
もひとつ実験。ここでMinuteman銅像のメッシュを、台座だけの物に差替えたら・・・どうなるでしょう?
変わらないですね。precombined meshが使われてる為、単体のメッシュファイルを差替えても反映されません。
Commonwealth Conifers ReduxのようなMODで樹木のメッシュファイルを差替えても、そのままでは大半が反映されない理由がここにあります。precombined meshを読んでる為、差替えたメッシュファイルがシカトされてる訳ですね。precombined meshを使っていない樹木(居住地周辺等)には、反映されてます。
差替えたメッシュファイルを反映させるには?
bUseCombinedObjects=0設定にすれば、前述の通りprecombined meshが無効化されるので、この通り台座だけに。
ただ、ini設定で全部解除してしまうのは・・・よっぽどマシンパワーに自信ない限り、ちょっと厳しいですね。部分的に解除できればいいのですけども(CKでprecombined meshを作り直すという手も)。
・・・部分的解除。
なんか冒頭を思い出しません?
あれです、木の削除。どうしてあの木は、precombined meshじゃなかったんでしょうね?
そもそも、
- コンクリ兵舎建設時には、木が貫通してなかった
- Commonwealth Conifers Reduxを入れたのは、建設前
という事実があります。つまりこれ、Precombinationが何らかの要因で解除されてしまった為、リモデル対象になって壁を貫通した、という可能性が高いです。
Precombinationが無効化される条件
条件によっては、bUseCombinedObjects=0
でなくとも、部分的にprecombinationが無効化されます。
RedRocketをチェック。634個のreferenceが、41個のprecombined meshに合体してます。
冒頭に削除した木も、precombined meshになってます。本来なら、あんな削除はできない筈。
色々調べてると・・・僕の実験用espに、覚えの無い変更を発見。RedRocketのreferenceを上書きしてますね。しかも何も変更してない、完全に只のdirty edit。
モロですね。例の木と同じprecombined meshを使ってます。
最初に作ったInitialy Disabledのeditを削除。木が貫通する状態に戻しました。
この状態で、 発見した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)のお話はこちら。