欢迎光临散文网 会员登陆 & 注册

Bl@ke小课堂:如何将3D模型导入HS2/AI少女工作室

2022-12-09 13:32 作者:Blatke  | 我要投稿

本文PDF版已上传至网盘,并对部分内容进行了更新。请以PDF版内容为准。

链接:https://pan.baidu.com/s/1gysTQbxKLlyqh-OpUE64gQ?pwd=zvgl 

提取码:zvgl



撰文:Bl@ke(http://www.blatke.cc)

Honey Select 2(以下简称“HS2”)或AI少女(以下简称“AIS”)爱好者总是面临一个尴尬的问题:苦苦查找想要的mods,但就是找不到合适的;明明网上有很多3D模型,独惜不知如何导入HS2/AIS的工作室(StudioNEO),网络上现有的中文教程给予的帮助很有限,外文教程又繁复庞杂,不知从何入手。本教程在此写给对StudioNEO已有初步了解的朋友们,帮助他们将网上随处可下载的3D模型转换成StudioNEO支持的形式,打破横在他们创意面前的最后一道障碍。



〇、致谢

本文使用的关键插件由Hooh设计编写并免费发布,他以一己之力使StudioNEO的mod制作不再繁冗,谨在此致以最高敬意,并祝愿他身体早日康复。

本人在学习和实践相关知识时得到了enimaroah、Duckアヒル和Kky-的直接帮助,再次表示感谢。

此外,Pacokie对Hooh插件中存在的一些书写错误作了更正说明,特此一并致谢。



一、需要预先了解的事宜

本文的操作是围绕Hooh插件——Hooh’s Modding Tool进行,该插件是安装在Unity上的,换言之,我们要通过Unity将3D模型转换为StudioNeo所支持的mod,而这些3D模型必须首先是Unity能够读取的格式。

你可以在Sketchfab (https://sketchfab.com)、CGTrader(https://www.cgtrader.com/)等网站寻找和下载3D模型,这些模型大多为如下格式:

.fbx

.obj

.blend

.glb

.stl

.dae

……

其中,前三种格式可以无障碍导入Unity;其余格式要直接导入Unity则需要安装额外的插件或脚本,建议先导入到Blender(或其它软件),由Blender导出.fbx文件,再导入Unity。

 

HS2/AIS工作室StudioNeo支持的mod格式为.zip和.zipmod,通常是.zipmod,但事实上将.zipmod文件的后缀改为.zip,你可以当做压缩包将它解压,得到如下文件:(1)一个“manifest.xml”文件,记录mod在StudioNeo中的识别号、名称、作者等信息;(2)一个abdata文件夹,内有三个.csv文件和至少一个.unity3d文件,前者可用Excel或记事本打开,它们记录了比“manifest.xml”更为详细的mod信息;后者是mod文件本体;可能还有若干.png图片,这是预览图,便于你在StudioNeo的搜索面板中寻找mod。

 

需要重申的是,本教程的操作方法仅针对HS2/AIS StudioNeo。Honey Select 1的mod制作的方法与之较明显差异,难以通用。针对HS1,目前可供参考的是这份英文教程:https://mega.nz/#F!VlpAQZ7S!Q4x1zu3OlDSuuS_x-flqbA。



二、准备活动

1)Unity 2018.4.11f

HS2/AI游戏是利用Unity 2018.4.11f编写的,比这个更新的版本所导出的mod可能存在兼容问题,也未必匹配Hooh’s Modding Tool插件。因此,请务必严格确保你使用的版本号是2018.4.11f。

下载地址:https://unity3d.com/get-unity/download/archive

 

2)Visual Studio

在Unity 安装时,会默认一并安装Visual Studio,该软件将便于你编写上面提到的.xml文件。当然,你用记事本同样可以编辑。

 

3)Git for Windows

Hooh’s Modding Tool插件有一些调用其它插件的脚本,会涉及到利用它自动更新脚本的情形。

下载地址:https://git-scm.com/download/win

选择最新版下载即可。

 

4)Hooh’s Modding Tool

本文操作围绕的核心插件,目前版本为0.7.0,本文以该版本为准。

下载地址:https://github.com/hooh-hooah/ModdingTool

该插件文件存放于Github网站。打开链接后,点击绿色的“Code”按钮,在弹出的菜单中点击“Download ZIP”,就可将该插件包含的全部文件打包到同一个压缩包下载了。

 


下载后解压,解压后的文件夹可任意命名,我们这里暂且将该文件夹称为“Hooh文件夹”,这个文件夹即Hooh’s Modding Tool插件的主体文件(及应用样例)。

