Bl@ke小課堂:如何將3D模型導(dǎo)入HS2/AI少女工作室

本文PDF版已上傳至網(wǎng)盤,并對部分內(nèi)容進(jìn)行了更新。請以PDF版內(nèi)容為準(zhǔn)。
鏈接:https://pan.baidu.com/s/1gysTQbxKLlyqh-OpUE64gQ?pwd=zvgl?
提取碼:zvgl

撰文:Bl@ke(http://www.blatke.cc)
Honey Select 2(以下簡稱“HS2”)或AI少女(以下簡稱“AIS”)愛好者總是面臨一個尷尬的問題:苦苦查找想要的mods,但就是找不到合適的;明明網(wǎng)上有很多3D模型,獨惜不知如何導(dǎo)入HS2/AIS的工作室(StudioNEO),網(wǎng)絡(luò)上現(xiàn)有的中文教程給予的幫助很有限,外文教程又繁復(fù)龐雜,不知從何入手。本教程在此寫給對StudioNEO已有初步了解的朋友們,幫助他們將網(wǎng)上隨處可下載的3D模型轉(zhuǎn)換成StudioNEO支持的形式,打破橫在他們創(chuàng)意面前的最后一道障礙。

〇、致謝
本文使用的關(guān)鍵插件由Hooh設(shè)計編寫并免費(fèi)發(fā)布,他以一己之力使StudioNEO的mod制作不再繁冗,謹(jǐn)在此致以最高敬意,并祝愿他身體早日康復(fù)。
本人在學(xué)習(xí)和實踐相關(guān)知識時得到了enimaroah、Duckアヒル和Kky-的直接幫助,再次表示感謝。
此外,Pacokie對Hooh插件中存在的一些書寫錯誤作了更正說明,特此一并致謝。

一、需要預(yù)先了解的事宜
本文的操作是圍繞Hooh插件——Hooh’s?Modding?Tool進(jìn)行,該插件是安裝在Unity上的,換言之,我們要通過Unity將3D模型轉(zhuǎn)換為StudioNeo所支持的mod,而這些3D模型必須首先是Unity能夠讀取的格式。
你可以在Sketchfab?(https://sketchfab.com)、CGTrader(https://www.cgtrader.com/)等網(wǎng)站尋找和下載3D模型,這些模型大多為如下格式:
.fbx
.obj
.blend
.glb
.stl
.dae
……
其中,前三種格式可以無障礙導(dǎo)入Unity;其余格式要直接導(dǎo)入Unity則需要安裝額外的插件或腳本,建議先導(dǎo)入到Blender(或其它軟件),由Blender導(dǎo)出.fbx文件,再導(dǎo)入Unity。
?
HS2/AIS工作室StudioNeo支持的mod格式為.zip和.zipmod,通常是.zipmod,但事實上將.zipmod文件的后綴改為.zip,你可以當(dāng)做壓縮包將它解壓,得到如下文件:(1)一個“manifest.xml”文件,記錄mod在StudioNeo中的識別號、名稱、作者等信息;(2)一個abdata文件夾,內(nèi)有三個.csv文件和至少一個.unity3d文件,前者可用Excel或記事本打開,它們記錄了比“manifest.xml”更為詳細(xì)的mod信息;后者是mod文件本體;可能還有若干.png圖片,這是預(yù)覽圖,便于你在StudioNeo的搜索面板中尋找mod。
?
需要重申的是,本教程的操作方法僅針對HS2/AIS?StudioNeo。Honey Select 1的mod制作的方法與之較明顯差異,難以通用。針對HS1,目前可供參考的是這份英文教程:https://mega.nz/#F!VlpAQZ7S!Q4x1zu3OlDSuuS_x-flqbA。

二、準(zhǔn)備活動
(1)Unity 2018.4.11f

HS2/AI游戲是利用Unity 2018.4.11f編寫的,比這個更新的版本所導(dǎo)出的mod可能存在兼容問題,也未必匹配Hooh’s?Modding?Tool插件。因此,請務(wù)必嚴(yán)格確保你使用的版本號是2018.4.11f。
下載地址:https://unity3d.com/get-unity/download/archive
?
(2)Visual Studio

在Unity?安裝時,會默認(rèn)一并安裝Visual Studio,該軟件將便于你編寫上面提到的.xml文件。當(dāng)然,你用記事本同樣可以編輯。
?
(3)Git for Windows

Hooh’s?Modding?Tool插件有一些調(diào)用其它插件的腳本,會涉及到利用它自動更新腳本的情形。
下載地址:https://git-scm.com/download/win
選擇最新版下載即可。
?
(4)Hooh’s?Modding?Tool

本文操作圍繞的核心插件,目前版本為0.7.0,本文以該版本為準(zhǔn)。
下載地址:https://github.com/hooh-hooah/ModdingTool
該插件文件存放于Github網(wǎng)站。打開鏈接后,點擊綠色的“Code”按鈕,在彈出的菜單中點擊“Download ZIP”,就可將該插件包含的全部文件打包到同一個壓縮包下載了。
?

下載后解壓,解壓后的文件夾可任意命名,我們這里暫且將該文件夾稱為“Hooh文件夾”,這個文件夾即Hooh’s?Modding?Tool插件的主體文件(及應(yīng)用樣例)。
理論上你可以將Hooh文件夾置于硬盤空間的任何位置,但必須確保其文件路徑不包含任何英文和數(shù)字之外的字符(如中文),否則插件安裝可能出錯。
?
(5)為Hooh’s?Modding?Tool預(yù)先準(zhǔn)備的文件
如果你在稍后提及的Hooh’s?Modding?Tool插件安裝過程中沒有遇到問題,那么這一項敬請忽略;若遇到安裝問題,請按如下地址分別下載:
l??https://github.com/IL-Modding-Tool/MyBox.git
l??https://github.com/IL-Modding-Tool/Modding-Tool-Unity-Package.git
l??https://github.com/IL-Modding-Tool/Modding-Tool-Examples.git
l??https://github.com/HooahPlugins/UniRx.git
l??https://github.com/yasirkula/UnityRuntimePreviewGenerator.git
下載并分別解壓到單獨文件夾,再一并復(fù)制到Hooh文件夾中。
?
(6)KKManager

這個工具最初是用來給戀活游戲安裝/卸載mod和插件的,也可以用來管理人物卡。鑒于都是Illusion公司的游戲,KKManager也可以拿來為HS2/AIS所用。當(dāng)你做好一個mod時,你可以直接將它拖入游戲的mods文件夾中,StudioNeo啟動時(Sideloader)將自動搜索和加載;但你也可以選擇使用KKManager來安裝mod,特別是當(dāng)你頻繁修改調(diào)整mod時,KKManager將根據(jù)你的mod版本號的新舊來決定是覆蓋掉已安裝的同名mod還是拒絕操作,避免你用一個舊的mod覆蓋更新的mod。此外,你還可以通過KKManager暫時禁用某些已安裝的mod,避免StudioNeo因啟動時加載太多mod而過度延遲。
下載地址:https://www.patreon.com/posts/41869238

三、安裝Hooh’s?Modding?Tool插件
為確保插件安裝順利,還是建議暫時關(guān)閉殺軟、防火墻和VPN,待安裝成功后再重新開啟。
啟動Unity,在它的準(zhǔn)備界面上點擊“Open”,再在彈出的對話框里選中我們剛剛提到的Hooh文件夾,點擊“選擇文件夾”。之后,Unity便會自動加載文件夾內(nèi)的腳本和所需的網(wǎng)絡(luò)資源,并使Hooh文件夾成為Unity的一個新項目(Project)。

安裝完畢后,Unity會自動進(jìn)入操作界面。如果你在界面頂端菜單欄看到“hooh?Tools”選項,則說明安裝成功。請移步下一章。

如果沒有看到"hooh?Tools"選項,說明插件未成功安裝到Unity,可能的原因和解決辦法如下:
(1)軟件版本錯誤或漏裝軟件。Unity版本不是2018.4.11f;未安裝Visual Studio或Git。請檢查并修補(bǔ)。
(2)至少一個軟件安裝路徑或文件路徑存在非英文字符。請改為英文字符。
(3)你的殺軟、防火墻或VPN可能阻礙了插件安裝,請重裝前關(guān)閉。
(4)插件所需調(diào)用的其它插件或文件未能成功導(dǎo)入。在Unity頂部菜單欄點擊“Window”,進(jìn)入“Package Manager”。在彈出窗口的左上角點擊“Unity Registry”,選擇“In Project”。

點擊窗口底部的“+”按鈕,選擇“Add package from disk”。

還記得我們在上一章準(zhǔn)備活動的第5節(jié)里準(zhǔn)備的那些文件夾嗎?在選擇“Add package from disk”后,找到你列表中缺失的插件的相應(yīng)文件夾,在文件夾中找到“package.json”文件,選中并打開。Unity將重新加載和安裝相應(yīng)插件。


完成查漏補(bǔ)缺后,“hooh?Tools”選項將出現(xiàn)在Unity頂部菜單欄。

四、轉(zhuǎn)換你的第一個Mod
插件安裝成功后,本章將講解如何通過Unity的Modding?Tool插件將你已有的3D模型轉(zhuǎn)換成StudioNeo所支持的.zipmod文件。本章分為兩個小節(jié),第一個是將3D模型導(dǎo)入Unity并進(jìn)行基礎(chǔ)性調(diào)整,若對此內(nèi)容比較熟悉,可跳過本小節(jié);第二小節(jié)是通過Modding?Tool插件導(dǎo)出.zipmod文件。
1.?在Unity里導(dǎo)入和調(diào)整3D模型
進(jìn)入Unity。如果你之前沒有退出Unity,那么在當(dāng)前界面繼續(xù)接下來的操作即可;如果你需要重新打開Unity,那么在項目選擇界面中選擇Hooh文件夾即可進(jìn)入這個項目。

Unity 2018.4.11f的默認(rèn)界面如下,之后我們將多次提及這些窗口和視圖:

我們現(xiàn)在要將已有的3D模型導(dǎo)入到Unity。在Unity界面里底部的Project窗口中,選中Assets文件夾,點擊“Create”,再在彈出菜單中選擇“Folder”,即可在Assets文件夾中新建一個文件夾——新建文件夾的操作不是必需的,但考慮到以后可能要導(dǎo)入很多模型,讓它們都簇?fù)碓谝粓F(tuán)不便于管理,因此要養(yǎng)成每個模型都建立自己的文件夾的良好習(xí)慣。


我們以一個房門的3D模型為例進(jìn)行導(dǎo)入,所以這里把新建的文件夾命名為“Door”。

雙擊進(jìn)入Door文件夾,將房門的3D模型“door.blend”拖拽進(jìn)來,這樣該模型就被Unity復(fù)制到Hooh項目的Assets/Door文件夾中了。

點擊選中這個“door.blend”,即可在Unity界面右邊的Inspector窗口中查看該模型的屬性(默認(rèn)是查看材質(zhì)屬性Materials)。大多數(shù)模型沒有同其貼圖打包或建立完整的調(diào)用關(guān)系,因而在導(dǎo)入Unity后,基本呈現(xiàn)的是沒有貼圖的白模狀態(tài)。如下圖“On Demand Remap”欄目中,模型包含的兩種材質(zhì)“Door”和“Glossy”都是空的。

我們可以有多種辦法給模型上色和重新貼圖,這里僅介紹其中最簡單的一種。我們回到剛剛的Project窗口,點擊“Create”,再點擊“Material”。

這樣,我們就在Assets/Door文件夾中創(chuàng)建了一個材質(zhì)文件,你可以任意命名。

點擊選中這個材質(zhì),可以在Inspector窗口中編輯材質(zhì)屬性:

“Shader”是著色器屬性,默認(rèn)是Standard。你可以選擇已有的其它著色器,還可以導(dǎo)入新的著色器腳本。一些模型(比如玻璃或流體)需要透明或發(fā)光的材質(zhì),那么就需要選用相應(yīng)的著色器。我們這里使用默認(rèn)著色器。
“Rendering Mode”是渲染模式,默認(rèn)是Opaque不透明。你可以根據(jù)需要嘗試其它模式,比如Transparent透明模式,這樣模型在導(dǎo)入StudioNeo后會根據(jù)其后面物體的位置而改變自身的透明部位。
“Main Map”是材質(zhì)的貼圖組?!癆lbedo”這里一般指材質(zhì)的主要貼圖,對應(yīng)的是HS2/AIS材質(zhì)編輯器MaterialEditor插件(以下簡稱“ME”)中的主貼圖Main Texture項),它決定了材質(zhì)最直觀的主體圖案和顏色?!癕etallic”指材質(zhì)的金屬貼圖,它決定了材質(zhì)的金屬質(zhì)感,對應(yīng)ME中的金屬貼圖Metallic Map;“Normal Map”是法線貼圖,對應(yīng)ME中的法線貼圖Normal Map(若ME部分著色器不帶Normal Map,可用凹凸貼圖Bump Map代替),它決定了模型的凹凸感——比如HS2/AIS角色人物的皮膚種類中,我們可以選擇一些肌肉發(fā)達(dá)的皮膚,但是細(xì)心的你會發(fā)現(xiàn),無論肌肉的肉感數(shù)值怎么調(diào)節(jié),人物的四肢和軀干輪廓都沒有變化,只是在不同視角下皮膚紋理的光影效果有了一定改變;或者一些衣服的褶皺,也是如此原理。這就是法線貼圖的作用,它在不改變模型的情況下賦予模型更細(xì)致的凹凸感和紋理感?!癏eight Map”是高度圖,通常對應(yīng)ME中的凹凸貼圖Bump Map,應(yīng)用效果與法線貼圖相似,網(wǎng)上模型往往只附帶法線貼圖而少有高度圖,所以我們一帶而過?!癘cclusion”是遮擋貼圖,對應(yīng)ME中的遮擋貼圖Occlusion Map,它決定了模型每個部位在光照下的反光程度如何,使模型更具立體感。所以,若模型自帶了這些貼圖,請將這些貼圖分別拖到上述條目前面的方框中,這樣就為材質(zhì)賦予了貼圖。
?
房門這個模型沒有貼圖,所以這里我們簡單創(chuàng)建了兩個材質(zhì),命名為“1”和“2”(材質(zhì)的格式是.mat),并分別設(shè)定其顏色為藍(lán)色和白色。下圖是材質(zhì)1的屬性。

