TOC#
0. 前言#
不务正业系列第一期(狗头),后面不鸽应该还会玩玩Unity游戏的逆向工程&插件开发。
不扯远,这次的动机很单纯,两年前忘了从哪收了几十个G的vmd资源一直晾在NAS上,刚好勾引了我的好奇心而已。让人忍不住想要翻翻里面看看都有些啥赛博垃圾!
内容以gilleco佬的整合包为基础,非该整合包的话问题也不大,只是要自己动手找找插件而已。
1. 打光篇#
CharaStudio的光源一共有两种,分别是地图光和人物光,默认情况下,地图光只会影响地图层的物品,人物光只会影响人物层的人物&物品。
一张表足以说明两类灯光的影响范围:
Map Light On | Map Light Off | |
---|---|---|
Chara Light On | ||
Chara Light Off |
细心的朋友就会发现,左边开了地图灯之后,人物的投影奇丑无比……这就是区分光源的一大问题,人物的阴影只会投影到人物层,并不会投影不会投影到地图层……所以在地图层的投影只会是一个模特形状的简单阴影……
如何解决?其实有两种方法,但都依赖StarPlugin里面的Light Settings插件:
- 把地图灯删掉,只用角色灯控制地图光和角色光
- 地图灯同时作用到角色层
1.1 单角色灯打光#
顾名思义,不用地图灯,只用角色灯打光。优点嘛,简单粗暴而且管用,地图光效跟角色能保持一致。缺点很明显,人物的打光方向不能跟镜头一块调整了。
方法如下:
- 工作面板–选中地图光(如图中的D-MODMAP)–取消勾选灯光on off
- 设置–角色灯光–勾上灯光on off,culling mask同时选上Chara跟Map
- 记得把下图的上锁状态点一下改成解锁状态,不然阴影方向会跟着镜头一块动。当然可以用这个方法先找好阴影角度再解锁
1.2 地图灯同时作用到角色层#
先说优点,两类光源都可以独立调整设置,包括方向和颜色。
再说缺点,用这种方法,会让角色同时受到2个光源照射,角色灯要亮于地图灯,只有这种情况下角色灯才会生效,否则角色灯就无效了,角色就只会收地图灯影响。若要给场景导入新物品,要手动把层级挪到地图层。
方法跟上面类似:
- 工作面板–选中地图光–勾上灯光on off,culling mask同时选上Chara跟Map,未启用角色灯时的效果如下图所示,角色依然会受地图灯影响
- 设置–角色灯光–勾上灯光on off,culling mask仅选Chara
在锁定状态下,挪动镜头可以看到反光会跟镜头走,阴影方向不变
怎么打光看个人喜好吧……我对正面补光是来之不拒的。不过用这种方法要注意,多人的时候,一个人的阴影会投影到另一个人身上,这种情况下,除非关掉阴影,不然还是固定位置打光比较合适
1.3 额外话题#
1.3.1 物品的层级归属#
大部分通过物品的形式加载到场景的地图(上图的加载形式),都默认处于角色层,只会受角色灯的影响,需要用下面的方式把地图类物品的层级从地图层改成地图层:选中导入的物品,点layer edit,点完后左上角会告诉你它改到哪层了,显示Map Layer就对了。
有部分物品改不了的,那就只能用第一种打光的方法了……
1.3.2 自带地图光源的地图#
跟1.1&1.2类似,用Light Settings调地图灯的影响层就好,部分地图可以在左下角的Map按钮里调昼夜光照,这里就不贴图了。
1.3.3 阴影质量设置#
感觉阴影比较糊的话,可以进画面效果里的Shadow Settings调,拉满就完事了
2. mmdd插件篇#
2.1 萌新也懂的如何打开mmdd#
跟着下面的步骤走就行了:
- 从左边栏点VNGE
- 点All games
- 点Utilities
- 点MMD Director,进入这个界面就可以加mmd资产&播放等操作了
- MMD资产主要有两类,vmd:包括躯体动作、脸部动作、镜头,wav就是bgm了
一套完整的资产包括下图4项:motion(躯体动作)、morph(脸部蒙皮动作)、camera(镜头)、sound(音乐),导入完后点Start就可以了
2.2 mmdd设置#
上面是我用的设置,真·仅供参考,内存分配讲的就是一个量大管饱,实际用的话,双人情况下会占掉将近30G内存:
内存不够的情况下,可以在Garbage size limit这里填最大的内存,比如16G。这样可能会在播放的中途会因GC卡顿一会,看怎么取舍呗,观影流畅度大于一切嘛。
如果不追求实时流畅度,只追求录制不掉帧的话,可以把Play timer从realtime改回For Record,这样掉帧的时候不会跳帧。举个栗子,假如在第3秒的时候卡了1秒,那么在现实中的第4秒的时候,放的还是第3秒的动作帧,不会因为卡顿直接跳到第4秒的动作。
3. 强迫症的穿模调整篇#
3.1 物理效果穿模#
先声明一下,本人没有强迫症,初衷也很单纯,只是过一遍动作数据而已……这点内容就算是顺带的吧,至少能稍微(大幅)提高观影体验。长发长裙的角色就不适合跳mmd(震怒),如果有插件能用4090那90%的空闲GPU算力去折腾布料解算的话就好了。
调整点主要是头发和裙子两部分的物理碰撞效果,每部分怎么调后面细说。先来一个对比片段,左边是调整过的,右边是原模型,游戏内直接用obs录的屏。没调整的情况下,角色背面的3撮毛我都是直接隐藏掉的……穿模也就罢了,一直卡在前面太出戏了……
3.1.1 衣服调整#
参考BV1sM4y1y7bU调整,能简单解决80%的穿模问题……原理挺简单,不管物理效果如何,腿部动了,衣服节点就跟着动。方法嘛,就是用node constraint绑定dynamic bone的rotation到额外的节点。以右半身为例,步骤如下:
- 导入一个物体(比如一个白球)
- 左下角点操作轴调整位置到右腿根部
- 把球绑定到右大腿骨骼,这样球就能跟着右腿一块动了
- 重复step 1和2,把另外一个球放到裙边缘外部(球我建了个文件夹扔里面了)
- 绑定节点父子级约束:点左边的“N”,选中腿部的球,点set as parent,再选中裙边的球,点set as child
- 在link position和link rotation处,依次先点上Use current,再依次勾上
- 看到这样,一条节点约束规则就算是搞定了
- 接着就是绑定裙边的球到裙子的dynamic bone节点,在这之前首先要看裙子的dynamic bone:选中人物,点左下KKPE,窗口选Adv mode,在弹窗里选Dynamic bones一栏,左边勾上show all,然后找到人物裙子下摆的点,选中的点会用蓝色标上,拉一下dynamic bones那栏左侧的列表,显示为蓝色字体的就是对应的节点名(我这人物卡从人物正前方按顺时针依次是cf_j_sk_00_00一直到cf_j_sk_07_00,一共8个)
- 绑定裙边的球与衣服dynamic bone节点:点左下角的N打开界面,右边面板选裙边的球,点set as parent,再在右边面板选中人物,输入上一步得到的几个dynamic bone名,在结果栏点中后点set as child,再在上方link rotation处先点use current再勾上,最后点add new。这样算是绑好一个dynamic bone节点
- 重复第9步绑定剩下的dynamic bone节点,一般右腿只绑定右边的3个节点(中间2个节点我不会绑上),得到这4条规则
- 重复第1-10步对称处理左半边,得到另外的4条规则
- 在面板把新增的几个球藏起来
- 最后重新进KKPE的dynamic bones,调大裙子的几个节点的碰撞半径,基本就完工了
虽然但是,大腿和腰部装饰还是会穿模一个,解决大腿穿模,身上的饰品该穿模还是会穿模,可能这就是鱼和熊掌吧……
3.1.2 头发调整#
我目前的做法是跟裙子绑定类似的,新增两个外部节点,一个绑到头中央,另外一个放到腰后,同样绑定position和rotation,再将腰后的那个球作为parent,绑定头发的dynamic bone的rotation。然后再稍微调大头发的碰撞半径。
但是,这样也解决不了头发一不留神就会跑到身前去的问题……这个嘛,目前是通过绑定额外的碰撞球解决的,思路很简单,把人物前方都设置成头发的禁飞区,跑到前方的头发会弹回后面:
- 导入额外的碰撞球:左边面板点Find,输入j694,找到Dynamic bone collider,点一下就能导入到场景
- 将碰撞球绑定到人物上,我选的是下面几个位置
- 在KKPE的Adv mode里,选上新增的collider,就可以改碰撞体的参数,主要是改碰撞范围和节点,节点这里只勾上头发的几个节点就好(注意会有重名节点,可以依次勾上看看有没有效果)
- 剩下的一些参数,仅供参考……绑定在腰后的那个碰撞体只是为了防止跟腰部饰品穿模而已,虽然效果超一般
头发的约束偶尔也会因为头部动作幅度较大出现新的穿模问题:
这种情况可以尝试禁用对应的节点绑定规则,或许会好一点,但大部分情况下,应该是加上绑定会好一点至少头发不会乱飘
3.1.3 最终效果#
视频是固定120 fps录的。效果我能给个80分吧,还保留一点穿模证明这还是koikatsu……
既然是完整版的,老规矩打上借物表:
- stage: Project DIVA A thousand year solo
- model: 我也不知道从哪来的……
- music: 有頂天ビバーチェ by あやぽんず & ゆいこんぬ
- 舞蹈源: sm23600484 by やっこ
- motion: sm24472026 by apr
- camera: sm24472026 by Rui
题外话:还以为是chrome还是cloudflare有啥bug,数据流走Range请求之后,http响应头的content-length和content-range丢了,连拿个metadata都要下载整个文件……一查才发现是cdn的cache问题……
3.2 动作穿模#
如下面这种穿模,就只能通过改动作解决了,没啥好的方法,只能手调关键帧动作了,在mmdd界面上点G可以显示骨骼位置
点motion的Keys进motion编辑页面(morph和camera同理),先在左边选中要调的IK节点(比如右手腕),然后点白色的关键帧节点,最后改数据就好
改完后可以看到对应骨骼动作就调整过了,反正就义眼盯帧嘛,体力活,反正我是做不来的……没有这强迫症……改完后点Export导出数据
其实还有个比较偷懒的方法:改骨骼定义的配置。在load vmd file的时候,选完文件后点choose bone define
然后选一个合适的骨骼配置,按这骨骼导入motion后不穿模就行,这样就不需要逐帧调动作了
不过,这种美梦是有点不太现实,大概率就是选完所有骨骼配置,都发现不太能解决动作穿模的问题(手动狗头),极大情况下只能减少出现的情况,不能避免……
所以骨骼配置or动作,选一个喜欢的下手改就行,但这已经算是进阶篇的话题了,不是这篇浅入浅出的教程的内容了,这里先把解题思路抛出来就算结束了。至于后面会不会有进阶篇,那只能说,大概率不会有,因为有个悖论是解决不了的:既然要追求完美了,那么为什么要局限于koikatsu这游戏呢……
4. 画面效果篇#
这一篇内容跟个人审美有极大关联,所以主观含量会很高……这里就只按我LR后期思路简单讲一下
地图灯光和画面效果,可以看之前的打光篇,其实没怎么调整过,阴影那一块可以调调
画面效果主要依赖PostProcessingEffect这个插件,按F1然后搜post就能搜得到这个插件的配置,纯依据个人喜好调。目前开的有Ambient Occulusion(环境光遮蔽),Anti Aliasing(抗锯齿),Bloom(高光效果),Chromatic Aberration(色差),Sobel Color Outline(色彩轮廓)这几项
环境光遮蔽我个人没感觉出有啥明显的效果,抗锯齿选SMAA
Bloom看场景,比如樱花下可以把高光颜色改粉一点,色差开不开看个人喜好(我感觉挺炫的,开5%就足够了)
色彩轮廓目前开了只是为了稍微增加一下画面的对比度
如果追求极致情调的话,其实可以开一下Depth of Field(景深)和Posterize(色调分离),这样三渲二效果会强一些,在镜头拉近的时候会有种新海诚滤镜的美,画面也不算太脏……不过放vmd的话建议景深保持关上,不然会经常出现切个镜头整个画面都糊掉了的情况……
其他的话,我个人感觉没啥必要,简单介绍下效果:
- Color Grading:跟LR色调曲线的功能类似,但比较鸡肋,得用比较诡异(反直觉)的方法才能实现想到的效果,比如下面的图拉了下阴影&黑色色阶的亮度
- Customizable Outline:除非你要整比较特别的画面效果(比如轮廓描边),不然不建议开
- Fog(雾):反正我不会开……
- Grain(噪点):反正我也不会开……
- Lens distortion(镜头畸变):除非想不开想手动调鱼眼效果,不然也不会开……但试了一下也调不出来这效果……
- Motion blur(动态模糊):正常情况下不开,开了该掉帧还是会掉帧……
- Vignette(晕影):降低边缘亮度(大光圈镜头的通病,边缘进光量比中间低所以会暗一点),反正我还是不会开……