理论上你可以将Hooh文件夹置于硬盘空间的任何位置,但必须确保其文件路径不包含任何英文和数字之外的字符(如中文),否则插件安装可能出错。

 

5)为Hooh’s Modding Tool预先准备的文件

如果你在稍后提及的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

下载并分别解压到单独文件夹,再一并复制到Hooh文件夹中。

 

6)KKManager

这个工具最初是用来给恋活游戏安装/卸载mod和插件的,也可以用来管理人物卡。鉴于都是Illusion公司的游戏,KKManager也可以拿来为HS2/AIS所用。当你做好一个mod时,你可以直接将它拖入游戏的mods文件夹中,StudioNeo启动时(Sideloader)将自动搜索和加载;但你也可以选择使用KKManager来安装mod,特别是当你频繁修改调整mod时,KKManager将根据你的mod版本号的新旧来决定是覆盖掉已安装的同名mod还是拒绝操作,避免你用一个旧的mod覆盖更新的mod。此外,你还可以通过KKManager暂时禁用某些已安装的mod,避免StudioNeo因启动时加载太多mod而过度延迟。

下载地址:https://www.patreon.com/posts/41869238



三、安装Hooh’s Modding Tool插件

为确保插件安装顺利,还是建议暂时关闭杀软、防火墙和VPN,待安装成功后再重新开启。

启动Unity,在它的准备界面上点击“Open”,再在弹出的对话框里选中我们刚刚提到的Hooh文件夹,点击“选择文件夹”。之后,Unity便会自动加载文件夹内的脚本和所需的网络资源,并使Hooh文件夹成为Unity的一个新项目(Project)。

安装完毕后,Unity会自动进入操作界面。如果你在界面顶端菜单栏看到“hooh Tools”选项,则说明安装成功。请移步下一章。

如果没有看到"hooh Tools"选项,说明插件未成功安装到Unity,可能的原因和解决办法如下:

1)软件版本错误或漏装软件。Unity版本不是2018.4.11f;未安装Visual Studio或Git。请检查并修补。

2)至少一个软件安装路径或文件路径存在非英文字符。请改为英文字符。

3)你的杀软、防火墙或VPN可能阻碍了插件安装,请重装前关闭。

4)插件所需调用的其它插件或文件未能成功导入。在Unity顶部菜单栏点击“Window”,进入“Package Manager”。在弹出窗口的左上角点击“Unity Registry”,选择“In Project”。

点击窗口底部的“+”按钮,选择“Add package from disk”。


还记得我们在上一章准备活动的第5节里准备的那些文件夹吗?在选择“Add package from disk”后,找到你列表中缺失的插件的相应文件夹,在文件夹中找到“package.json”文件,选中并打开。Unity将重新加载和安装相应插件。

完成查漏补缺后,“hooh Tools”选项将出现在Unity顶部菜单栏。



四、转换你的第一个Mod

插件安装成功后,本章将讲解如何通过Unity的Modding Tool插件将你已有的3D模型转换成StudioNeo所支持的.zipmod文件。本章分为两个小节,第一个是将3D模型导入Unity并进行基础性调整,若对此内容比较熟悉,可跳过本小节;第二小节是通过Modding Tool插件导出.zipmod文件。

1. 在Unity里导入和调整3D模型

进入Unity。如果你之前没有退出Unity,那么在当前界面继续接下来的操作即可;如果你需要重新打开Unity,那么在项目选择界面中选择Hooh文件夹即可进入这个项目。


Unity 2018.4.11f的默认界面如下,之后我们将多次提及这些窗口和视图:


我们现在要将已有的3D模型导入到Unity。在Unity界面里底部的Project窗口中,选中Assets文件夹,点击“Create”,再在弹出菜单中选择“Folder”,即可在Assets文件夹中新建一个文件夹——新建文件夹的操作不是必需的,但考虑到以后可能要导入很多模型,让它们都簇拥在一团不便于管理,因此要养成每个模型都建立自己的文件夹的良好习惯。


我们以一个房门的3D模型为例进行导入,所以这里把新建的文件夹命名为“Door”。


双击进入Door文件夹,将房门的3D模型“door.blend”拖拽进来,这样该模型就被Unity复制到Hooh项目的Assets/Door文件夹中了。