于是,我們得到如下藍(lán)白兩個材質(zhì)。

現(xiàn)在重新選中剛剛的door.blend,在Inspector窗口中選擇Materials材質(zhì)屬性面板,在“On Demand Remap”中,把材質(zhì)1和材質(zhì)2分別賦予這個模型的兩個缺少內(nèi)容的材質(zhì):分別點擊“Door”和“Glossy”右邊的圓圈按鈕來打開材質(zhì)瀏覽框,分別搜索并選中材質(zhì)1和材質(zhì)2(比如這里我們將材質(zhì)1給了“Door”;材質(zhì)2給了“Glossy”)。當(dāng)然,也可以直接拖拽材質(zhì)到相應(yīng)的窗格里。最后點擊“Apply”按鈕應(yīng)用這一改變。若要放棄這次改變,可點擊左邊的“Revert”。

應(yīng)用材質(zhì)生效之后,我們看到door.blend已經(jīng)不再是白模了,它有了顏色。

我們對模型本身的改動就到這里了。
?
2.?用Modding?Tool插件導(dǎo)出.zipmod文件
Modding?Tool插件通過讀取模型的Prefab預(yù)制體來導(dǎo)出.unity3d資源,從而創(chuàng)建StudioNeo支持讀取的.zipmod文件。Prefab預(yù)制體允許用戶在不改動模型文件的前提下,建立和保存該模型的新的信息,并像原始模型文件一樣使用。例如,我們可以把模型拖入場景并修改其材質(zhì)屬性,乃至增刪模型的部件,這些改動都不會影響原始模型文件(它仍是完整的白模),而后我們將場景中修改后的物體保存為Prefab預(yù)制體,它就是一個與原始模型文件并行的新模型了??偠灾?,按照Modding?Tool插件的流程要求,無論你的模型在導(dǎo)入Unity時是什么格式,都應(yīng)在此基礎(chǔ)上創(chuàng)建.prefab預(yù)制體文件才能進(jìn)行下一步操作。
我們將原始模型文件door.blend從Project窗口拖拽進(jìn)入Hierarchy窗口,這使房門模型被導(dǎo)入進(jìn)當(dāng)前場景中,我們可以通過旁邊的Scene視圖看到該模型在場景中的表現(xiàn)。雙擊Hierarchy窗口中的door物體,可以使Scene視圖快速移動聚焦到該物體的全貌,特別是在模型體積過大或過小難以查看時,可以用該方法調(diào)整視圖。

