3Dmigoto學(xué)習(xí)筆記(5) dump全部?jī)?nèi)容
老樣子,繼續(xù)使用kena Bridge of Spirits來進(jìn)行筆記記錄,其它dx11游戲也是同樣的原理。

在上一節(jié)中,我接觸到了游戲內(nèi)貼圖資源的替換,我使用一個(gè)紅色的貼圖替換了模型的材質(zhì)資源,改變了游戲角色的衣服整體顏色:

現(xiàn)在我想把角色的上衣部分改成紅色,而其它地方顏色不變,這時(shí)候就需要用到dump了。
第一步:開啟dump配置
在第二節(jié)的筆記中,我已經(jīng)配置了dump的快捷鍵為F8:

現(xiàn)在我需要配置一下dump都導(dǎo)出哪些內(nèi)容。

這一行analyse_option = 就是配置導(dǎo)出內(nèi)容的地方,可以看到它默認(rèn)處于關(guān)閉狀態(tài)。
我解開它的注釋,并將它的內(nèi)容改為:
analyse_options =deferred_ctx_accurate dump_rt dump_tex dump_cb dump_vb dump_ib buf txt
這是我常用的配置,這里設(shè)置了導(dǎo)出render_target,texture_2D資源, constant buffer, vertex buffer ,index buffer的內(nèi)容,導(dǎo)出的格式為buf和txt。
我設(shè)置好之后,保存并返回游戲,按F10重新加載d3dx.ini:

第二步:去除我之前打上的顏色替換mod
打開我的Mods文件夾,將上一節(jié)中的主角_衣服_變色文件夾重命名為DISABLED 主角_衣服_變色。

這里DISABLED用法的原理是3dmigoto會(huì)遞歸地掃描每個(gè)文件和文件夾,如果文件或文件夾的名稱以DISABLED開頭,則會(huì)跳過這個(gè)文件或文件夾的內(nèi)容,所以我重命名后,相當(dāng)于關(guān)閉了這個(gè)MOD。
進(jìn)入游戲內(nèi)按F10刷新,衣服變回了正常的顏色。

第三步:進(jìn)行dump
所謂的dump,其實(shí)就是把游戲內(nèi)當(dāng)前場(chǎng)景下,加載到GPU執(zhí)行的每一個(gè)資源,全部以頂點(diǎn)信息的格式導(dǎo)出,其中貼圖UV類資源可以導(dǎo)出為.dds類型或.png類型,其它資源可以導(dǎo)出為.buf類型或.txt類型。
在上一步中,我配置的是導(dǎo)出當(dāng)前場(chǎng)景下的全部資源,所以導(dǎo)出的文件會(huì)非常多且總量加起來非常大,少的話有2-5個(gè)G,多的話20-50個(gè)G,且導(dǎo)出的速度瓶頸取決于我的硬盤寫入速度,這里如果我使用的是機(jī)械硬盤,則這節(jié)筆記內(nèi)容不適用,進(jìn)入下一節(jié)筆記,在下一節(jié)筆記中我會(huì)記錄如何只導(dǎo)出我需要的部分資源。
如果我使用的是機(jī)械硬盤,則導(dǎo)出時(shí)花費(fèi)的時(shí)間要比固態(tài)硬盤久的多,所以確保我擁有固態(tài)硬盤,再繼續(xù)后面的操作。
我返回到游戲界面,按下小鍵盤的0開啟Hunting:

接下來我按下F8來導(dǎo)出當(dāng)前場(chǎng)景下的所有模型和資源,按下后游戲會(huì)卡頓很久,不用擔(dān)心,這是正?,F(xiàn)象,建議找一個(gè)游戲內(nèi)場(chǎng)景比較簡(jiǎn)單的地方導(dǎo)出,場(chǎng)景越復(fù)雜,導(dǎo)出的資源越多,占用空間越大,消耗時(shí)間越久。
當(dāng)然,如果游戲直接卡死了,那就去下一節(jié)筆記中尋找只導(dǎo)出部分資源的方法。
花費(fèi)了大概1分鐘的時(shí)間,導(dǎo)出了8個(gè)多G的數(shù)據(jù)。

第四步:查找衣服所用的PS地址
在之前的教程中,我已經(jīng)學(xué)會(huì)了hunting的使用,所以我可以自己用Hunting找一下對(duì)應(yīng)的PS地址。

這里我找到的地址是:a1422ca63e56d2d2
打開我dump出來的文件夾:

搜索這個(gè)PS地址,點(diǎn)擊查看,大圖標(biāo)

隨便一找就找到了對(duì)應(yīng)的貼圖:

可以看到貼圖的名稱含有ps-t3,我上一節(jié)中替換的也是ps-t3,所以在后續(xù)的資源替換中,可以使用dump的方式,來快速定位某個(gè)hash地址需要替換的層級(jí),比如這里快速定位到它是ps-t3層級(jí)。
這里要說明一下,dump出來的資源有很多是重復(fù)的,比如這里一個(gè)貼圖就出現(xiàn)了兩次,我只要選用其中任意一個(gè)就行。
第五步:創(chuàng)建mod配置文件
首先我在Mods文件夾下面創(chuàng)建一個(gè)文件夾,把貼圖復(fù)制過來,開始制作mod。

接下來創(chuàng)建一個(gè)配置文件:主角_衣服_部分變色.ini

將貼圖文件改名為1.dds,方便使用,然后在配置文件中配置以下內(nèi)容:

第六步:修改dds貼圖
我使用paint.net打開dds貼圖,并修改衣服對(duì)應(yīng)部位的顏色為紅色,這一步通常使用著色器工具:

一頓操作之后,衣服全部涂成紅色了:

這里要注意,按Ctrl + S保存后,要選擇BC7 (sRGB, DX11+),其它選項(xiàng)可能會(huì)導(dǎo)致顏色顯示不正確。
第七步:進(jìn)入游戲查看效果
返回到游戲,按F10重新加載:

可以看到,人物的衣服部分顏色變成了紅色。
也可以使用高超的PS技術(shù),給人物衣服繪制各種圖案,制作個(gè)性mod。
大功告成!
在本節(jié)筆記中記錄了如何替換人物細(xì)節(jié)貼圖的顏色,而不是整體全部替換。
在這一節(jié)內(nèi)容中,我配置的dump是導(dǎo)出當(dāng)前場(chǎng)景下所有物體,對(duì)于機(jī)器配置較低的小伙伴不是很友好,而且這種方式進(jìn)行導(dǎo)出后,我實(shí)際上用到的只有一張圖片,非常浪費(fèi)資源,為了解決這個(gè)問題,我將在下一節(jié)中配置部分導(dǎo)出。
比如只導(dǎo)出角色衣服相關(guān)的資源,這樣可以大大減少導(dǎo)出所需的時(shí)間,也能大大減少磁盤所需的空間。