使用Unity 接入 Stable-Diffusion-WebUI的 文生图api 并生成图像

这篇具有很好参考价值的文章主要介绍了使用Unity 接入 Stable-Diffusion-WebUI的 文生图api 并生成图像。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用Unity 接入 Stable-Diffusion-WebUI 文生图生成图像

一、前言

在无聊的时候,想瞅一下sd生图遂做了一下
使用Unity 接入 Stable-Diffusion-WebUI的 文生图api 并生成图像,日常学习,unity,stable diffusion,游戏引擎
注意:我采用了异步处理,每点击一次发送一次请求,不需要等待生成完再点击。后面生成的画面会覆盖掉之前的。

二、具体步骤

1、启动SD的api设置

使用Unity 接入 Stable-Diffusion-WebUI的 文生图api 并生成图像,日常学习,unity,stable diffusion,游戏引擎

注意,运行后的api相关功能可以在:http://127.0.0.1:7860/docs 查看
使用Unity 接入 Stable-Diffusion-WebUI的 文生图api 并生成图像,日常学习,unity,stable diffusion,游戏引擎

比如这一次我们要的生图的地址就是/sdapi/v1/txt2img 是POST
所以可以通过requests 向 "http://127.0.0.1:7860/sdapi/v1/txt2img"发送POST请求并拿到数据

注意: “http://127.0.0.1:7860/sdapi/v1/txt2img” ,里面的地址和端口在unity中改成你设置的,如果没有改就不动
到这里sd的前期准备就OK了

2、unity 创建生图脚本

新建C#脚本,imgsd
注意:

  • “http://127.0.0.1:7860/sdapi/v1/txt2img” 里面的ip和端口与sd中设置的一致
  • sd_model_name = “animePastelDream_softBakedVae” 模型用你自己的模型,如果删掉则用默认你第一个模型。模型文件如:majicmixRealistic_v7.safetensors 则模型名为majicmixRealistic_v7
  • 要用某个魔,需要在sd的web中能看到这个模型,你才能使用api调用。你需要下载模型后放在models文件夹在,参考地址如:sd-webui-aki-v4\models\Stable-diffusion

其他的保持不动即可

using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
using System.Text;
using System;
using System.Collections;


public class imgsd : MonoBehaviour
{
    public InputField promptInputField; // 在Inspector中设置
    public InputField negativePromptInputField; // 在Inspector中设置
    public RawImage outputImage; // 在Inspector中设置

    private string txt2imgUrl = "http://127.0.0.1:7860/sdapi/v1/txt2img";

    // 调用这个方法来开始生成图像的过程
    public void GenerateImage()
    {
        string prompt = promptInputField.text;
        string negativePrompt = negativePromptInputField.text;
        StartCoroutine(PostRequest(txt2imgUrl, prompt, negativePrompt));
    }
    [Serializable]
    public class YourResponseType
    {
        public string[] images;
        // 添加其他需要的字段
    }


    IEnumerator PostRequest(string url, string prompt, string negativePrompt)
    {
        var data = new
        {
            prompt = prompt,
            negative_prompt = negativePrompt,
            sd_model_name = "animePastelDream_softBakedVae"
        };

        string jsonData = JsonUtility.ToJson(data);

        using (UnityWebRequest www = UnityWebRequest.Post(url, UnityWebRequest.kHttpVerbPOST))
        {
            byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonData);
            www.uploadHandler = (UploadHandler)new UploadHandlerRaw(bodyRaw);
            www.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
            www.SetRequestHeader("Content-Type", "application/json");

            yield return www.SendWebRequest();

            if (www.result != UnityWebRequest.Result.Success)
            {
                Debug.LogError($"请求失败: {www.error}");
            }
            else
            {
                Debug.Log("请求成功");
                // 解析响应
                string jsonResponse = www.downloadHandler.text;
                YourResponseType response = JsonUtility.FromJson<YourResponseType>(jsonResponse);
                // 假设YourResponseType是你定义的类,用来匹配JSON响应的结构

                // 显示图像
                DisplayImage(response.images[0]); // 假设images[0]包含了Base64编码的图像
            }
        }
    }

    private void DisplayImage(string base64String)
    {
        byte[] bytes = Convert.FromBase64String(base64String);
        Texture2D texture = new Texture2D(2, 2);
        if (texture.LoadImage(bytes))
        {
            outputImage.texture = texture;
        }
        else
        {
            Debug.LogError("图像加载失败");
        }
    }
}