新拖入場景的模型會自帶Prefab,約束了場景中的物體和模型文件的關(guān)聯(lián)(如果此時模型文件出現(xiàn)更改,那么場景中的物體也會隨之變動;這種關(guān)聯(lián)也使用戶無法直接修改場景中物體的內(nèi)容),但我們這里需要得到.prefab文件,所以我們暫且無視這個問題,只管創(chuàng)建我們新的Prefab來就好:在保持Hierarchy窗口中door物體被選中的情況下,點擊菜單欄“hooh?Tools”選項,在彈出菜單中選擇“Create Prefab”。

這樣,我們就在Assets/Door文件夾中創(chuàng)建了door物體的Prefab,即door.prefab。我們可以在Project窗口中查看到它。

根據(jù)Modding?Tool插件的要求,請創(chuàng)建一個名為“prefabs”的文件夾(這里即Assets/Door/prefabs),并將生成的door.prefab拖入該文件夾中。這樣,Modding?Tool插件默認(rèn)才能夠按圖索驥找到你的Prefab文件。你可以通過對之后的mod.sxml文件腳本進(jìn)行修改來改變讀取Prefab文件的路徑,但這里不作贅述。
Modding?Tool插件同時建議,再創(chuàng)建一個名為“assets”的文件夾(這里即Assets/Door/assets),并將原始模型文件(door.blend)、材質(zhì)文件(1.mat、2.mat)、貼圖文件等拖入其中。這個操作不是必須的,因為之后的工作不再直接涉及它們,只是為了便于管理而已。

