Unity与StableDiffusion相互赋能——FernSDGraph
Unity集训营
2024年05月20日 17:54

你是否用Stable Diffusion生成过想要的材质、天空盒等资源?

你是否因为原始图片布局和构图的限制,从而生成的图片不尽人意? 你有没有想过有一天通过类似Shader Graph连连看的方式来使用Stable Diffusion的功能? ...... 今天小编给大家分享一个GitHub上的项目FernSDGraph(原作者:byshenhang,项目链接于文章末尾)。FernAI是一个集成在Unity中的Graph工具,不但有Stable Diffusion基本的文生图、图生图功能,可用于生成自己的Unity资产。还可以通过提取Unity的画面信息,利用StableDiffusion生成图片,实现Unity和StableDiffusion的相互赋能。


一、功能演示

1.生成贴图

生成所需要的贴图,再对所需的贴图做进一步细化处理。

2.摄像头画面生成图片

在Unity场景中搭建一个简单的场景,通过Unity摄像头获取到的画面作为图生图的原始图片。

3.对摄像内容重绘

结合ControlNet对摄像头画面进行重新绘制。


二、SD Graph节点

了解Shader Graph的小伙伴都清楚,Shader Graph是Unity中开发Shader的可视化编程工具,在将Shader逻辑拆分为不同节点的同时实现了组件化开发,最终使得Shader开发变得更加直观和高效。今天我们分享的FernSDGraph,就是将Stable Diffusion与Unity结合的同时,通过类似Shader Graph连连看的方式来创建Stable Diffusion Graph进而生成自己想要的图片。并且还可以通过Unity的摄像机获取画面信息,进而用摄像机画面生成图片的效果。

如果你之前已经用过Stable Diffusion,可以通过该项目扩展生图方式;如果你之前没有用过Stable Diffusion,可以用过Stable Diffusion Graph各个节点的功能来了解Stable Diffusion的工作原理和应用方式。原始项目中作者也为大家提供了多种SD Graph可作为参考。 1.模型设置 不管你的SD Graph功能是否复杂,我们都需要新建一个SD Start和SD Set Model。前者Server URL用于指定Stable Diffusion服务器地址,后者下拉列表中可以选择我们的模型。

2.提示词

除了基础的正向反向提示词的Graph节点,作者还提供了SD Prompt Register节点,将一些常用的提示词加入到了其中。只需要点击你想要的中文提示词,自动帮你转换成英文。可以选择正向或反向提示词做中英文切换,再连接到自己的正反向提示词上。

3.摄像头画面

在之前的演示中有提到过可以通过摄像头获取画面信息,这是通过SD Camera Render节点获取的。选中其预览方式,还可以选择是否忽略RGBA某一通道值。

4.文生图&图生图节点

文生图和图生图作为Stable Diffusion的基本功能,SD Txt2Img和SD Img2Img自然必不可少。节点除了包含所需要的图片尺寸(Width和Height)、推理步数(Step)、随机种子数(Seed)、提示词引导系数(CFG Scale)、重绘幅度(Denoising Strength,图生图独有)、采样方法(Method)等重要参数外,生成图片的存储路径也在这个节点中。

5.LoRA&ControlNet

在使用Stable Diffusion的过程中,想要生成满意的图片,使用局部重绘、可控生成自然少不了对LoRA和ControlNet的使用。SD Graph中两个节点的使用也是非常方便。

6.其他节点

在SD Graph中还有其他如SD Combine、SD Blend、SD Edge Detetion等各种节点,每一个节点都是Stable Diffusion出图过程中可能需要的,在此不一一列举,欢迎大家评论区讨论。


三、项目案例

以下是FernGraph作者项目中的SD Graph案例,让我们一起来看看作者提供的案例都实现了哪些功能。

StableDiffusionGraph_Icon(生成Icon)

可以从作者连接的方式中看出,作者提供的生成Icon的思路通过边缘检测和局部重绘最终达到制作Icon的效果。

StableDiffusion_Texture(生成贴图)

StableDiffusion_Texture用于生成贴图,再通过SD Normal From Height、SD Blur、SD Split等节点获得法线贴图等可在Unity中使用的贴图。

StableDiffusion_Room(摄像机画面内容生图)

在示例场景中,作者仅仅使用15个Cube就完成了场景的搭建,这个简单的环境代替了原始图源,为图生图提供了新的思路。

📍 原项目链接:https://github.com/byshenhang/FernSDGraph 📍 欢迎同学们扫码咨询参与我们与微软合作的AI课程,学习更多AI技术,助力项目落地,走在时代前沿