目录
大家好,我是阿赵。
之前学习了StableDiffusion的基础用法,那么接下来就是要考虑怎样把它变作生产力。
这一篇文章主要是讲怎样通过StableDiffusion来生成同一个角色不同的表情。
一、 生成基础图片
这一步其实是多余的,如果我们是在进行游戏开发,那么游戏角色的立绘应该是早就已经有了。不过由于我这个例子里面并没有现成的图片,所以就叫AI帮我生成一张:
比如我这种图是这样生成的:
正向提示词:
masterpiece,best quality,male,handsome,bust,side_ahoge,
反向提示词:
lowres,bad anatomy,bad hands,text,error,missing fingers,extra
digit,fewer digits,cropped,worst quality,low quality,normal
quality,jpeg artifacts,signature,watermark,username,blurry,
这样我就生成了一张这样的图片
二、 使用局部重绘生成表情
之前在介绍ControlNet的时候,曾经介绍过可以通过Instant-ID来生成角色表情。但Instant-ID会有一个问题,他更像是通过2张图片,第一张是提取角色特征,第二张是提取表情特征,然后通过这些特征来生成新的图片。
但在实际的应用中,我们需要的是同一个角色,包括他的发型、脸部、身形、衣着都一样的情况下,出现不同的表情。这一点通过直接Instant-ID就比较难做到,毕竟它是完全重绘整张图片,会改变的内容就不止是表情了。
这个时候,最合适的做法是通过局部重绘来实现。在局部重绘功能里面,由于我们只是想改变脸部的表情,所以只需要在脸部范围绘制上蒙板:
接下来我提取了原图片的特征关键词,然后加入了微笑(smile),生成了一下:
可以看到角色的表情已经变成了微笑。接下来可以把表情的关键词改成各种表情:
一般来说,生成一次的效果可能不一定是很好的,所以我们可以增加同一次生成的图片数量,一般来说就是9连抽:
这样就可以同时生成9张不同的表情图片,我们可以选择一张比较好的:
三、 去背景
在刚刚开始生成图片的时候,我忘记了把原图的背景去掉。我们角色立绘的多表情,一般是要把角色配合在不同的场景背景里面使用,所以角色立绘是不应该有背景的。刚才我忘记了把背景先去掉,所以导致生成出来的表情图片都有背景。
这里我利用StableDiffusion来去背景。可以安装比如rembg之类的插件,就能快速的把背景抠掉:
于是我生成了一系列没有背景的表情图片,基本上都可以直接使用了。
四、 调整身体姿势
刚才生成的一系列表情立绘,有一个硬伤,就是只有脸部不一样,角色的整个身体姿势都是一样的,这样看起来会让人觉得比较的生硬。
接下来可以利用ControlNet的OpenPose功能来调整角色的动作:
如果选择的是openpose_full的预处理器,可以提取出角色的表情和骨骼:
点击编辑,就可以打开编辑界面来调整了:
但我这里并不需要调整表情,所以可以选择OpenPose的另一位一个处理器,只调整身体和手,不调整表情的openpose_hand
这样调整起来会简单一些:
接下来我把骨骼调整一下:
调整完之后记得点按钮“发送姿势到ControlNet”
生成出来,会变成这样:
人物的姿势的确被改变了,但由于是整图生成的,所以衣服上也出现了一些改变,这是我所不想看到的。于是,我还是用局部重绘功能,不过这次绘制的蒙板范围可以大一点,让AI可以绘制的空间更大,这样才能让新生成的图片身体姿势有更大的变化空间。
接下来再调整一下骨骼,让它既能有变化,又比较符合原来的身体姿势:
再次9连抽,会看到头部和颈部以上的部分变化了,身体和服装还保持原来的:
挑一张觉得还不错的,自己修一下细节,应该就能用了: