Unity3d引擎中使用AIGC生成的360全景图(天空盒)

前言

在这里与Skybox AI一起,一键打造体验无限的360°世界,这是这个AIGC一键生成全景图的网站欢迎语。
在这里插入图片描述

刚使用它是23年中旬,在没有空去给客户实地拍摄全景图时,可以快速用它生成一些相关的全景图,用作前期沟通的VR demo。当时使用所有都是开放免费的,遗憾的是现在使用多了很多限制,比如很多风格都需要付费,而且生成也需要魔法网络,免费生成次数进行了限制:
在这里插入图片描述

最新消息这个平台已经有Unity SDK了,具体见:https://github.com/Blockade-Games/BlockadeLabs-SDK-Unity
这个使用的限制就是必须注册使用API key来生成。

效果

如下是一些Unity中的效果:

数字绘画赛博朋克
在这里插入图片描述

数字绘画长城
在这里插入图片描述

科幻风格
在这里插入图片描述

写实风格
在这里插入图片描述

卡通风格

在这里插入图片描述

快速体验

直接访问blockadelabs.com点击体验。

选择一种风格(select a style):
在这里插入图片描述

输入对全景图的描述:
在这里插入图片描述

点击生成后,等待一段时间就能在网站中看到效果,点击下载按钮:
在这里插入图片描述

产生的全景图是一个2:1的全景图,如下:
在这里插入图片描述

下载后导入Unity,如果识别不出来图片,需要改成jpg。

在unity内新建一个天空盒/Panoramic着色器的材质球,具体设置参照下图:
在这里插入图片描述

在场景中新建一个球体Sphere,将材质球拖给它,适当放大球体,将摄像放到球体的正中间,就可以看到全景图的效果。
如果生成的效果不理想得考虑更换风格和描述(这个同Stable Diffusion 的 Prompt 提示词)更改,也可以在此次生成的作品上进行编辑(Edit This)或者再混合(Remix This),直到效果满意。不过,如果你是免费的用户得注意次数,不然就得等下个月了:

在这里插入图片描述

API接入

这里它提供了API请求的一系列接口,这些接口其实也可以在Unity内使用UnityWebRequest的方式进行请求。

首先,您需要一个 API 密钥才能开始使用。 如果您没有,请前往 https://api.blockadelabs.com 申请。
这是它的安全提示:

不建议在应用程序的前端公开 API 密钥。相反,建议使用我们为您准备的 SDK库之一或开发您自己的后端服务来与前端应用程序进行通信,然后利用服务器到服务器的请求来访问 Blockade Labs API 端点。

您的 API 密钥必须作为参数包含在 HTTP 请求标头中:x-api-key
或者,您可以将其作为 url 查询参数api_key发送(此方法不太安全):https://backend.blockadelabs.com/api/v1/skybox?api_key=7J7eD5TIiJR4Gky…
根据您对 POST 请求的偏好,您可以将参数和值作为 JSON () 或 FormData () 发送。请注意,如果您使用的是 JSON,则需要以 base64 格式对要上传的文件进行编码。application/jsonmultipart/form-data

Unity3d 中你这么写C#脚本:

 UnityWebRequest request = new UnityWebRequest(url, reqtype);
 request.SetRequestHeader("x-api-key", "你的key(如:7J7eD5TIiJR4Gky...)");

生成天空盒

您需要做的就是向 https://backend.blockadelabs.com/api/v1/skybox 发送一个带有参数的 POST 请求,需要传参数提示词prompt:

 JsonData param = new JsonData();
 param["prompt"] = "你的描述(提示词)";
 request.uploadHandler = (UploadHandler)new UploadHandlerRaw(Encoding.UTF8.GetBytes(param.ToJson()));

获得响应示例如下:

{
  "id": 123456, // id of your generation. It can be used to track generation progress or to cancel/delete the generation
  "status": "pending", // initially status is set as 'pending' after you send a generation request. Status will change from one state to another and you will get updates for each one if you are using pusher or webhook: pending -> dispatched -> processing -> complete. Also you can get abort or error.
  "queue_position": 2, // position of your request in a generation queue
  "file_url": "", // full size of generated image url (empty until generation is completed)
  "thumb_url": "", // thumbnail of generated image url (empty until generation is completed)
  "title": "World #123456", // generation title
  "user_id": 1, // your user id
  "username": "user@blockadelabs.com", // your username
  "error_message": null, // if status=error here you should see the error message
  "obfuscated_id": "460370b7328a5cb8dbddd6ef0d1c9dd4", // hash id of your generation
  "pusher_channel": "status_update_460370b7328a5cb8dbddd6ef0d1c9dd4", // pusher channel name used to track generation progress
  "pusher_event": "status_update", // pusher channel event used to track generation progress
  "created_at": "2023-03-18T10:42:19+00:00", // time created
  "updated_at": "2023-03-18T10:42:19+00:00" // time updated}
}