現(xiàn)在,在Door文件夾下點擊右鍵,在彈出菜單中選擇“Mod XML Templates”,進(jìn)而選擇“Studio Map and Items”。

由此,我們創(chuàng)建了一個名為“mod.sxml”的文件,它將引導(dǎo)Modding?Tool插件如何讀取Prefab等信息以及生成什么內(nèi)容的.zipmod文件。點擊“mod”圖標(biāo)右側(cè)的小箭頭,可以在旁邊彈出文檔圖標(biāo),雙擊這個圖標(biāo)可以默認(rèn)使用Visual Studio打開mod.sxml文件。

在Visual Studio中,我們看到了mod.sxml默認(rèn)給出的內(nèi)容。

我們需要對該文檔進(jìn)行重新編輯,一方面,它有助于最后生成的.zipmod在導(dǎo)入StudioNeo時不出錯;另一方面,默認(rèn)文檔本身存在一些問題,需要更正。
現(xiàn)在,請在Visual Studio中按Ctrl+A、Delete將該文檔的全部代碼全選并刪除,復(fù)制以下代碼到該文檔中:
<packer>
?<bundles>
?<folder auto-path="prefabs" from="prefabs" filter=".+?\.prefab" />
?</bundles>
?<build>
?<list type="bigcategory">
?<item id="12345678" name="大分類名稱" />
?</list>
?<list type="midcategory">
?<item big-category="12345678" id="9999" name="次分類名稱" />
?</list>
?<list type="studioitem">
?<item big-category="12345678" mid-category="9999" object="Prefab名稱" name="Mod名字" />
?</list>
?</build>
?<guid>GUID</guid>
?<name>Mod名字</name>
?<version>1.0.0</version>
?<author>模型原作者姓名</author>
?<description>補(bǔ)充性描述</description>
</packer>
?
以此作為新模板,我們需要進(jìn)一步修改如下語句:
(1)<item id="12345678" name="大分類名稱" />
在StudioNeo添加物品菜單中,你會看到一群mod作者的名字(例如圖中的“Blake”等),這個就是所謂“大分類名稱”,該作者名下所有的mods都會自動歸納在此處。所以,你可以將它改為你的昵稱,很快你也將出現(xiàn)在這個“名人堂”里面了!

“大分類名稱”前面的“12345678”可改為任意八位數(shù)字,它決定了系統(tǒng)是把“大分類名稱”相同的mods歸在一人名下,還是僅僅視為同名的兩人做的mods——換言之,這個八位數(shù)字對于每個作者都應(yīng)當(dāng)是唯一的,并且對于每個作者制作的mods而言都應(yīng)當(dāng)是相同的。
我們這里把它改為:
<item id="87654321" name="測試者" />
?
(2)<item big-category="12345678" id="9999" name="次分類名稱" />
這里面的“big-category”后面的八位數(shù)字,請修改為與之前的“大分類名稱”的“id”一致。后面的“次分類名稱”相當(dāng)于給同一mod作者的不同mods作進(jìn)一步細(xì)分,比如載具、怪獸、家具,等等。同樣,StudioNeo是根據(jù)次分類的“id”數(shù)值(一般不超過八位數(shù))來進(jìn)行歸類的,請保證同一作者的同類mod對應(yīng)同一個“id”數(shù)值。
我們這里把它改為:
<item big-category="87654321" id="5566" name="測試道具" />
?
(3)<item big-category="12345678" mid-category="9999" object="Prefab名稱" name="Mod名字" />
此處的“big-category”和“mid-category”應(yīng)分別修改同上面的“大分類名稱”和“次分類名稱”各自的“id”數(shù)值一致。
“object”后面的文本應(yīng)改為我們之前創(chuàng)建的Prefab的名稱(不加格式后綴),即“door”。
“Mod名字”請修改為你的這個mod最終要顯示在StudioNeo中的物品名稱,我們這里就改為“門”。
這段代碼因此被修改為:
<item big-category="87654321" mid-category="5566" object="door" name="門" />
?
(4)<guid>GUID</guid>
GUID,即“全局唯一標(biāo)識符”(Globally Unique Identifier),每個GUID通常被寫作一個32位的十六進(jìn)制隨機(jī)數(shù)值,作為網(wǎng)絡(luò)的各個節(jié)點的唯一身份標(biāo)識,保證節(jié)點之間相互區(qū)分。按Illusion公司的設(shè)計初衷,希望其mod和mod之間能夠以這種正式的形式被全世界的同類游戲和工作室所區(qū)分。不過,我們這里不涉及將轉(zhuǎn)換的mod對外發(fā)布,所以不必過度考慮它可能與世界另一個角落的mod重名的問題,可以姑且拋開這個規(guī)范,只要保證它在你自己的StudioNeo中是唯一的即可(PS:這里注意只能是英文和數(shù)字字符)。
我們這里把它改為:
<guid>To.Test.A.Door</guid>
?
(5)<name>Mod名字</name>
將“Mod名字”改為你的這個mod最終要顯示在StudioNeo中的物品名稱,與之前一樣。
我們這里把它改為:
<name>門</name>
?
(6)<version>1.0.0</version>
這段指明你的mod的版本號。如果你對導(dǎo)出的mod不滿意,需要再次修改,那么修改后記得將這里的版本號也進(jìn)行增加,比如“1.0.1”等等。當(dāng)你使用KKManager向HS2/AIS安裝修改后的mod時,它會將其同已安裝的同一GUID的mod之間作比對,若版本號高于后者,則覆蓋安裝,否則拒絕。
因為是初次導(dǎo)出這個mod,所以我們這里保持默認(rèn)不變即可。
?
(7)<author>模型原作者姓名</author>
請將這個原始3D模型的作者姓名寫在此處。此處留空將報錯。
我們這里把它改為door的原作者網(wǎng)名:
<author>witnessk</author>
?
(8)<description>補(bǔ)充性描述</description>
未盡之處,可以在此書寫。此處可以留空。
我們這里把它改為door模型的網(wǎng)址出處:
<description>https://skfb.ly/6VKAQ</description>
?
整理一下我們已修改的內(nèi)容,我們得到了如下代碼:
<packer>
?<bundles>
?<folder auto-path="prefabs" from="prefabs" filter=".+?\.prefab" />
?</bundles>
?<build>
?<list type="bigcategory">
?<item id="87654321" name="測試者" />
?</list>
?<list type="midcategory">
?<item big-category="87654321" id="5566" name="測試道具" />
?</list>
?<list type="studioitem">
?<item big-category="87654321" mid-category="5566" object="door" name="門" />
?</list>
?</build>
?<guid>To.Test.A.Door</guid>
?<name>門</name>
?<version>1.0.0</version>
?<author>witnessk</author>
?<description>https://skfb.ly/6VKAQ</description>
</packer>
?
我們在Visual Studio中保存,并切換回Unity。點擊底部Project窗口的“mod”圖標(biāo),在Inspector窗口中找到“Build Mod”一欄,我們要準(zhǔn)備正式導(dǎo)出mod了!

