AIGC教程:如何使用Stable Diffusion高效生产“等距游戏美术资源”?
【GameLook专稿,未经授权不得转载!】
GameLook报道/对于游戏研发而言,美术资源是时间和资金占用比较高的一部分,尤其是游戏内大量的资源创作。随着生成型AI技术的进步,不少团队已经开始了用AI生成美术资源的尝试,尤其是2D游戏。
最近,海外一位开发者详细讲解了他使用Stable Diffusion创作等距游戏资源的过程。从生成结果来看,用AI制作游戏资源无疑是非常高效的,数分钟内就能生成大量品质较高的2D等距游戏资源,尤其是对于模拟经营、SLG以及2D回合制游戏。
不过,Gamelook需要提醒的是,在很多的模拟经营或类似的2D游戏里,创作这些资源只是一个方面,对于同一个建筑,玩家往往需要从低级升到高级,期间会出现明显的视觉提升。更重要的是,在不少游戏中,建筑升级实际上需要一个(等待)过程,而AI目前还不能生成动画,仍需要开发者手动制作升级动画。
以下是Gamelook听译的完整内容:
今天主要探讨的是如何制作等距游戏资源,看这张图,它们非常适合做模拟游戏、各种类型的RPG、回合制游戏,那么,如何用Stable Diffusion制作这些资源呢?
你的第一反应可能是输入指令,让AI生成等距游戏资源之类的事情,如果这么做,你可以得到很多不错的结果,比如下图这些资源,甚至是与你最喜欢的游戏资源风格很接近。
但是,如果仔细看细节,你很快会意识到,它们都不是同样的视角,有些视角比较低,还有些比较高。
因此,如果你将这些资源放在一款游戏里,它们是完全不兼容的,我们需要额外的控制,才能得到可用的等距游戏资源。
Stable Diffusion+ControlNet+Blender
比较好的是,我们刚好得到了一套叫做ControlNet的工具,帮我们将Stable Diffusion生成的资源调整到我们想要的效果。
我今天要做的是,用深度模型创作这些资源。这意味着什么?
我展示如何用Blender来为你想要的资源创建一个模糊的形状,通过渲染这些深度图,然后将其输入到ControlNet来创作你的最终资源。
这只是其中的一个案例,你可以用它来创作大量的选择。
甚至是完全不同的风格,不一定只是城建游戏,我还用它做了一个魔幻风格的游戏创意。
接下来我们进入正题,到底该怎么做?
第一步,当然是需要安装Stable Diffusion,我用的是AUTO1111界面,了解它的基本使用方法和简单的指令输入。
接下来你需要的是ControlNet扩展,进入Stable Diffusion界面,点击扩展标签,选择从URL安装,然后输入ControlNet网址(https://github.com/Mikubill/sd-webui-controlnet),黏贴到对应的地方,然后点击安装。
完成之后,点击已安装标签,将刚刚安装的扩展选项打钩,随后点应用并重启UI按钮。
重启UI之后,text2img和img2img标签界面下方就会多出一个ControlNet选项。
这里会有额外的设定选择,不过,我们还需要ControlNet模型。
为此,我们打开这个链(https://huggingface.co/webui/ControlNet-modules-safetensors/tree/main),下载其中的control_depth_fp16模型,还要确保下载后缀为yaml的文件。
随后,进入Stable Diffusion下的webui文件夹,extentions→sd-webui-contronnet→models,然后拖拽下载好的模型到这里来。
如果完全按照今天的分享来操作,我还建议下载ayonimix模型,因为它可以很快速获得不错的效果。
我使用的是V5版本,下载它还需要一个VAE。
对于下载的这个文件,打开你的主文件夹(Stable-diffusion-weibui文件夹),然后依次打开models→stable-diffusion,将ayonimix拖拽到这里。
VAE文件则需要放到models文件夹下的VAE文件夹内。
接下来,如果想要选择这里的VAE,点击Settings→User Interface→Quicksettings list,在这个列表中增加sd_vae。然后应用设定并重启UI,接下来就可以得到跟我一样的设置了。
用Blender做深度图
进入Stable Diffusion操作之前,我们需要先打开Blender,因为它可以定义我们想要的资源形状,并得到我们想要的完美角度,为我们的游戏带来具有连贯性的资源。
由于我们做的是等距游戏,所以视角会比较平,不会有广角视图,我们可以点击默认摄像机,进入摄像机设定,将类型选为Orthographic(正交投影),然后立即可以看到这样的效果,也是我们需要的。
通常情况下,这样的视角为30-45度,不过,如果你想调整,也可以按N键,勾选lock选项下的camera to view选项,这样我们就可以调整角度了,并且随后可以对方块进行拖拽旋转。
接下来,我们要创建一个非正方形的矩形,然后进入output properties,将分辨率调整为2048X2048,之所以创建如此巨大的正方体,是因为我们需要保证后续的分辨率。所以,你不需要渲染能力强大的电脑就可以做到,因为我们只给了深度信息,材质什么的都没有关系。
然后我要创建一个网格,所以要删除方块,这里会创建一个2×2 m的网格,我们要做的是一个能覆盖所有东西的平面,所以这里要拉伸,乘以8,这样就可以覆盖几乎所有的图片。
随后我们要对其进行细分,所以我们进入modifier properties,增加一个subdivision Surface modifier,这里的值设为4,将渲染设置为简单。
因为,我接下来要增加一个wireframe modifier,可以对我们之前创建的modifier进行概览,你可以将它的厚度降低,甚至可以低到几乎看不见,看上去就像是一条条的线,这是创建网格最简单的方式之一。
我们在右上角的Plane选项关闭摄像机,就可以看到比较清晰的网格。
那么,我们在Blender里究竟要做什么?实际上,我们在这里主要是为想要的建筑做粗糙的形状,这里你不需要太多的担心细节,我会创建一些默认建筑作为我们需要的资源。
按shift+A创建一个新立方体,这样我们在网格上就有了一个新立方体,然后进入编辑模式。
现在,我要创建一个漂亮的家庭建筑,这里要先把摄像机锁定去掉,否则会导致物体移动。这里的家庭建筑非常粗糙,你只需要基础的Blender技巧就行。
按Ctrl+R,你可以添加环形剖线,这里你不用担心拉伸的长度,因为Stable diffusion会知道我们想要什么,然后是增加房间入口。
这就是我们想要的房间形状了。
如果视角贴的特别近,那是因为操作的时候碰到了鼠标滚轮,导致拉近了摄像机,这时候我们走出房间,按G\Z\Z,然后拖动摄像机,就可以回到正常视角,不过要确保你的建筑在摄像机范围之内。
接下来,如果你想直接渲染,看起来效果会比较差,因为光照是错误的,而且没有纹理,这些信息是没有用的,你需要的是深度图。
所以,我们随后点击compositing标签,点击use nodes,这里会有些复杂,但不用担心,我会详细说明。你需要将深度信息放到composite输出里,这里进入layer properties,勾选Z,就可以在左边看到深度层。
这时候按shift+A,搜索normalize节点,拖拽到depth选项,然后shift+A搜索Invert,将其连接到颜色信息中,最后,将颜色拖拽到与image相连。
Normalize的作用是,它可以让离摄像机最近的点变成纯白色,最远的变为纯黑色,所以你始终都可以让建筑形状有最大化的深度信息。
使用Invert是因为Stable Diffusion会用到相反色,然后点击渲染,你会得到一个完美的深度图。你可以把它存储并输入到ControlNet。
为了整洁起见,我们将文件名定义为House-depth,格式选择PNG、RGB都可以,由于不需要透明度,所以直接保存就行。
导入Stable diffusion生成游戏资源
接下来进入Stable Diffusion,需要提醒的是,第一步是先把深度图放到ControlNet,然后勾选启用(enable),其余设置不要修改,因为这已经是个很完美的深度图,只需要将模型切换为control_depth。
这时候权重有些高,所以我们将它跳到0.6看效果如何,通常这是保留所有必要角度的权重。
对于指令,我不会逐字阅读,因为很长,不过我找到了一个不错的指令,很适合这类游戏使用,你只需要复制黏贴即可。
指令:
[你的建筑描述], cozy, playful, beautiful, art by artist, (pastel colors:0.7), vector art, (illustration:1.4), digital painting, 3d render, stylized, painting, gradients, simple design, (centered:1.5), ambient occlusion, (soft shading:0.7), view from above, angular, isometric, orthographic
负面指令:
cartoon, zombie, disfigured, deformed, b&w, black and white, duplicate, morbid, cropped, out of frame, clone, photoshop, tiling, cut off, patterns, borders, (frame:1.4), symmetry, intricate, signature, text, watermark, fisheye, harsh lighting, shadows
采样器有时候可以选择DDM,不过这里选择Euler a即可,采样步数选择20,batch count设置为4,其余设置可以保留,毕竟我们做的也是方形。
这是我们的第一个结果,很明显少了车库和红瓦屋顶,不过没关系。
这个版本与我想要的很接近,比如红屋顶、车库、漂亮的窗户,不错的门。
还有些缺失了车库,所以上图很明显是最好的一个。
如果觉得满意,可以直接sent to inpaint,或者send to img2img,并做出一个更高分辨率的版本。
比如可以调整为1024×1024,如果我将denoising降低到0.2,即便是我这张不怎样的GPU也能生成,因为这样可以很好地保留这个风格,但还可以增加大量细节,让它看起来更漂亮。
这里可以将采样步数增加到45,为了保持风格,我还要回到text2img复制种子(seed),黏贴到对应位置,同时为ControlNet增加同样的深度图,以免丢失任何信息。
这就是生成的结果,能够看到它更加干净整洁,因为采样步数和分辨率都更高了,而且灯和窗户都更好看。
接下来,我们把它放到图形处理软件之中,我使用了Affinity Photo,你还可以使用Photoshop或其他软件,只不过会使用一些略微不同的小技巧。
创建新文件,尺寸设置为1024×1024,复制粘贴我们生成的结果,我把它放到这里是希望将它变为游戏资源,因此要去掉所有的背景信息。
所以,我们回到深度图,把它放到这里,这也是我们把深度图做非常大的原因,我们可以把它缩小,以适应画布,这一步很实用,因为这里已经有了几乎完美的遮罩(mask),不过有一些灰色成分。
我们可以使用threshold滤镜去掉,将它设置为1%,这时候就可以看到房间的完美轮廓。
选择rasterize to mask,随后就可以得到几乎完美的建筑图了。
当然,这并不是100%完美的结果,比如这里还有些边缘没有消除,但已经是非常不错的方法。
这里我们得到了第一个游戏资源,比较神奇的是,我们可以用它来创造任何其他东西。
比如我们可以在指令里写入医院、诊所,立即就可以得到很多比较酷的建筑。
还可以生成一个工厂建筑,对于其他建筑,你可以使用完全相同的步骤操作。或者,你也可以在Blender里做其他不同形状的深度图,做出各种各样的建筑或者资源。
我们快速展示一些资源的创作过程:
可以看这些建筑,不要介意它的细节,我只是通过调节一些指令得到了各种不同风格的建筑,并且在Blender里做了一些粗糙的模型,最重要的是,它们与网格很适合,所以这种方法非常强大。
你甚至可以几分钟内做大量的游戏内资源,并且所有资源都和角度、视角匹配。
这个方法可以适用于任何风格的资源,比如这是我做的魔幻风的资源,我希望你们通过这个技巧更有创意,它很强大,而且用起来很有趣。
如若转载,请注明出处:http://www.gamelook.com.cn/2023/04/514269