获得响应后,仍需要等待生成器处理图像,因为生成速度没有那么快。

跟踪生成进度

生成图像时,参数将按以下顺序更改,直到完成,status如下说明:
pending- 生成在队列中(初始状态)
dispatched- 这一次生成被送到了人工智能工作者那里
processing- AI worker 开始生成
complete- 生成已完成,您可以检索生成的天空盒图像
abort- 这一次生成夭折了
error- 生成时出现错误。您可以查看参数以获取更多详细信息。error_message
每当发生更改时,都会通过 Pusher(或可选地通过 webhook)发送相应的事件消息。

要同步生成进度,有三种方式:

1. Pusher

这是推荐方式的同步你生成过程,通过使用官方 Pusher 库(https://pusher.com/docs/channels/channels_libraries/libraries/#official-libraries),您可以将其无缝集成到您的应用程序中。 在发送天空盒或想象生成请求时,您将得到可用于跟踪生成进度的响应。

Pusher 请求参数:

app_id = "1555452"
key = "a6a7b7662238ce4494d5"
cluster = "mt1"

响应示例:

{
  "pusher_channel": "status_update_460370b7328a5cb8dbddd6ef0d1c9dd4",
  "pusher_event": "status_update",
}

2. Webhook

Webhook 是发送到唯一 URL 的通知。

若要启用 Webhook 状态更新,只需在 Skybox 生成请求中发送一个附加参数即可。在每次状态更新时,我们都会向您提供的发送带有进度更新消息 (json) 的请求。webhook_urlPOSTwebhook_url

您可以使用 https://webhook.site/ 测试 Webhook。

3. API数据轮询

不建议使用此方法,因为它可能会触发我们的 API 速率限制器。它只能用于测试目的。

向 API 发出请求并检查更改。 这里更详细地解释。
GET https://backend.blockadelabs.com/api/v1/imagine/requests/{id}status
这是状态更新的响应示例:

{
  "id": 123456, // id of your generation. It can be used to track generation progress or to cancel the generation
  "obfuscated_id": "460370b7328a5cb8dbddd6ef0d1c9dd4", // hash id of your generation
  "user_id": 1, // your user id
  "username": "user@blockadelabs.com", // your username

  "status": "pending", // initially status is set as 'pending' after you send a generation request. Status will change from one state to another and you will get updates for each one if you are using pusher or webhook: pending -> dispatched -> processing -> complete. Also you can get abort or error.
  "queue_position": 1, // position of your request in a generation queue
  "pusher_channel": "status_update_460370b7328a5cb8dbddd6ef0d1c9dd4", // pusher channel name used to track generation progress
  "pusher_event": "status_update", // pusher channel event used to track generation progress
  "error_message": null, // if status=error here you should find the error message
  
  "type": "skybox", // type of generation (currently "skybox" is the only one)
  "title": "Imagination #123456", // generation title
  "prompt": "prompt text", // prompt text used to generate skybox
  "skybox_style_id": 10, // skybox style id used to generate skybox
  "skybox_style_name": "SciFi", // skybox style name used to generate skybox
  
  "file_url": "https://blockade-platform-production.s3.amazonaws.com/images/imagine/futuristic_microdetailed_vr_scifi_concept_art_cinematic_vr_neon__dbe7f963dc23699c__2757929_dbe7.jpg?ver=1", // generated skybox image (6144x3072 pixels)
  "thumb_url": "https://blockade-platform-production.s3.amazonaws.com/thumbs/imagine/thumb_futuristic_microdetailed_vr_scifi_concept_art_cinematic_vr_neon__dbe7f963dc23699c__2757929_dbe7.jpg?ver=1", // generated skybox thumbnail (672x336 pixels)
  "depth_map_url": "https://blockade-platform-production.s3.amazonaws.com/depths/imagine/futuristic_microdetailed_vr_scifi_concept_art_cinematic_vr_neon__dbe7f963dc23699c__2757929_dbe7.jpg?ver=1", // generated skybox depyh map image (2048x1024 pixels)
  
  "created_at": "2023-03-18T10:42:19+00:00", // time created
  "updated_at": "2023-03-18T10:42:39+00:00", // time updated
}

下载全景图

所有 API 端点都需要在标头中发送或作为 get 参数发送的 API 密钥。用于导出各种文件类型的天空盒的 API 路由:PNG、HDRI(exr、hdr)、深度图、立方体图、视频(纵向、横向、正方形)。

获取导出类型

GET https://backend.blockadelabs.com/api/v1/skybox/export

返回示例:

[
    {
        "id": 1,
        "name": "JPG",
        "key": "equirectangular-jpg",
    },
    {
        "id": 2,
        "name": "PNG",
        "key": "equirectangular-png",
     }
]

请求导出

POST https://backend.blockadelabs.com/api/v1/skybox/export

如果导出请求已经完成,您将立即收到响应,并在响应中收到响应。

响应示例(完整)

{
    "file_url": "https://blockade-platform-production.s3.amazonaws.com/depths/imagine/vr360-stunning-beautiful-vibrant-digital-painting-sega-atari_8414305.jpg", // url for the exported file
    "id": "15e8a0ae53d39e2ef518b2c02f9c43ee", // id of your export request. It can be used to track progress or cancel the request
    "type": "depth-map-png", // requested export type
    "type_id": 6, // requested export type id
    "status": "complete", // initially status is set as 'pending' after you send the export request. Status will change from one state to another and you will get updates for each one if you are using pusher or webhook: pending -> dispatched -> processing -> complete. Also you can get abort or error and in some cases (ie. for JPG and Depth Map export) this will be immediately set to 'complete'.
    "queue_position": 0, // position of your request in a export generation queue
    "error_message": null, // if status=error here you should see the error message
    "pusher_channel": "export_status_update_15e8a0ae53d39e2ef518b2c02f9c43ee", // pusher channel name used to track export generation progress
    "pusher_event": "status_update", // pusher channel event used to track generation
    "created_at": "2023-08-21T09:55:28.000000Z"
}

获取下载链接

GET https://backend.blockadelabs.com/api/v1/skybox/export/{你的导出id}

响应示例:

{
    "file_url": "https://blockade-platform-production.s3.amazonaws.com/depths/imagine/vr360-stunning-beautiful-vibrant-digital-painting-sega-atari_8414305.jpg", // url for the exported file
    "id": "15e8a0ae53d39e2ef518b2c02f9c43ee", // id of your export request. It can be used to track progress or cancel the request
    "type": "depth-map-png", // requested export type
    "type_id": 6, // requested export type id
    "status": "complete", // initially status is set as 'pending' after you send the export request. Status will change from one state to another and you will get updates for each one if you are using pusher or webhook: pending -> dispatched -> processing -> complete. Also you can get abort or error and in some cases (ie. for JPG and Depth Map export) this will be immediately set to 'complete'.
    "queue_position": 0, // position of your request in a export generation queue
    "error_message": null, // if status=error here you should see the error message
    "pusher_channel": "export_status_update_15e8a0ae53d39e2ef518b2c02f9c43ee", // pusher channel name used to track export generation progress
    "pusher_event": "status_update", // pusher channel event used to track generation
    "webhook_url": null, // custom webhook where generator will send updates about export
    "created_at": "2023-08-21T09:55:28.000000Z"
}

这里响应的file_url字段就是下载链接的地址。

费用

和去年相比,这个平台的功能也逐渐完善、强大,系统也从完全开放状态,转变成了接口式的付费使用平台,而且平台的费用分级也很多,详细如下:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/342259.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

因谷歌Play Store审核超过7天和联系他们的方式

三种联系他们的方式 1.让他们打电话过来 英语好不好没关系,主要是他们讲着一口浓厚的印度口音英语,很难听懂 2.在线实时聊天沟通 可以选择英文、中文、但是英文肯定容易约上 3.发送邮件 回复太慢了,1-2天回复你一次 传送门&#xff1…

【Java数据结构 -- 队列:队列有关面试oj算法题】

队列、循环队列、用队列模拟栈、用栈模拟队列 1.队列1.1 什么是队列1.2 创建队列1.3 队列是否为空和获取队头元素 empty()peek()1.4 入队offer()1.5 出队(头删)poll() 2. 循环队列2.1 创建循环队列2.2 判断是否为空isEmpty()和满isFull()2.3 入队enQueue…

大数据开发之Scala

第 1 章:scala入门 1.1 概述 scala将面向对象和函数式编程结合成一种简洁的高级语言 特点 1、scala和java一样属于jvm语言,使用时都需要先编译为class字节码文件,并且scala能够直接调用java的类库 2、scala支持两种编程范式面向对象和函数式…

Flink中的时间和窗口(时间语义,水位线,窗口,迟到数据的处理)

目录 Flink中的时间和窗口 1时间语义 1.1Flink中的时间语义 1.1.1处理时间 1.1.2事件时间 1.2那种时间语义更重要 2 水位线 2.1 事件时间和窗口 2.2 什么是水位线 2.3 如何生成水位线 2.3.1使用WatermarkGenerator 2.3.2使用SourceFunction 2.4 水位线的传递 2.5 水位…

DP活动:HMI-Board以太网数据监视器(一)以太网外设的使用

HMI-Board以太网数据监视器 开发工具  RT-Thread Studio/Keil MDK5(固件开发、编译)  SquareLine Studio(LVGL UI设计工具) 资料链接  RT-Thread Studio下载链接: https://download_redirect.rt-thread.org/…

超优秀的三维模型轻量化、格式转换、可视化部署平台!

1、基于 HTML5 和 WebGL 技术,可在主流浏览器上进行快速浏览和调试,支持PC端和移动端 2、自主研发 AMRT 展示框架和9大核心技术,支持3D模型全网多端流畅展示与交互 3、提供格式转换、减面展UV、烘焙等多项单模型和倾斜摄影模型轻量化服务 4、…

OpenSource - 文件在线预览模块(多格式转 PDF 文件)

文章目录 文件在线预览模块(多格式转PDF文件)现已支持格式如下界面展示运行方式接口介绍文件上传文件转 PDF文件转图片文件转SVG 参数配置其他说明项目关联关键词文档转换预览技术说明同步转换异步转换 主要技术乱码问题处理帮助文档 前端预览弹出层用法…

【数据结构】链表(单链表与双链表实现+原理+源码)

博主介绍:✌全网粉丝喜爱、前后端领域优质创作者、本质互联网精神、坚持优质作品共享、掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战✌有需要可以联系作者我哦! 🍅附上相关C语言版源码讲解🍅 &#x1f44…

Android14源码剖析:MediaPlayer与MediaPlayerService区别?(五十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

论文阅读 1| 从仿真域到实验域无监督轴承故障诊断的新型联合传输网络

标题:Novel Joint Transfer Network for Unsupervised Bearing Fault Diagnosis From Simulation Domain to Experimental Domain 期刊:IEEE-ASME TRANSACTIONS ON MECHATRONICS (2022) 作者:Yiming Xiao, Haid…

初识 JVM

什么是JVM JVM 全称是 J ava V irtual M achine,中文译名 Java虚拟机 。 JVM 本质上是一个运行在计算机上的程序,他的职责是运行 Java字节码文件 。 JVM的功能 Java语言如果不做任何优化,性能不如C、C等语言。 Java需要实时解释&…

【Foxmail】客户端发送邮件错误:SSL Recv :服务器断开连接, errorCode: 6

Foxmail客户端发送邮件提示:SSL Recv :服务器断开连接, errorCode: 6 错误代码 处理方式: 去邮箱生成新的16位授权码,输入到 密码框 内即可。 注:一旦开通授权码,在Foxmail验证时 密码框 里输入的就是 授权码

【Android】在WSA安卓子系统中进行新实验性功能试用与抓包(2311.4.5.0)

前言 在根据几篇22和23的WSA抓包文章进行尝试时遇到了问题,同时发现新版Wsa的一些实验性功能能优化抓包配置时的一些步骤,因而写下此篇以作记录。 Wsa版本:2311.40000.5.0 本文出现的项目: MagiskOnWSALocal MagiskTrustUserCer…

【软考中级】3天擦线过软考中级-软件设计师

前提:已有数据结构、操作系统、计算机网络、数据库基础 (风险系数较高,请谨慎参考) 贴一个成绩单hhhh 弯路:很早之前有看过一遍网上的软考课程,也记录了一些笔记,然而听完还是啥都记不住。 推…

Text Workflow 1.8.2 mac文本转换处理

Text Workflow for mac是一款易于使用但功能强大的应用程序,可将任何文本转换成您需要的格式,以满足您的需求。Text Workflow具有广泛(并不断增长)的文本转换操作列表,可以实现各种功能。 软件下载:Text Wo…

RKE快速搭建离线k8s集群并用rancher管理界面

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 本文记录使用RKE快速搭建一套k8s集群过程,使用的rancher老版本2.5.7(当前最新版为2.7)。适用…

linux的安装配置

文章目录 1.centos7安装2.如何进行一个网络的开启3.客户端Xshell和Xftp的一个使用4.换源 1.centos7安装 1.我是在虚拟机里面重装了一个liunx系统,首先我们新建一个虚拟机 2.前面东西都不需要我们进行一个选择,到图中的这一步我们选择一个liunx,版本的话我们选择一个…

Go 复合数据类型

1. 数组(array)(OK) 数组数组的概念数组是具有固定长度且拥有零个或多个相同数据类型元素的序列 i. 元素的数据类型相同 ii. 长度固定的序列 iii. 零个或多个元素的序列 与 slice 对比 由于数组的长度固定,所以在 G…

c# ADODB.Recordset实例调用Fields报错

代码: using System; using System.CodeDom; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ADODB;namespace ConsoleApp1 {internal class Programre{static ADODB.Recordset recordsetInstance…

el-table分组合并行

接到一个需求,把数据按照天 分组显示 时间单独一行,数据在一块 这里新知识点:span-method const plist ref([{ dateHeader:2024-01-23, list:[{dateHeader:2024-01-23},{name:数据1,id:1},{name:数据2,id:2}] }, { dateHeader:2024-01-24,…