你可以先點擊這欄右側(cè)的“Test Mod”按鈕,Modding?Tool插件將自動檢查你剛剛編寫的mod.sxml腳本有無語法錯誤。若無問題,下面的“Issues”一欄(以及Unity界面左下角狀態(tài)欄)會給出“This Mod XML is Valid.”

若發(fā)現(xiàn)了問題,那么此處將提示報錯信息。例如,如下報錯信息:

它表示腳本中名稱為“Door”的這個資源在指定的文件夾中找不到。我們之前命名的Prefab是小寫的“door”。這說明Unity對大小寫敏感。改正后,報錯解除。
?
現(xiàn)在我們回到“Build Mod”一欄,看到“Build Mod”按鈕,若mod.sxml腳本無報錯,則該按鈕為綠色;若有報錯,則該按鈕為紅色,按鈕無功能。

在“Build Mod”按鈕呈綠色狀態(tài)下,按下。Modding?Tool插件將自動編譯打包我們之前操作的.prefab和mod.sxml等文件。隨著“蹬楞”一聲提示音,一個以GUID命名的.zipmod出現(xiàn)在了Hooh文件夾之中,這是你親手導(dǎo)出的第一個StudioNeo?mod,啪嘰啪嘰!


如果你覺得每次都要跑到Hooh文件夾里尋找導(dǎo)出的mod有點麻煩,找到“Build Mod”一欄里的“Output Directory”,在右側(cè)的文本框里輸入你想導(dǎo)出的路徑即可。
比如,我每次都讓它直接導(dǎo)出到桌面上:


五、安裝和檢查你的Mod
你可以將導(dǎo)出的.zipmod文件直接拖拽進(jìn)mods文件夾中,也可以使用KKManager進(jìn)行安裝。

安裝后,在“Sideloader?Mods”面板的“Search”搜索框中輸入“To.Test.A.Door”或者“門”等關(guān)鍵詞,即可查找到我們的mod,右側(cè)可以查看mod信息以及封裝包內(nèi)的文件,還可以禁用或刪除它。

在安裝工作結(jié)束后,啟動StudioNeo。由于StudioNeo只在啟動時一次性加載mods,因此在它啟動后安裝的mods不會被實時讀取,需要重新啟動。
在StudioNeo中,我們可以通過添加物品菜單,找到作為大分類的“測試者”,依次點開,找到物品“門”。

我們也可以用物品搜索功能(快捷鍵Ctrl+F),輸入關(guān)鍵字快速查找到我們的物品。

只需輕輕一點擊,以前似乎觸不可及的網(wǎng)絡(luò)3D模型就這樣添加進(jìn)了場景中!是不是很酷!


六、調(diào)整你的Mod
為了教學(xué)過程盡可能簡潔易懂,我沒有把所有事項都放在上一章。這里集中講解一些補(bǔ)充性內(nèi)容。
1.?如何為添加預(yù)覽圖
在StudioNeo的物品搜索功能的面板中,你會發(fā)現(xiàn)絕大多數(shù)物品都帶有預(yù)覽圖片,一目了然,方便查找。

Modding?Tool插件為我們提供了添加預(yù)覽圖的功能。
首先,我們要制作一張預(yù)覽圖,HS2/AIS默認(rèn)mod預(yù)覽圖的要求是:文件格式為.png,圖像大小為128px×128px。你可以任意制作一張圖片并按此要求調(diào)整,不過我們這里介紹Modding?Tool插件的預(yù)覽圖生成功能:點擊頂端菜單欄“hooh?Tools”選項,再選擇“Show Window”。

在彈出的“hooh?Tools”全功能窗口中選擇“Mod Integration”面板。在確保你已在prefabs文件夾中創(chuàng)建好.prefab預(yù)制體文件的情況下,在“Thumbnail Generator”一欄中點擊“Add Folder”按鈕。

此時,Modding?Tool插件將自動讀取prefabs文件夾中的所有預(yù)制體文件,并在“Add Folder”上方的“Target Models”中顯示——這表明系統(tǒng)已選中這些預(yù)制體,隨時可以為它們生成預(yù)覽圖等文件。