点击选中这个“door.blend”,即可在Unity界面右边的Inspector窗口中查看该模型的属性(默认是查看材质属性Materials)。大多数模型没有同其贴图打包或建立完整的调用关系,因而在导入Unity后,基本呈现的是没有贴图的白模状态。如下图“On Demand Remap”栏目中,模型包含的两种材质“Door”和“Glossy”都是空的。


我们可以有多种办法给模型上色和重新贴图,这里仅介绍其中最简单的一种。我们回到刚刚的Project窗口,点击“Create”,再点击“Material”。


这样,我们就在Assets/Door文件夹中创建了一个材质文件,你可以任意命名。


点击选中这个材质,可以在Inspector窗口中编辑材质属性:


“Shader”是着色器属性,默认是Standard。你可以选择已有的其它着色器,还可以导入新的着色器脚本。一些模型(比如玻璃或流体)需要透明或发光的材质,那么就需要选用相应的着色器。我们这里使用默认着色器。

Rendering Mode”是渲染模式,默认是Opaque不透明。你可以根据需要尝试其它模式,比如Transparent透明模式,这样模型在导入StudioNeo后会根据其后面物体的位置而改变自身的透明部位。

Main Map”是材质的贴图组。“Albedo”这里一般指材质的主要贴图,对应的是HS2/AIS材质编辑器MaterialEditor插件(以下简称“ME”)中的主贴图Main Texture项),它决定了材质最直观的主体图案和颜色。“Metallic”指材质的金属贴图,它决定了材质的金属质感,对应ME中的金属贴图Metallic Map;“Normal Map”是法线贴图,对应ME中的法线贴图Normal Map(若ME部分着色器不带Normal Map,可用凹凸贴图Bump Map代替),它决定了模型的凹凸感——比如HS2/AIS角色人物的皮肤种类中,我们可以选择一些肌肉发达的皮肤,但是细心的你会发现,无论肌肉的肉感数值怎么调节,人物的四肢和躯干轮廓都没有变化,只是在不同视角下皮肤纹理的光影效果有了一定改变;或者一些衣服的褶皱,也是如此原理。这就是法线贴图的作用,它在不改变模型的情况下赋予模型更细致的凹凸感和纹理感。“Height Map”是高度图,通常对应ME中的凹凸贴图Bump Map,应用效果与法线贴图相似,网上模型往往只附带法线贴图而少有高度图,所以我们一带而过。“Occlusion”是遮挡贴图,对应ME中的遮挡贴图Occlusion Map,它决定了模型每个部位在光照下的反光程度如何,使模型更具立体感。所以,若模型自带了这些贴图,请将这些贴图分别拖到上述条目前面的方框中,这样就为材质赋予了贴图。

 

房门这个模型没有贴图,所以这里我们简单创建了两个材质,命名为“1”和“2”(材质的格式是.mat),并分别设定其颜色为蓝色和白色。下图是材质1的属性。


于是,我们得到如下蓝白两个材质。


现在重新选中刚刚的door.blend,在Inspector窗口中选择Materials材质属性面板,在“On Demand Remap”中,把材质1和材质2分别赋予这个模型的两个缺少内容的材质:分别点击“Door”和“Glossy”右边的圆圈按钮来打开材质浏览框,分别搜索并选中材质1和材质2(比如这里我们将材质1给了“Door”;材质2给了“Glossy”)。当然,也可以直接拖拽材质到相应的窗格里。最后点击“Apply”按钮应用这一改变。若要放弃这次改变,可点击左边的“Revert”。


应用材质生效之后,我们看到door.blend已经不再是白模了,它有了颜色。


我们对模型本身的改动就到这里了。

 

2. 用Modding Tool插件导出.zipmod文件

Modding Tool插件通过读取模型的Prefab预制体来导出.unity3d资源,从而创建StudioNeo支持读取的.zipmod文件。Prefab预制体允许用户在不改动模型文件的前提下,建立和保存该模型的新的信息,并像原始模型文件一样使用。例如,我们可以把模型拖入场景并修改其材质属性,乃至增删模型的部件,这些改动都不会影响原始模型文件(它仍是完整的白模),而后我们将场景中修改后的物体保存为Prefab预制体,它就是一个与原始模型文件并行的新模型了。总而言之,按照Modding Tool插件的流程要求,无论你的模型在导入Unity时是什么格式,都应在此基础上创建.prefab预制体文件才能进行下一步操作。

我们将原始模型文件door.blend从Project窗口拖拽进入Hierarchy窗口,这使房门模型被导入进当前场景中,我们可以通过旁边的Scene视图看到该模型在场景中的表现。双击Hierarchy窗口中的door物体,可以使Scene视图快速移动聚焦到该物体的全貌,特别是在模型体积过大或过小难以查看时,可以用该方法调整视图。


