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

【歌姬计划MEGA39+】导入Comfy制作的自制谱 ② 补充

2022-09-09 17:28 作者:萌新安定  | 我要投稿

2023.11.24:

增加如何使用Krita制作图标的方法,如果你找不到Photoshop我现在更建议使用Krita,Krita比GIMP小巧很多,也有类似PS的剪贴蒙版的功能

这篇专栏会补充②里面没有说明的添加小图标,已经转换xml格式的spr_db时可能遇到的坑要怎么判断

添加小图标

所需图片处理工具:Krita或者GIMP或者Photoshop(CS6版本就行,不一定非要最新的版本)

Photoshop:自己找,找不到就老实用Krita或者GIMP

Krita:https://krita.org/zh/download-zh/

GIMP:https://www.gimp.org/downloads/

导出小图标素材

首先使用 MikuMikuModel 打开MEGA39+的小图标文件(spr_sel_pvtmb.farc)

(网盘里也会有份简中版的小图标文件)

在 Textures 里面选一张图(建议使用这种有九个格子的,方便以后自己要加新歌的时候直接在一张图里塞九个),然后右键选择 export flipped 选择素材图将其导出并上下翻转

(如果你使用的 Miku Miku Model 是旧版可能就只有 export 选项,这个不会有太大影响,你只需要在 GIMP/Photoshop 里面将图片垂直翻转即可)

接下来就需要对素材进行编辑,我会分别说明GIMP和Photoshop需要怎么操作

修改小图标原素材图

Photoshop

将导出的素材图从photoshop里面打开(拖入也可以打开,不过cs6版本因为系统兼容问题,不能拖入导入)

然后选择 置入 将你打算用来制作小图标的图导入(也可以直接拖入窗口导入,但cs6版本同样由于兼容性问题,win10不能拖入导入)

按下 保持长宽比 按钮激活,将图片缩放到一个合适的大小(可以像这样放到小图标一侧做参考对比)

调整好后选择工具栏的 鼠标图样 的按钮切换到 移动工具 导入小图标素材,随后在弹出的窗口里选择 置入

在 图层 区找到我们导入的素材右键,选择 栅栏化图层 以便于我们直接使用 剪贴蒙版

接着右键选择 创建剪贴蒙版 ,素材就会自动根据透明区裁剪素材(如图)

选中我们导入的小图标素材所在的图层,调整小图标位置

调整好后选中素材所在图层,利用 矩形选择工具 将不需要的部分删除

注意:一定要确认选择的是小图标素材所在的图层再进行操作

最后选择 垂直翻转画布 ,将修改好的小图标保存为png文件

Krita:

在Krita里面打开导出的图,然后将要制作小图标的图拖进窗口,选择 插入为 - 新图层


选中我们要制作小图标的图层,利用图层里面的缩放图层调整大小,这里不需要根据图标位置缩放,只是为了更方便我们后面的操作先提前缩小一点,可以像gif里面一样把最大的值调整为100%缩放

选中所有图层,使用 图层编组 将其放到同一个图层组里面

选择我们导入的小图标模板,在右键菜单选择 透明度通道操作→ 拆分透明度到蒙版 拆分出透明度蒙版,然后将透明度蒙版放到图层组最下方

选择我们导入的小图标图层,调整位置和大小到你打算使用的小图标位置

需注意调整图层位置要使用 移动图层 工具

使用 选区 工具,将多余的地方删除

最后在上方的 图形 菜单 垂直翻转图xiang,然后保存为PNG即可

GIMP:

由于 GIMP 没有Photoshop 的 剪贴蒙版 功能,操作起来会相对麻烦点

首先在GIMP中打开导出的图,然后将做小图标的图拖进窗口导入

右键要制作成小图标的图层,选择 缩放图层 调整图层图片大小,设置好数值后按下 缩放 就能看到缩放后的效果。如果觉得缩的太小可以按下 Ctrl + Z 撤销缩放操作

如果你觉得填像素值不够直观也可以选择 percent 修改为百分比缩放模式调整

缩放完后我们先关闭素材图层显示便于在原素材图上画一个新的选区,按下眼睛按键即可关闭图层显示

右键我们导出的素材图所在图层,选择 添加图层蒙版

设置初始化图层蒙版为 图层的 Alpha 通道然后点击添加,这样GIMP就会根据哪些区域是透明区域创建一个黑白的蒙版

你也可以右键图层选择 显示图层蒙版 查看

关闭 显示图层蒙版 ,使用 模糊选择 工具点击你要把小图标放到的格子那创建一个选区

注意:一定要在选中了 图层蒙版(也就是选中这个图层多出来黑白部分) 后再使用 模糊选择 工具

恢复小图标素材图层显示,点击 移动工具 按钮切换状态,根据选区框调整小图标位置

右键 小图标素材 图层,选择 创建图层蒙版,然后设置为 选区 后 点击添加

效果如下

最后 竖直翻转 后保存为PNG格式

这里按了导出后会让你选一些选项,不用管直接选导出即可

至此我们的小图标的素材图就完成了

将新的小图标添加回Frac

回到我们的 MikuMikuModel,打开spr_sel_pvtmb.farc

首先添加一个新的Texture,右键 Texture Set 选择Import导入我们刚制作好的修改版小图标素材

根据 Texture Set 里面的名字规律修改新导入的图的Name(应该不难看懂吧,如图)

这样我们就成功导入了素材图,接下来我们需要为我们的自制谱添加对应的小图标 精灵,也就是 sprite

往上翻对着bin右键选择 Add dummy sprite(添加空白的精灵)添加一个新的sprite

新添加的sprite名字默认都是dummy,应该都不难找到