點擊“Generate Thumbnails”按鈕,“嗖”的一聲,當(dāng)前目錄下生成了一個“thumbs”文件夾,內(nèi)含一張根據(jù)模型文件縮略圖自動生成的mod預(yù)覽圖.png文件。


接著,我們要讓Modding?Tool插件在生成.zipmod文件時,將這張預(yù)覽圖也收錄進(jìn)去,就必須通過修改文件名和mod.sxml腳本來引導(dǎo)插件讀取預(yù)覽圖。
重新命名這個預(yù)覽圖,將它命名為如下形式:
大分類名稱id-次分類名稱id-mod名字
其中,“-”是英文輸入法狀態(tài)的減號;大分類名稱id和次分類名稱id必須是數(shù)字且必須為八位數(shù),不夠八位數(shù)的,數(shù)字前用“0”占位。
我們的房門mod的大分類名稱id是87654321,次分類名稱id是5566,mod名字是“門”,則我們將該預(yù)覽圖的文件名修改為:
87654321-00005566-門
?
下一步,我們要修改mod.sxml腳本,添加如下語句到<bundles></bundles>標(biāo)簽之間:
<move auto-path="studiothumb" from="thumbs" filter=".+?\.png" />
這段腳本將引導(dǎo)插件自動讀取thumbs文件夾下所有.png文件。由于我們已將預(yù)覽圖的文件名按要求修改,因而插件將根據(jù)文件名自動與相應(yīng)的物品關(guān)聯(lián)起來。由此,如果你的同一個.zipmod文件包含多個物品和多個預(yù)覽圖,插件也能夠?qū)⑺鼈円灰粚?yīng)。
需要注意,這個mod我們在此前已經(jīng)生成過一次,版本號是1.0.0,我們要重新導(dǎo)出這個mod的話,就要增加版本號,比如1.0.1、1.1.0或者2.0.0等等比1.0.0更大的數(shù)字,否則Modding?Tool插件會認(rèn)為你沒有改動mod,也就不會進(jìn)行實質(zhì)操作。我們這里修改<version></version>標(biāo)簽為:
<version>1.0.1</version>
?
總結(jié)一下,我們原來的mod.sxml腳本就修改為:
<packer>
?<bundles>
?<folder auto-path="prefabs" from="prefabs" filter=".+?\.prefab" />
? <move auto-path="studiothumb" from="thumbs" filter=".+?\.png" />
?</bundles>
?<build>
?<list type="bigcategory">
?<item id="87654321" name="測試者" />
?</list>
?<list type="midcategory">
?<item big-category="87654321" id="5566" name="測試道具" />
?</list>
?<list type="studioitem">
?<item big-category="87654321" mid-category="5566" object="door" name="門" />
?</list>
?</build>
?<guid>To.Test.A.Door</guid>
?<name>門</name>
?<version>1.0.1</version>
?<author>witnessk</author>
?<description>https://skfb.ly/6VKAQ</description>
?<last-build time="2022/12/8 23:22:18" version="1.0.0" />
</packer>
在每次導(dǎo)出mod之后,插件會自動在腳本中加入一行<last-build/>標(biāo)簽,記錄最近一次mod導(dǎo)出是在什么時候、版本號幾何。
此外,我們還需要保證thumbs文件夾與mod.sxml文件保持同層級的關(guān)系(例如:Assets/Door/thumbs; Assets/Door/mod.sxml),否則我們要么調(diào)整thumbs文件夾的位置,使兩者同層級,要么就需修改mod.sxml的腳本。
?
最后,在保存腳本后,使用“Build Mod”功能重新導(dǎo)出.zipmod文件,再安裝到StudioNeo中。這樣我們在StudioNeo的搜索面板里就能夠看到預(yù)覽圖,而不再是缺省的問號圖標(biāo)。

BTW,在默認(rèn)設(shè)置下,Modding?Tool插件生成的預(yù)覽圖是透明背景。若想更定制化地生成預(yù)覽圖,可以在“Thumbnail Generator”一欄的“Background Image”和“Foreground Image”中分別為預(yù)覽圖的背景和前景添加圖片(分別點擊右側(cè)的圓圈來選擇圖片或直接拖拽圖片到相應(yīng)窗格里)。

不過,必須保證所使用的背景和前景圖片處于允許讀寫狀態(tài),否則生成時會報錯:選中圖片,在Inspector窗口的“Advance”一欄,勾選“Read/Write Enabled”項目,再點擊“Apply”應(yīng)用更改即可。

2.?如何調(diào)整物品的初始姿態(tài)
我們有時會對模型不加調(diào)整就直接導(dǎo)出,進(jìn)而相關(guān)物品導(dǎo)入到StudioNeo中的初始姿態(tài)不能令我們滿意,每次都要在StudioNeo中手動調(diào)整,因此從源頭上解決問題才能一勞永逸。
例如,在我們的房門模型的原始文件door.blend中,門是上下顛倒的,因而導(dǎo)出的mod再添加到StudioNeo中,必然也是顛倒的。每次添加這個物品后都必須讓它沿Z軸旋轉(zhuǎn)180度才恢復(fù)正常,這很麻煩。應(yīng)當(dāng)在Unity導(dǎo)出mod前就糾正這個姿態(tài)。

正如我們之前提到的,當(dāng)模型被拖入場景中成為物體時,這個物體仍通過自動附加的Prefab預(yù)制體與模型文件相關(guān)聯(lián),導(dǎo)致不便直接修改場景中的物體。因此,在對任何場景中的物體進(jìn)行調(diào)整時,建議都事先解決它與模型文件的關(guān)聯(lián):在Hierarchy窗口中,選中所需修改的物體,點擊右鍵,在彈出菜單中選擇“Unpack Prefab Completely”。這樣。物體door目錄的顏色由Prefab關(guān)聯(lián)狀態(tài)的藍(lán)色,變成默認(rèn)的灰色,此時可以對該物體任意進(jìn)行包括調(diào)整位置、大小、材質(zhì)等屬性的修改,也可以增刪其組成部件,而不會影響其原始模型文件。