新拖入场景的模型会自带Prefab,约束了场景中的物体和模型文件的关联(如果此时模型文件出现更改,那么场景中的物体也会随之变动;这种关联也使用户无法直接修改场景中物体的内容),但我们这里需要得到.prefab文件,所以我们暂且无视这个问题,只管创建我们新的Prefab来就好:在保持Hierarchy窗口中door物体被选中的情况下,点击菜单栏“hooh Tools”选项,在弹出菜单中选择“Create Prefab”。


这样,我们就在Assets/Door文件夹中创建了door物体的Prefab,即door.prefab。我们可以在Project窗口中查看到它。


根据Modding Tool插件的要求,请创建一个名为“prefabs”的文件夹(这里即Assets/Door/prefabs),并将生成的door.prefab拖入该文件夹中。这样,Modding Tool插件默认才能够按图索骥找到你的Prefab文件。你可以通过对之后的mod.sxml文件脚本进行修改来改变读取Prefab文件的路径,但这里不作赘述。

Modding Tool插件同时建议,再创建一个名为“assets”的文件夹(这里即Assets/Door/assets),并将原始模型文件(door.blend)、材质文件(1.mat、2.mat)、贴图文件等拖入其中。这个操作不是必须的,因为之后的工作不再直接涉及它们,只是为了便于管理而已。


现在,在Door文件夹下点击右键,在弹出菜单中选择“Mod XML Templates”,进而选择“Studio Map and Items”。


由此,我们创建了一个名为“mod.sxml”的文件,它将引导Modding Tool插件如何读取Prefab等信息以及生成什么内容的.zipmod文件。点击“mod”图标右侧的小箭头,可以在旁边弹出文档图标,双击这个图标可以默认使用Visual Studio打开mod.sxml文件。


Visual Studio中,我们看到了mod.sxml默认给出的内容。


我们需要对该文档进行重新编辑,一方面,它有助于最后生成的.zipmod在导入StudioNeo时不出错;另一方面,默认文档本身存在一些问题,需要更正。

现在,请在Visual Studio中按Ctrl+A、Delete将该文档的全部代码全选并删除,复制以下代码到该文档中:

<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>补充性描述</description>

</packer>

 

以此作为新模板,我们需要进一步修改如下语句:

1)<item id="12345678" name="大分类名称" />

StudioNeo添加物品菜单中,你会看到一群mod作者的名字(例如图中的“Blake”等),这个就是所谓“大分类名称”,该作者名下所有的mods都会自动归纳在此处。所以,你可以将它改为你的昵称,很快你也将出现在这个“名人堂”里面了!


“大分类名称”前面的“12345678”可改为任意八位数字,它决定了系统是把“大分类名称”相同的mods归在一人名下,还是仅仅视为同名的两人做的mods——换言之,这个八位数字对于每个作者都应当是唯一的,并且对于每个作者制作的mods而言都应当是相同的。

我们这里把它改为:

<item id="87654321" name="测试者" />

 

2)<item big-category="12345678" id="9999" name="次分类名称" />

这里面的“big-category”后面的八位数字,请修改为与之前的“大分类名称”的“id”一致。后面的“次分类名称”相当于给同一mod作者的不同mods作进一步细分,比如载具、怪兽、家具,等等。同样,StudioNeo是根据次分类的“id”数值(一般不超过八位数)来进行归类的,请保证同一作者的同类mod对应同一个“id”数值。

我们这里把它改为:

<item big-category="87654321" id="5566" name="测试道具" />

 

3)<item big-category="12345678" mid-category="9999" object="Prefab名称" name="Mod名字" />

此处的“big-category”和“mid-category”应分别修改同上面的“大分类名称”和“次分类名称”各自的“id”数值一致。

object”后面的文本应改为我们之前创建的Prefab的名称(不加格式后缀),即“door”。

Mod名字”请修改为你的这个mod最终要显示在StudioNeo中的物品名称,我们这里就改为“门”。

这段代码因此被修改为:

<item big-category="87654321" mid-category="5566" object="door" name="门" />

 

4)<guid>GUID</guid>