3、Unity 生图交互配置

要通过点击事件触发GenerateImage方法,你可以使用Unity的UI系统中的按钮(Button)组件。这里有一个简单的步骤说明如何做到这一点:

步骤 1: 创建sdControl
  1. 在Unity编辑器中,右键点击Hierarchy面板中的空白区域。
  2. 创建一个空对象Create Empty,并改名为sdcontrol。
  3. 将上一步创建的imgsd脚本拖拽到sdcontrol
步骤2:生成后图片画布
  1. 在Unity编辑器中,右键点击Hierarchy面板中的空白区域。
  2. UI->Raw Image ``
步骤3:创建两个输入框
  1. 在Unity编辑器中,右键点击Hierarchy面板中的空白区域。
  2. UI->Legacy -> input fileld ``
  3. UI->Legacy -> input fileld ``
    执行两次,创建两个输入框
    注:UI ->如果没有Legacy 那就UI -> input fileld
步骤4:sdcontrol赋值

使用Unity 接入 Stable-Diffusion-WebUI的 文生图api 并生成图像,日常学习,unity,stable diffusion,游戏引擎

步骤 5: 创建按钮并绑定点击事件
  1. 在Unity编辑器中,右键点击Hierarchy面板中的空白区域。

  2. 选择UI -> Button。这将自动创建一个Canvas(如果尚未存在),button的text改为生成

  3. 选中你刚刚创建的按钮对象。

  4. 在Inspector面板中找到Button (Script)组件。

  5. 拖拽包含TextToImageRequest脚本的GameObject(即你将该脚本附加到的对象)到Button (Script)组件下方的OnClick()列表中。

  6. 点击OnClick()列表旁边的加号(+)来添加一个新的条目。

  7. 在新条目的None (Object)字段中,确保包含TextToImageRequest脚本的GameObject被选中。

  8. 然后点击旁边的下拉菜单,选择TextToImageRequest -> GenerateImage

三、测试

  • 进入Play模式,输入prompt 点击按钮,这应该会触发GenerateImage方法,从而开始图像生成的过程。
    使用Unity 接入 Stable-Diffusion-WebUI的 文生图api 并生成图像,日常学习,unity,stable diffusion,游戏引擎

注:如果发现生成了画面,但与实际的不符,请尝试输入另外一个框,再试着点击一次。因为两个框依次代表,prompt 和native prompt如果输错了框会导致生成效果不理想。文章来源地址https://www.toymoban.com/news/detail-856356.html