根据你的自制谱的id修改name,比如我的id是998,就需要把Name改名为998。注意如果是两位数应该写为0xx这样子的格式,一位数则是00x

接着修改 Texture index 和 Resolution mode,第二个和前面一样直接改成 HDTV1080,第一个则是根据你新导入的 Texture 在 Texture set 里面是第几张来决定,例如我导入的图按顺序是第五张,也就是 5 - 1 = 4,这里要填 4

X 和 Y 代表 Sprite 要引用 Texture 的部分图片的左上角坐标,这个先不管

Width 和 Height 代表 sprite 引用的图片部分的长宽,小图标默认都是 Width 128 ,Height 64

填好后切换下 sprite 后重新查看,就可以看见我们新加的 sprite 已经可以显示图片了

回到 X 和 Y 参数,我们可以考虑抄官方的数据来定位,这也是为什么我推荐选择这种 3 * 3 方格的素材图的原因:可以用来一次性在一个Texurte 里面导入 9 个新的小图标,要记住这9个图标的坐标也不会很难记忆

这九个图标的 X 和 Y起始规律如下:

第一行的 Y 坐标是 2,下一行基于上一行的 Y 坐标加 68,也就是说第二行 Y 坐标是 70,第三行 Y 坐标是 138

第一列的 X 坐标是2,下一列基于上一列的 X 坐标加 132,也就是说第二列 X 坐标是 134,第三列 X 坐标是 266

这里我选择的位置是第一行 第一列,所以这里 X 和 Y 都填的 2

最后保存,Frac部分修改就完成了

题外话:如果你想添加多个图标,可以考虑在一个 Texture 里面放多个小图标,然后在Script里引用对应的Texture,设置好 X 和 Y 的起始坐标即可

编写mod_spr_db添加数据到数据库

首先使用 DatabaseConverter 转换mega39+的spr_db,然后右键编辑搜索 SPR_SEL_PVTMB ,将与 SPR_SEL_PVTMB 所在的  <SpriteSetInfo> 全部都复制下来

如果你觉得这么多要寻找结尾很麻烦,并且你使用的是我在前面提过的三个编辑器中的任意一个,可以先将其折叠,然后再复制

vscode是这样子复制

notepad++则是这样子(注意光标必须在下一行起始位置往上拉)

将这部分粘贴到mod_pv_db里面,注意要粘贴到 <SpriteSets> 标签里面,或者粘贴到任意一个 </SpriteSetInfo> 标签下面(因为 <SpriteSetInfo> 标签在我们之前写的时候是一定会在 <SpriteSets> 标签里面的,可以降低错误率)

在 </Sprites> 标签里面给我们新加的小图标添加信息,复制一份 <Sprites> 标签里面的  <SpriteInfo> 标签粘贴到后面准备修改

现在开始填写新添加的 sprite 信息:

<Id>:sprite 编号,只要不和其他 db 里面的 Id 重复你想写多少都可以(不过不能超过2,147,483,647)。

<Name>: sprite 的名字,具体是怎么写的这里不详细解释,你只需要记住你添加的小图标 sprite 名字的数字是多少,然后修改 <Name> 标签里面的数字即可(比如我的是998,这里 <Name> 我就改成了 SPR_SEL_PVTMB_998)

<Index>:索引,不用管具体是啥意思,按前面的数字顺序 +1 写就行了,同样的<Index>里面的数值也不能重复

修改完后大概是这样子:

这样子sprite的数据信息就添加好了

接下来添加 Texture 的数据信息,与 Sprites 类似,在</Textures> 里面复制一段 <SpriteTextureInfo> 标签的内容为添加 Texture 数据信息做准备

现在开始填写新添加的 Texture 信息:

<Id>:Texture 编号,只要不和其他 db 里面的 Id 重复你想写多少都可以(不过不能超过2,147,483,647)。

<Name>: Texture 的名字,如果你有好好按我教程写的法子命名,那就直接根据名字差异修改最后面的数字即可,比如教程里新加的 Texture 最后的数字是 4,就把最后面的 3 改成 4 即可

<Index>:索引,不用管具体是啥意思,按前面的数字顺序 +1 写就行了,同样的<Index>里面的数值也不能重复

修改完后大概是这样子:

最后保存修改好的xml,使用 DatabaseConverter 转换回去,小图标就添加好了

扩展:怎么理解DatabaseConverter的报错信息

有时候可能会遇见转换xml回去的时候发现 DatabaseConverter 只闪了一下黑窗就关闭了,同时也没生成bin文件

这种情况极有可能是你写的db信息缺失了什么 结束标签,但因为黑窗关的太快,所以我们可以利用批处理弄个简易的 “DEBUG” 模式出来

首先在你的 DatabaseConverter 文件夹里创建一个新的txt文件打开编辑,将下面的内容复制进去:

cd /d %~dp0

DatabaseConverter.exe %1

pause

保存,然后将txt后缀名改为bat,这样子一个简易的 “DEBUG” 模式就弄出来了

现在把报错的xml文件拖到bat上面转换看看(这里我随便改了个肯定会报错的xml出来做参考)

注意看 异常 那一行:他写着 开始标记 与 结束标记 不匹配,说明我们可能复制漏了啥

我们使用编辑器转到报错显示的1433行看看:

可以看到这里很明显少了 <SpriteTextureInfo> 的结束标签 <\SpriteTextureInfo>,我们把它添加回去保存就能处理好这个问题(如图)

以上只是异常情况中的一种,实际情况需要对db有一定熟练度才能更准确的判断


【歌姬计划MEGA39+】导入Comfy制作的自制谱 ② 补充的评论 (共 条)

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