GUID,即“全局唯一标识符”(Globally Unique Identifier),每个GUID通常被写作一个32位的十六进制随机数值,作为网络的各个节点的唯一身份标识,保证节点之间相互区分。按Illusion公司的设计初衷,希望其mod和mod之间能够以这种正式的形式被全世界的同类游戏和工作室所区分。不过,我们这里不涉及将转换的mod对外发布,所以不必过度考虑它可能与世界另一个角落的mod重名的问题,可以姑且抛开这个规范,只要保证它在你自己的StudioNeo中是唯一的即可(PS:这里注意只能是英文和数字字符)。

我们这里把它改为:

<guid>To.Test.A.Door</guid>

 

5)<name>Mod名字</name>

将“Mod名字”改为你的这个mod最终要显示在StudioNeo中的物品名称,与之前一样。

我们这里把它改为:

<name>门</name>

 

6)<version>1.0.0</version>

这段指明你的mod的版本号。如果你对导出的mod不满意,需要再次修改,那么修改后记得将这里的版本号也进行增加,比如“1.0.1”等等。当你使用KKManager向HS2/AIS安装修改后的mod时,它会将其同已安装的同一GUID的mod之间作比对,若版本号高于后者,则覆盖安装,否则拒绝。

因为是初次导出这个mod,所以我们这里保持默认不变即可。

 

7)<author>模型原作者姓名</author>

请将这个原始3D模型的作者姓名写在此处。此处留空将报错。

我们这里把它改为door的原作者网名:

<author>witnessk</author>

 

8)<description>补充性描述</description>

未尽之处,可以在此书写。此处可以留空。

我们这里把它改为door模型的网址出处:

<description>https://skfb.ly/6VKAQ</description>

 

整理一下我们已修改的内容,我们得到了如下代码:

<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”图标,在Inspector窗口中找到“Build Mod”一栏,我们要准备正式导出mod了!


你可以先点击这栏右侧的“Test Mod”按钮,Modding Tool插件将自动检查你刚刚编写的mod.sxml脚本有无语法错误。若无问题,下面的“Issues”一栏(以及Unity界面左下角状态栏)会给出“This Mod XML is Valid.”


若发现了问题,那么此处将提示报错信息。例如,如下报错信息:

它表示脚本中名称为“Door”的这个资源在指定的文件夹中找不到。我们之前命名的Prefab是小写的“door”。这说明Unity对大小写敏感。改正后,报错解除。

 

现在我们回到“Build Mod”一栏,看到“Build Mod”按钮,若mod.sxml脚本无报错,则该按钮为绿色;若有报错,则该按钮为红色,按钮无功能。


在“Build Mod”按钮呈绿色状态下,按下。Modding Tool插件将自动编译打包我们之前操作的.prefab和mod.sxml等文件。随着“蹬楞”一声提示音,一个以GUID命名的.zipmod出现在了Hooh文件夹之中,这是你亲手导出的第一个StudioNeo mod,啪叽啪叽!


如果你觉得每次都要跑到Hooh文件夹里寻找导出的mod有点麻烦,找到“Build Mod”一栏里的“Output Directory”,在右侧的文本框里输入你想导出的路径即可。

比如,我每次都让它直接导出到桌面上:


五、安装和检查你的Mod

你可以将导出的.zipmod文件直接拖拽进mods文件夹中,也可以使用KKManager进行安装。


安装后,在“Sideloader Mods”面板的“Search”搜索框中输入“To.Test.A.Door”或者“门”等关键词,即可查找到我们的mod,右侧可以查看mod信息以及封装包内的文件,还可以禁用或删除它。


在安装工作结束后,启动StudioNeo。由于StudioNeo只在启动时一次性加载mods,因此在它启动后安装的mods不会被实时读取,需要重新启动。


StudioNeo中,我们可以通过添加物品菜单,找到作为大分类的“测试者”,依次点开,找到物品“门”。


我们也可以用物品搜索功能(快捷键Ctrl+F),输入关键字快速查找到我们的物品。


只需轻轻一点击,以前似乎触不可及的网络3D模型就这样添加进了场景中!是不是很酷!

六、调整你的Mod

为了教学过程尽可能简洁易懂,我没有把所有事项都放在上一章。这里集中讲解一些补充性内容。

1. 如何为添加预览图

StudioNeo的物品搜索功能的面板中,你会发现绝大多数物品都带有预览图片,一目了然,方便查找。


Modding Tool插件为我们提供了添加预览图的功能。

首先,我们要制作一张预览图,HS2/AIS默认mod预览图的要求是:文件格式为.png,图像大小为128px×128px。你可以任意制作一张图片并按此要求调整,不过我们这里介绍Modding Tool插件的预览图生成功能:点击顶端菜单栏“hooh Tools”选项,再选择“Show Window”。