BTW,點擊物體目錄前面的箭頭圖標(biāo),可以打開子目錄,看到這個物體的全部組成部件。有些部件的層級關(guān)系比較復(fù)雜,不便通過鼠標(biāo)點擊一一展開,可以在選中目錄后按快捷鍵“Alt+方向鍵→”展開當(dāng)前目錄中的全部子目錄。

通過Scene視圖可知,當(dāng)前場景中的房門是上下顛倒的:

選中物體door,在Inspector窗口的“Transform”一欄中,將“Rotation”(旋轉(zhuǎn))的Z值由原來的“0”修改為“180”。由此,物體door沿Z軸旋轉(zhuǎn)了180度(順時針方向),物體朝向就顯得正常了。

此外,還可以通過Transform欄目的另外兩項“Position”(位置)和“Scale”(尺寸)來調(diào)整物體(及其組成部件)在場景中的位置和大小。例如,我們這里隨意選中了其中一個門扇部件,把它的位置和大小進(jìn)行了修改。最后導(dǎo)出到StudioNeo的物品就將是我們在下圖場景中的效果。你可以調(diào)整Transform欄目的數(shù)值來精準(zhǔn)調(diào)節(jié),也可以通過工具欄的變換工具直接在Scene視圖中用鼠標(biāo)操作。

完成調(diào)整后,重新對物體door創(chuàng)建Prefab,并按之前我們所講的流程,導(dǎo)出.zipmod文件再安裝到StudioNeo即可。這里及下文將不再復(fù)述。
?
3.?如何調(diào)整物品操作軸的位置
在StudioNeo中,我們利用操作軸(axis)在可視化控制物體的位置、方向和大小。不過,操作軸在物品中的位置有時會影響我們操作的效率。比如在下圖中,房門物品的操作軸在底部邊緣,導(dǎo)致我們在旋轉(zhuǎn)它時擺動幅度過大,不便于我們在復(fù)雜場景中擺放它?;蛟S,把操作軸的位置從底部改到中心或其它位置,更加便利。
?

我們導(dǎo)入到StudioNeo的物品的操作軸位置,等同于Unity場景中的物體的坐標(biāo)軸位置,正如下圖所示物體door在Unity中的坐標(biāo)軸:

因此,只要修改Unity中物體door的坐標(biāo)軸即可解決問題。
點擊Scene視圖右上角的方向桿,讓視圖旋轉(zhuǎn)到合適的位置(也可右擊方向桿通過彈出菜單調(diào)整),比如我們將視圖移動到物體door的正面。雙擊Hierarchy窗口中的物體door目錄,使它在Scene視圖中置于正中心。?

在Hierarchy窗口中點擊“Create”,進(jìn)而點擊“Create Empty”(創(chuàng)建空對象)。由此在Hierarchy窗口中創(chuàng)建了一個名為“GameObject”的空對象,我們隨意將其重命名為“door-axis”。?

當(dāng)我們選中door-axis時,可以這個空對象看到Scene視圖里的坐標(biāo)軸恰恰位于視圖的中心?;蛘叻催^來說,新建的空對象的坐標(biāo)軸總是被設(shè)置在其創(chuàng)建時視圖的中心。

所以,我們只要把這個新建的空對象door-axis成為物體door的父級物體,就能夠在中心位置的坐標(biāo)軸上(間接地)操作物體door了。進(jìn)而,把door-axis導(dǎo)出為mod,就能夠?qū)崿F(xiàn)我們在StudioNeo中物品操作軸位置的調(diào)整。
通過鼠標(biāo)按住物體door目錄,拖拽到空對象door-axis上,即可使物體door成為空對象door-aixs的子物體。然后,為door-axis創(chuàng)建Prefab,并令mod.sxml腳本中“object”指向的Prefab文件名與之一致,最后按流程導(dǎo)出.zipmod文件即可。?

瞧,房門物品在StudioNeo中的操作軸也相應(yīng)改變了。

如果你不想把坐標(biāo)軸調(diào)整到物體door的“正中心”,你可以在創(chuàng)建空對象之前調(diào)整Scene視圖——總之,空對象的坐標(biāo)軸總是在創(chuàng)建它時Scene視圖的正中心,合理利用這個機(jī)制就是了。
當(dāng)然,這種調(diào)整方法仍顯粗放,畢竟手動調(diào)整Scene視圖不甚精確。你可以在模型文件導(dǎo)入Unity前,通過Blender等3D建模軟件來設(shè)置原點(origin)位置,原點的位置即導(dǎo)入Unity場景中物體坐標(biāo)軸的位置。

4.?物品添加后什么也看不到
將物品添加到StudioNeo后,看不到物體本身,只是空有一個操作軸。?

原因可能有:
(1)導(dǎo)出mod的流程操作有誤,特別是在Unity修改過場景中物體前后,沒有取消Prefab或沒有重新創(chuàng)建Prefab,都可能導(dǎo)致物品添加后看不到,或是物品姿態(tài)與導(dǎo)出時的效果不符。
(2)這個物品的操作軸并不在物品上。物品與操作軸之間存在很大距離,所以當(dāng)你在StudioNeo的工作面板選中物品并按“Ctrl+F”將視圖定位到物品時,只是看到了操作軸,物品本身可能在上下左右較遠(yuǎn)處。請嘗試360度旋轉(zhuǎn)視角找尋這個物品,或者返回Unity確認(rèn)一下物體的坐標(biāo)軸位置并酌情調(diào)整。
(3)物品尺寸過小。太小的物品會看不到或不顯示,請嘗試在StudioNeo的工作面板中選中該物品,將它放大1000倍或以上,也可以在Unity中調(diào)整物體的“Scale”倍數(shù)。
?
5.?物品為何不受工作室燈光影響
物品添加到StudioNeo場景中,即便使用最高強(qiáng)度的全體光(或全體聚光燈、全體單點光),也無法使物品產(chǎn)生相應(yīng)的光影效果。
例如,下圖場景中使用了一個全體聚光燈,同時照射到人物和輪胎上,人物有光影效果,而輪胎卻沒有受到影響:?