到了这里,关于使用Unity 接入 Stable-Diffusion-WebUI的 文生图api 并生成图像的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用stable-diffusion-webui 运行模型

    操作系统: Windows11 显卡: RTX2060 6GB 显存 下载 Python3.10.6 安装 image.png 注意勾选 Add Python 3.10.6 to PATH ,然后一路 下一步 即可 image.png 打开powershell, 确认安装成功 image.png 下载git image.png 完成安装 image.png 下载 为了避免找不到开源项目,可以像上图中的我一样, 先在用户目录建立一

    2024年02月12日
    浏览(77)
  • Stable-diffusion-webui 本地部署及使用

    1.安装conda; 2.创建conda env 和python 3.10.6; conda create --name stable-diffusion-webui python=3.10.6 3.更新pip; 4.安装cuda 11.8; https://developer.nvidia.com/cuda-toolkit-archive 5.克隆stable-diffusion-webui仓库 ; 6.下载SD模型 下载stablediffusion预训练模型至stable-diffusion-webui/models/stable-diffusion; V1.4 V1.5 7.运行

    2024年02月10日
    浏览(51)
  • 【AI】Stable-Diffusion-WebUI使用指南

    注:csdn对图片有审核,审核还很奇葩,线稿都能违规,为保证完整的阅读体验建议移步至个人博客阅读 最近AI绘画实现了真人照片级绘画水准,导致AI绘画大火,公司也让我研究研究,借此机会正好了解一下深度学习在AIGC(AI Generated Content)----人工智能自动内容生成领域的应用

    2024年02月07日
    浏览(63)
  • stable-diffusion-webui 中 Controlnet 使用说明

    Controlnet 允许通过线稿、动作识别、深度信息等对生成的图像进行控制。 自动安装 在 stable-diffusion-webui 页面上找到 Extensions - Install from URL ,输入插件的 git 地址,然后点击 Install 即可, URL 如下: 等待 loading 结束后,页面底部会出现 Installed into xxx. Use Installed tab to restart. 提示

    2024年02月06日
    浏览(69)
  • AIGC文生图:stable-diffusion-webui部署及使用

    Stable Diffusion Web UI 是一个基于 Stable Diffusion 的基础应用,利用 gradio 模块搭建出交互程序,可以在低代码 GUI 中立即访问 Stable Diffusion Stable Diffusion 是一个画像生成 AI,能够模拟和重建几乎任何可以以视觉形式想象的概念,而无需文本提示输入之外的任何指导 Stable Diffusion Web

    2024年02月16日
    浏览(80)
  • Stable-Diffusion-WebUI从代码下载到使用技巧

    本文用于对AI绘画感兴趣但无计算机编程基础的人,包含本人安装和使用过程中的心得,可供新学者参考。 心理准备: 电脑性能越高越好,最好有高端显卡,如30系以上。低端显卡也可以,速度和质量感人就是; 会要求下载一些软件、模型,涉及环境变量设置、虚拟环境安装

    2024年02月10日
    浏览(68)
  • stable-diffusion-webui的介绍与使用——Controlnet1.1

    源码地址:https://github.com/lllyasviel/ControlNet | 最新 版本 controlnet-v1.1 论文 地址:2302.Adding Conditional Control to Text-to-Image Diffusion Models 扩展 UI地址 (需先安装sd-webui):https://github.com/Mikubill/sd-webui-controlnet 相关博文 相关博文- stable-diffusion-webui的基础功能手动安装,了解代码结构、

    2024年02月10日
    浏览(81)
  • AI画图_stable-diffusion-webui安装使用指南(1)

    本文章适用于: 有一定学习能力和钻研能力,遇到问题能合理使用搜索引擎尝试解决问题的人 想在windows系统中尝试使用AI作画工具stable-diffusion-webui进行绘画的人 有一定的计算机基础(会 魔法上网 、 知道 python和Git)和英文阅读能力的人 显卡为Nvidia(或采用CUDA架构),且性

    2024年01月16日
    浏览(51)
  • 【AI作画】使用stable-diffusion-webui搭建AI作画平台

    进入官网下载安装包https://www.anaconda.com/并安装,然后将Anaconda配置到环境变量中。 打开命令行,依次通过如下命令创建Python运行虚拟环境。 笔者的显卡为NVIDIA,需安装NVIDIA的开发者工具进入官网https://developer.nvidia.com/,根据自己计算机的系统情况,选择合适的安装包下载安装

    2024年01月21日
    浏览(59)
  • 【Stable-Diffusion-WebUI】Windows系统安装Stable-Diffusion-WebUI

    基于 stable-diffusion 封装的 webui 开源项目,通过界面交互的方式来使用 stable-diffusion,降低了使用门槛,可以通过本地部署的方式进行访问,对电脑的配置要求较高,以下配置要求仅供参考 第一步:安装python3.10(这步可以跳过,3.8以上即可) 第二步:使用git下载stable diffusio

    2024年02月11日
    浏览(78)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包