在弹出的“hooh Tools”全功能窗口中选择“Mod Integration”面板。在确保你已在prefabs文件夹中创建好.prefab预制体文件的情况下,在“Thumbnail Generator”一栏中点击“Add Folder”按钮



此时,Modding Tool插件将自动读取prefabs文件夹中的所有预制体文件,并在“Add Folder”上方的“Target Models”中显示——这表明系统已选中这些预制体,随时可以为它们生成预览图等文件。


点击“Generate Thumbnails”按钮,“嗖”的一声,当前目录下生成了一个“thumbs”文件夹,内含一张根据模型文件缩略图自动生成的mod预览图.png文件。


接着,我们要让Modding Tool插件在生成.zipmod文件时,将这张预览图也收录进去,就必须通过修改文件名和mod.sxml脚本来引导插件读取预览图。

重新命名这个预览图,将它命名为如下形式:

大分类名称id-次分类名称id-mod名字

其中,“-”是英文输入法状态的减号;大分类名称id和次分类名称id必须是数字且必须为八位数,不够八位数的,数字前用“0”占位。

我们的房门mod的大分类名称id是87654321,次分类名称id是5566,mod名字是“门”,则我们将该预览图的文件名修改为:

87654321-00005566-

 

下一步,我们要修改mod.sxml脚本,添加如下语句到<bundles></bundles>标签之间:

<move auto-path="studiothumb" from="thumbs" filter=".+?\.png" />

这段脚本将引导插件自动读取thumbs文件夹下所有.png文件。由于我们已将预览图的文件名按要求修改,因而插件将根据文件名自动与相应的物品关联起来。由此,如果你的同一个.zipmod文件包含多个物品和多个预览图,插件也能够将它们一一对应。

需要注意,这个mod我们在此前已经生成过一次,版本号是1.0.0,我们要重新导出这个mod的话,就要增加版本号,比如1.0.1、1.1.0或者2.0.0等等比1.0.0更大的数字,否则Modding Tool插件会认为你没有改动mod,也就不会进行实质操作。我们这里修改<version></version>标签为:

<version>1.0.1</version>

 

总结一下,我们原来的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>


在每次导出mod之后,插件会自动在脚本中加入一行<last-build/>标签,记录最近一次mod导出是在什么时候、版本号几何。

此外,我们还需要保证thumbs文件夹与mod.sxml文件保持同层级的关系(例如:Assets/Door/thumbs; Assets/Door/mod.sxml),否则我们要么调整thumbs文件夹的位置,使两者同层级,要么就需修改mod.sxml的脚本。

 

最后,在保存脚本后,使用“Build Mod”功能重新导出.zipmod文件,再安装到StudioNeo中。这样我们在StudioNeo的搜索面板里就能够看到预览图,而不再是缺省的问号图标。


BTW,在默认设置下,Modding Tool插件生成的预览图是透明背景。若想更定制化地生成预览图,可以在“Thumbnail Generator”一栏的“Background Image”和“Foreground Image”中分别为预览图的背景和前景添加图片(分别点击右侧的圆圈来选择图片或直接拖拽图片到相应窗格里)。


不过,必须保证所使用的背景和前景图片处于允许读写状态,否则生成时会报错:选中图片,在Inspector窗口的“Advance”一栏,勾选“Read/Write Enabled”项目,再点击“Apply”应用更改即可。


2. 如何调整物品的初始姿态

我们有时会对模型不加调整就直接导出,进而相关物品导入到StudioNeo中的初始姿态不能令我们满意,每次都要在StudioNeo中手动调整,因此从源头上解决问题才能一劳永逸。

例如,在我们的房门模型的原始文件door.blend中,门是上下颠倒的,因而导出的mod再添加到StudioNeo中,必然也是颠倒的。每次添加这个物品后都必须让它沿Z轴旋转180度才恢复正常,这很麻烦。应当在Unity导出mod前就纠正这个姿态。


正如我们之前提到的,当模型被拖入场景中成为物体时,这个物体仍通过自动附加的Prefab预制体与模型文件相关联,导致不便直接修改场景中的物体。因此,在对任何场景中的物体进行调整时,建议都事先解决它与模型文件的关联:在Hierarchy窗口中,选中所需修改的物体,点击右键,在弹出菜单中选择“Unpack Prefab Completely”。这样。物体door目录的颜色由Prefab关联状态的蓝色,变成默认的灰色,此时可以对该物体任意进行包括调整位置、大小、材质等属性的修改,也可以增删其组成部件,而不会影响其原始模型文件。