問題在于輪胎物品(以及其它非角色的物品)在StudioNeo中屬于“地圖”,但在導(dǎo)出mod時,沒有將它設(shè)置為“地圖”的圖層(layer)。
修改Unity中的物體的圖層屬性即可解決該問題。在Hierarchy窗口內(nèi)選中已取消Prefab后的物體,在Inspector窗口的“Layer”項目中,點擊下拉菜單的“11: Map”(地圖)一項。?

在彈出的詢問框中,選擇“Yes, change children”,即可將該物體及其包含的全部子物體的圖層都更改為地圖層。

修改完成后的輪胎物品,于是能夠正常接受光照影響了:

6.?明明沒有光照,物品為何明亮
物品添加到StudioNeo場景中,發(fā)現(xiàn)即便把所有燈光都調(diào)暗,物品似乎仍然受到明顯的光照,使場景的整體光影效果無法統(tǒng)一。這是因為我們獲得的原始模型文件中,包含了燈光(light),不加修改地導(dǎo)出mod,必然也將燈光作為物體的一部分一并導(dǎo)出。因此,只需要在Unity的Hierarchy窗口中打開物體的層級目錄,排查并酌情刪除名稱包含“l(fā)ight”“sun”等關(guān)鍵詞的子物體即可。
?
藉由這個問題,我們反向思維——可以通過在Unity中為物體添加燈光的方式,讓它在StudioNeo場景中自帶發(fā)光效果。具體方法是上文的反向操作:在Hierarchy窗口中點擊“Create”,選擇“Light”,進(jìn)而選擇想要的燈光種類。

有關(guān)燈光的種類與選擇,可參考下列文章:
https://blog.csdn.net/Aimyller/article/details/105313858
例如,我在一顆寶石內(nèi)部加入了一個單點光/點光源(point light)并調(diào)整了發(fā)光強(qiáng)度和范圍,下圖是添加到StudioNeo后的效果。

7.?物品添加后無法調(diào)整工作室視圖角度
有時出現(xiàn)這樣的現(xiàn)象:將物品添加到StudioNeo場景之后,鼠標(biāo)操作視圖的功能幾乎失靈了,而棄選該物品或選中其它物品后,視圖操作似乎有恢復(fù)正常了。導(dǎo)致該現(xiàn)象的原因是:原始模型文件中的物體內(nèi)包含了攝像機(jī)(camera),導(dǎo)致導(dǎo)出的mod物品添加到StudioNeo后與場景默認(rèn)的視圖攝像機(jī)操作沖突。解決辦法是在Unity中排查和刪除物體目錄里帶“camera”等關(guān)鍵詞的子物體。
這種自帶一個甚至多個攝像機(jī)的模型,在Sketchfab等網(wǎng)站上很常見,因為這些網(wǎng)站要求模型作者如此操作,以便網(wǎng)站系統(tǒng)自動生成動態(tài)、多視角的模型預(yù)覽畫面。
?

七、相關(guān)網(wǎng)站
l??Hooh’s?Modding?Tool
Hooh本人為Hooh’s?Modding?Tool插件編寫的使用說明。
地址:https://hooh-hooah.github.io/
l??Hooh’s?Workshop
Hooh在Patreon平臺開設(shè)的個人主頁,主要發(fā)布HS2/AIS的人物卡、mods、工作室插件等。如果你覺得Hooh’s?Modding?Tool插件很有幫助,請成為他的付費(fèi)訂閱會員以表支持吧!
地址:https://www.patreon.com/hooh_hooah
l??Illusion Soft
以Illusion公司主打游戲(HS、HS2、AIS、戀活、家族崩壞等)為主題,開設(shè)在Discord平臺上的社區(qū),內(nèi)含海量免費(fèi)mods、人物卡、場景卡、插件,還有魔改大佬們在線解答你的疑問。
地址:https://discord.gg/illusionsoft
l??enimaroah's?Sb3UGS Project
除Hooh’s?Modding?Tool插件之外,也有不少人使用SB3UtilityGUI軟件來制作mods,這個教程提供了這方面的講解,不失為另一種modding的途徑。
地址:https://github.com/enimaroah-cubic/Sb3UGS/wiki
l??HS2-HF_Patch & AI-HF_Patch
兩位Illusion游戲魔改大佬收集整理的HS2和AIS的插件。如果你的游戲不是整合包的話,建議好好研究一番,這些插件能夠讓你的游戲和工作室體驗煥然一新。
地址:
https://github.com/ManlyMarco/HS2-HF_Patch/blob/master/Plugin%20Readme.md;
https://github.com/ManlyMarco/AI-HF_Patch/blob/master/Plugin%20Readme.md
l??BetterRepack
BetterRepack是另一位Illusion游戲大佬收集并定期發(fā)布的游戲升級包,內(nèi)含各類插件、mods、人物卡等等。國內(nèi)愛好者私下出售的中文版整合包有很多直接來自Better Repack,甚至游戲預(yù)載界面(InitSetting.exe)赫然寫著“BetterRepack”字樣。不過,把BetterRepack升級包直接安裝在中文版整合包里可能有文件沖突等風(fēng)險,導(dǎo)致游戲無法打開,請事先做好備份。
地址:https://www.patreon.com/BetterRepack;
https://sideload.betterrepack.com/download/AISHS2/
l??Bl@ke’s?Ultra Universe
這是我的個人網(wǎng)站,目前頁面還在制作中,所以網(wǎng)址暫時跳轉(zhuǎn)到我在Pixiv平臺的賬號上。作為女奧特曼(ウルトラヒロイン)愛好者,我通過AIS制作了一些澀澀的插畫和漫畫,在此斗膽廣告,歡迎大家訪問!
地址:http://www.blatke.cc