嗨,五一假期接近尾声,大家有什么收获吗~
上一期内容我们讲了从解包到提取live2D的曲折经历,这一期Live2D的内容我简单的讲一讲这几天入门Live2DViewerEX实现游戏效果的经历,从模仿到创新的过程~我的经验希望可以帮到想要DIY桌宠的XD们!
这一期是还原篇!主要是为了还原游戏中的功能而生~
在开始介绍软件之前我们简单的回顾一下《不双x就去世》游戏本体内桌宠的效果
1.待机文本:顾名思义,就是没有触摸互动时桌宠自然说的文本,示例如下
待机文本
2.触摸互动:也很好理解,就是点击特定区域时角色做出的动作、文本、表情、语音等等,在本游戏中只有动作和文本。
触摸文本
3.回答互动文本:有一些文本可以互动选项作答,如下
选择母文本
选择子文本
OK!既然了解到一共有三种类型需要还原,那我们不妨转步Live2DViewerEX,点击启动会得到以下画面~
steam启动选项
Live2DViewerEX:软件主程序,可以浏览创意工坊下载喜欢的桌宠等等,这一部分我们不使用这一模块。
EX工作室:本期的主要程序,用于编辑和发布桌宠,功能还是比较强大的,并且易于上手~
以上便是EX工作室的UI画面,我们这一次使用的是Live2DCubism制作的模型,所以选择【Live2D编辑器】~
会有如下提示,导入MOC或Json文件/选择模型文件夹
到了这一步我们不妨简单的分析一下Live2D文件夹中出现的那些文件格式的含义。
.moc3
.moc3:这是我们上一期花了九牛二虎之力获得的主模型文件,地位相当于建模中的模型本身。
.model3.json文件部分预览
.model3.json:用于说明其余部分的相对路径,相当于要找一个电脑中的文件,必须要知道路径,比如Steam.exe位于D:/STEAM/steam.exe,只要告诉别人这个路径别人就可以找到这个文件,而这个原生的.model3.json就相当于让“读取器”知道那些关键的部件都在什么地方。
.physics.json:用于赋予模型部件物理效果,比如小仙姑的头发、衣服、丝带、穗子等等就应该适当随风飘动,显然这是还原效果非常关键的一个部分。
.cdi3.json:用于分层后部件分块、分组、分区,方便后续管理与编辑。
除此之外还可能有.pose3.json、.exp3.json等文件,根据字面意思分别指的是姿势、表情文件,《双修》游戏模型比较简单,其内没有这些文件,所以暂时不做赘述。
——————————————————————
说完这些,我们回到EX界面,现在便明白了,若读取.moc3本质上读取的是模型本身,读取model3.json读取的是路径指示的所有文件,而文件夹顾名思义就是读取文件夹所有的程序,但是比较蠢有时候读取不出画面
所以我在这里建议大家直接读取.model3.json文件并且在其上面修改,可以省去选择挂载程序的过程。
读取后我得到了以下画面
左边的意义都很显然,值得一提的是Ctrl+拖动可以移动模型,但仅限于EX内编辑,在桌面上是不可以的!
关键的是右边部分,点击motion文件便可以预览动画~
摸头动画~
摸完之后变成了游戏内默认的待机动作
于此,我遇到了编辑中的第一个问题
可为什么刚进入读取的时候并不是这个姿势呢?
经过之后的学习我得到的答案是:这个模型并没有设置”Start动作“,我猜想制作人设计上的互动都是在Unity开发中赋予的,而并非集成在Live2D的(至少我并没有找到类似包含motion分配的.json),关于Start动作我会在后文细细解释。
目前情况的GIF动画
(上图是一个GIF文件,如果看不到可以点击查看原图~)
就此我由发现了一个问题,我如今的模型是如图所示的,游戏中的模型是这样的,细心的你是否发现了区别呢?
游戏中的效果
没错差距正是手臂衣服四肢部件的摆动~
而到这就不得不开始配置.json文件了,我们点击右边的“配置文件”,再点击“编辑”,由此我们进入了这么一个界面
选择【控制器】一栏,得到如下画面,我用红框框出了我要细说的几个部分
Controller面板
鼠标追踪:默认打开 涉及鼠标视线跟随,很多模型都有把头朝向鼠标的设计,打开后便可以实现,但是Live2DViewerEX默认情况下是[点击跟随]而非一直跟随。 【建议开启】
眨眼:默认打开 首先要确定原模型的待机动作是否包含眨眼,之后再决定是否要打开眨眼。但根据我的经验,打开后可以让眨眼更加自然,比方说打开后我选取了眨眼间隔的样本,分别大约是4s,7s,6s,这样无规则的交错我认为可以让模型更加写实一些,不过偶尔会遇到眨眼两下的现象。【按需开启】
自动呼吸:默认打开 让身体各部件出现起伏,模仿呼吸的起伏。 【建议开启】
小幅度动作:默认打开 使得模型身体几乎不起伏,发丝飘带等等都不会飘动。 【建议关闭】
修改后模型的动作就和游戏中待机一模一样了!问题解决!终于可以开始还原互动了~
最重要的一部分来了!
点击动作一栏:
【动作组】相当于动作的一个集合,相当于文件夹;
【动作】相当于其中的文件;
这两个都很重要,先来讲讲动作组,点击加号-预设,会看到以下几类预设种类:
分别是Idle、Tap、TapArea、Start、Shake、Tick、Leave;
官方对此的描述是这样的:
提醒一件事:预设不可以改名!不可以改名!不可以改名!改名就会失去功能!除非是表内的格式
根据上手体验下来最重要的三个预设是Start(启动动画)、Idle(待机动画)和Tick(定时播片),我们先创造一个Start动作组,可以看到下面有一个“层级”
什么是“层级”?
不妨我们把其理解为”时间“,解释为”同一个时间下不能发生两个事情“,如果想同时发生两件事,要把事件AB分开在不同时间激活。或许这个比喻并非特别准确,但可以协助理解。本篇中我们不会用到这个层级来做分层操作。
我们新建了一个待机动作,并将其与stand1动作绑定起来,这样在打开模型的时候就会运行这个动作
但是!如果你没有勾选【动作循环】,那么当这个动作播放完之后会停格在最后一帧(所以不会回到那个叉腰的模型动作)
有心的读者可能会想,只要勾选start循环就能实现待机动画,那么Idle预设存在的意义是什么呢?
答案是Idle中的文件会自动衔接在任何动作结束之后;而start只是在开启时不断循环,当动作结束后便不会再运行,会停格在那个动作的最后一帧。
(Q.Start、Idle如果使用的是同一个动作,Start动作组是否有必要存在? A.就我个人认为,没必要)
接下来我们讲一下”Tick预设“,本质上是一个到时间就播放动画的预设,默认间隔是1分钟,可以通过TickX(tick_x)的办法修改这个间隔。比如Tick6就是六分钟一播。
(官方的描述是”X处填写数字,范围1-60对于同时符合条件的(如第2分钟的Tick1和Tick2)随机选择一个事件进行触发“,所以我们可以通过新建两个X不同的tick动作组来实现不规则时间的说话,可以让角色的说话更加自然)(我的设想中两组的X为质数就可以让随机度达到最高,比如3/5,具体的可以开动脑筋自己研究)
显然,可以用这个预设来实现角色待机时的自言自语,
吗?
不知道大家是否想过,游戏中待机是会出现不同文本的,因此我们我们新建三个对应待机动作STAND1、2、3作为事件。
位于Tick动作组下的动作会【随机】挑选一个播放,但我们有没有办法增加某一个动作出现的频率呢?容我向你介绍【比重】功能
我个人更愿意将其理解为”权重“,但是无伤大雅,这个数字可以在1-999中修改,比如待机1的比重为1、待机2的比重为2、待机3的比重为3,那么三者的概率分别为1/6、2/6、3/6,还是很好理解的,如果你更偏向于想看到某一个动画,不妨将其比重拉高,提高其出现的概率。
我个人选择不修改比重,让其随机生成。
那么该如何还原游戏中那些文本呢?我们只需要在文本框内填入想说的话,他就会在执行动作的时候播放这句话(可以用鼠标拖拽这个文本框的位置,值得一提的是桌面上的这个文本框出现的位置是绝对位置,不会随着模型的移动而移动)
到这里我们就已经完成第一步”待机文本“的还原了~咱们趁热打铁完成触摸反馈!
制作人已经预设了几个触摸区域,我们回到动作组界面选择TapArea
为什么没有可选的点击区域???
因为点击区域必须有命名,在上上张图就有写到 ”名称【必须】“,只有给了名字这个点击区域才能被引用,才能生效。
按照上面的办法,这样就可以实现点击文本+动画了!
【值得一提的是,如果文本很长但是持续时间很短,可以修改文本时长,文本时长(文本持续时长)的单位是毫秒(1秒=1000毫秒)】
同样的有一种办法,也可以实现点击互动,并且我更建议大家使用我接下来说的办法。
建立一个【没有预设】的动作组,加入你想要的触摸动画+文本
”TapArea“办法只要触摸就会反馈,而”点击时动作-无预设动作组"并不会受限于点击某个区域才发生,比如你想要点击不同区域但想前往同动作组,这样就可以省下很多功夫,而且只要选择整个动作组的效果是和前者一模一样的,唯一的问题是如果修改了动作组的名字要重新绑定。(当然仁者见仁智者见智,每个人的思考逻辑不同,只要结果相同就是对的。)
最后就是文本互动了!
游戏内有这样的互动按钮,要你选择一个选项给出不同的结果。
比如我选择游戏中一个最复杂的互动,我用流程图给各位写一下
其中粉红色为小仙姑的台词,绿色的是主角的台词
于是我们要开始调用【选择项】,看图就可以理解
我们在这里引入一个【优先度】的概念,数值为2-9,注意是2-9,就算输入0、1都会变成默认的2,低优先度的行为不能打断,举个例子,
默认情况下idle为2,触摸也为2,触摸动作的开始打断了正在进行的待机动画。
一般情况下选择按钮都可以立刻中断当下动作,前往选择按钮指示的动作,但是当母事件的优先度大于选择事件时,选择将无法打断,就算勾选了【可被中断】也会继续。
什么情况下需要勾选可被打断呢?
我认为是触摸动作和文本,触摸一次后要看完动画才能再点让人觉得有点迟钝,当然具体情况具体分析~
(一般情况下如果想缩短动作持续时间可以修改【动作时长】来实现)
什么情况下不能勾选可被打断呢?
当优先度相同的特定互动事件发生的情况下。
根据实验:
当事件A优先度小于B时,不论B是否勾选,A都无法打断B;
当事件A优先度等于B时,B只有勾选【可被打断】,A才可以打断B;
当事件A优先度大于B时,不论B是否勾选,A都可以打断B
在A是B的选项的情况下:
当事件A优先度小于B时,不论B是否勾选,A都可以打断B;
当事件A优先度等于B时,不论B是否勾选,A都可以打断B;
当事件A优先度大于B时,不论B是否勾选,A都可以打断B;
得知如下信息:
1.是否勾选【可被打断】只影响{同}优先度的事件(优先度9除外);
2.选择项优先度永远最高,且不受任何影响,点击即切换
(笔者编写本篇的时候刚巧碰见一个问题,所有互动全部失灵,只有调到优先9才可以用,触摸后又可以使用了,这就不得不提到我自己的架构了,当时没有采用idle做待机,而是start循环,并且把所有事件的下一项都改成了start,莫名的调试之后得到了解决,我将这个问题归于错误的架构逻辑和滥用优先度,所以请不要滥用优先度,有可能导致意想不到的后果。)
碍于篇幅,这一篇只能讲这么多了,都是一些入门难度的了解和宝贵(?)的经验,但是读到这里你就可以还原游戏内90%效果,并且可以自己创新加入要素,包括我V1.2录入的109支签也是通过以上流程完成的。
下一篇开始要把(稍微有点)难的端上来了!包括if/elif的实现、浮点变量实战、引入布尔变量的思路、用流程图和Python语法优化自己的编程思路,主要是一些思路优化和深入使用,还是比较需要脑子和精力的,期待一下吧!
最后简单提一下我对live2D领域探索的体验,我认为其入门简单(不包括美术部分),稍微学习就可以上手创造很多东西,很有成就感,有点类似于我学Python和blender,非常鼓励大家当作乐趣入坑哇~
本期封面
都看到这了点个赞吧~