BTW,点击物体目录前面的箭头图标,可以打开子目录,看到这个物体的全部组成部件。有些部件的层级关系比较复杂,不便通过鼠标点击一一展开,可以在选中目录后按快捷键“Alt+方向键→”展开当前目录中的全部子目录。


通过Scene视图可知,当前场景中的房门是上下颠倒的:


选中物体door,在Inspector窗口的“Transform”一栏中,将“Rotation”(旋转)的Z值由原来的“0”修改为“180”。由此,物体door沿Z轴旋转了180度(顺时针方向),物体朝向就显得正常了。


此外,还可以通过Transform栏目的另外两项“Position”(位置)和“Scale”(尺寸)来调整物体(及其组成部件)在场景中的位置和大小。例如,我们这里随意选中了其中一个门扇部件,把它的位置和大小进行了修改。最后导出到StudioNeo的物品就将是我们在下图场景中的效果。你可以调整Transform栏目的数值来精准调节,也可以通过工具栏的变换工具直接在Scene视图中用鼠标操作。


完成调整后,重新对物体door创建Prefab,并按之前我们所讲的流程,导出.zipmod文件再安装到StudioNeo即可。这里及下文将不再复述。

 

3. 如何调整物品操作轴的位置

StudioNeo中,我们利用操作轴(axis)在可视化控制物体的位置、方向和大小。不过,操作轴在物品中的位置有时会影响我们操作的效率。比如在下图中,房门物品的操作轴在底部边缘,导致我们在旋转它时摆动幅度过大,不便于我们在复杂场景中摆放它。或许,把操作轴的位置从底部改到中心或其它位置,更加便利。

 


我们导入到StudioNeo的物品的操作轴位置,等同于Unity场景中的物体的坐标轴位置,正如下图所示物体door在Unity中的坐标轴:


因此,只要修改Unity中物体door的坐标轴即可解决问题。

点击Scene视图右上角的方向杆,让视图旋转到合适的位置(也可右击方向杆通过弹出菜单调整),比如我们将视图移动到物体door的正面。双击Hierarchy窗口中的物体door目录,使它在Scene视图中置于正中心。 


在Hierarchy窗口中点击“Create”,进而点击“Create Empty”(创建空对象)。由此在Hierarchy窗口中创建了一个名为“GameObject”的空对象,我们随意将其重命名为“door-axis”。 


当我们选中door-axis时,可以这个空对象看到Scene视图里的坐标轴恰恰位于视图的中心。或者反过来说,新建的空对象的坐标轴总是被设置在其创建时视图的中心。


所以,我们只要把这个新建的空对象door-axis成为物体door的父级物体,就能够在中心位置的坐标轴上(间接地)操作物体door了。进而,把door-axis导出为mod,就能够实现我们在StudioNeo中物品操作轴位置的调整。

通过鼠标按住物体door目录,拖拽到空对象door-axis上,即可使物体door成为空对象door-aixs的子物体。然后,为door-axis创建Prefab,并令mod.sxml脚本中“object”指向的Prefab文件名与之一致,最后按流程导出.zipmod文件即可。 


瞧,房门物品在StudioNeo中的操作轴也相应改变了。


如果你不想把坐标轴调整到物体door的“正中心”,你可以在创建空对象之前调整Scene视图——总之,空对象的坐标轴总是在创建它时Scene视图的正中心,合理利用这个机制就是了。


当然,这种调整方法仍显粗放,毕竟手动调整Scene视图不甚精确。你可以在模型文件导入Unity前,通过Blender等3D建模软件来设置原点(origin)位置,原点的位置即导入Unity场景中物体坐标轴的位置。


4. 物品添加后什么也看不到


将物品添加到StudioNeo后,看不到物体本身,只是空有一个操作轴。 


原因可能有:

1)导出mod的流程操作有误,特别是在Unity修改过场景中物体前后,没有取消Prefab或没有重新创建Prefab,都可能导致物品添加后看不到,或是物品姿态与导出时的效果不符。

2)这个物品的操作轴并不在物品上。物品与操作轴之间存在很大距离,所以当你在StudioNeo的工作面板选中物品并按“Ctrl+F”将视图定位到物品时,只是看到了操作轴,物品本身可能在上下左右较远处。请尝试360度旋转视角找寻这个物品,或者返回Unity确认一下物体的坐标轴位置并酌情调整。

3)物品尺寸过小。太小的物品会看不到或不显示,请尝试在StudioNeo的工作面板中选中该物品,将它放大1000倍或以上,也可以在Unity中调整物体的“Scale”倍数。

 

5. 物品为何不受工作室灯光影响

物品添加到StudioNeo场景中,即便使用最高强度的全体光(或全体聚光灯、全体单点光),也无法使物品产生相应的光影效果。

例如,下图场景中使用了一个全体聚光灯,同时照射到人物和轮胎上,人物有光影效果,而轮胎却没有受到影响: 


问题在于轮胎物品(以及其它非角色的物品)在StudioNeo中属于“地图”,但在导出mod时,没有将它设置为“地图”的图层(layer)。

修改Unity中的物体的图层属性即可解决该问题。在Hierarchy窗口内选中已取消Prefab后的物体,在Inspector窗口的“Layer”项目中,点击下拉菜单的“11: Map”(地图)一项。 


在弹出的询问框中,选择“Yes, change children”,即可将该物体及其包含的全部子物体的图层都更改为地图层。


修改完成后的轮胎物品,于是能够正常接受光照影响了:


6. 明明没有光照,物品为何明亮

物品添加到StudioNeo场景中,发现即便把所有灯光都调暗,物品似乎仍然受到明显的光照,使场景的整体光影效果无法统一。这是因为我们获得的原始模型文件中,包含了灯光(light),不加修改地导出mod,必然也将灯光作为物体的一部分一并导出。因此,只需要在Unity的Hierarchy窗口中打开物体的层级目录,排查并酌情删除名称包含“light”“sun”等关键词的子物体即可。

 

藉由这个问题,我们反向思维——可以通过在Unity中为物体添加灯光的方式,让它在StudioNeo场景中自带发光效果。具体方法是上文的反向操作:在Hierarchy窗口中点击“Create”,选择“Light”,进而选择想要的灯光种类。


有关灯光的种类与选择,可参考下列文章:

https://blog.csdn.net/Aimyller/article/details/105313858

例如,我在一颗宝石内部加入了一个单点光/点光源(point light)并调整了发光强度和范围,下图是添加到StudioNeo后的效果。


7. 物品添加后无法调整工作室视图角度

有时出现这样的现象:将物品添加到StudioNeo场景之后,鼠标操作视图的功能几乎失灵了,而弃选该物品或选中其它物品后,视图操作似乎有恢复正常了。导致该现象的原因是:原始模型文件中的物体内包含了摄像机(camera),导致导出的mod物品添加到StudioNeo后与场景默认的视图摄像机操作冲突。解决办法是在Unity中排查和删除物体目录里带“camera”等关键词的子物体。

这种自带一个甚至多个摄像机的模型,在Sketchfab等网站上很常见,因为这些网站要求模型作者如此操作,以便网站系统自动生成动态、多视角的模型预览画面。

 


七、相关网站

l  Hooh’s Modding Tool
Hooh本人为Hooh’s Modding Tool插件编写的使用说明。
地址:https://hooh-hooah.github.io/

l  Hooh’s Workshop
Hooh在Patreon平台开设的个人主页,主要发布HS2/AIS的人物卡、mods、工作室插件等。如果你觉得Hooh’s Modding Tool插件很有帮助,请成为他的付费订阅会员以表支持吧!
地址:https://www.patreon.com/hooh_hooah

l  Illusion Soft
以Illusion公司主打游戏(HS、HS2、AIS、恋活、家族崩坏等)为主题,开设在Discord平台上的社区,内含海量免费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游戏大佬收集并定期发布的游戏升级包,内含各类插件、mods、人物卡等等。国内爱好者私下出售的中文版整合包有很多直接来自Better Repack,甚至游戏预载界面(InitSetting.exe)赫然写着“BetterRepack”字样。不过,把BetterRepack升级包直接安装在中文版整合包里可能有文件冲突等风险,导致游戏无法打开,请事先做好备份。
地址:https://www.patreon.com/BetterRepack;
https://sideload.betterrepack.com/download/AISHS2/

l  Bl@ke’s Ultra Universe
这是我的个人网站,目前页面还在制作中,所以网址暂时跳转到我在Pixiv平台的账号上。作为女奥特曼(ウルトラヒロイン)爱好者,我通过AIS制作了一些涩涩的插画和漫画,在此斗胆广告,欢迎大家访问!
地址:http://www.blatke.cc

Bl@ke小课堂:如何将3D模型导入HS2/AI少女工作室的评论 (共 条)

分享到微博请遵守国家法律