当前位置: 首页 > news >正文

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字段就是下载链接的地址。

费用

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

在这里插入图片描述

相关文章:

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

前言 在这里与Skybox AI一起,一键打造体验无限的360世界,这是这个AIGC一键生成全景图的网站欢迎语。 刚使用它是23年中旬,在没有空去给客户实地拍摄全景图时,可以快速用它生成一些相关的全景图,用作前期沟通的VR de…...

React Router v6 改变页面Title

先说正事再闲聊 1、在路由表加个title字段 2、在index包裹路由 3、在App设置title 闲聊: 看到小黄波浪线了没 就是说默认不支持title字段了 出来的提示, 所以我本来是像下面这样搞的,就是感觉有点难维护,就还是用上面的方法了 …...

postman测试导入文件

01 上传文件参数 1.选择请求方式 选择post请求方式,输入请求地址 2.填写Headers Key:Content-Type ; Value:multipart/form-data 如下图 3.填写body 选择form-data,key选择file类型后value会出现按钮&#xff0…...

ZigBee学习(一)

文章目录 一、ZigBee介绍二、IEEE 802.15.42.1 物理层2.2 MAC层2.3 如何实现网络和设备寻址2.4 能量管理 三、ZigBee网络拓扑结构四、ZigBee配置参数 一、ZigBee介绍 ZigBee是一种基于IEEE 802.15.4标准的高级通信协议,它被设计用于低速率、低功耗和短距离无线通信&…...

Unity—配置lua环境变量+VSCode 搭建 Lua 开发环境

每日一句:保持须臾的浪漫,理想的喧嚣,平等的热情 Windows 11下配置lua环境变量 一、lua-5.4.4版本安装到本地电脑 链接:https://pan.baidu.com/s/14pAlOjhzz2_jmvpRZf9u6Q?pwdhd4s 提取码:hd4s 二、高级系统设置 此电…...

前端-云点播技术

一、简介 云点播(Cloud Video On Demand)是一种基于云计算平台提供的视频点播服务。这种服务允许用户在需要的时候按需观看视频内容,而无需等待下载完成。以下是一些关于云点播技术的常见特征和要点: 存储和管理: 云存…...

k8s---ingress对外服务(traefik)

目录 ingress的证书访问 traefik traefik的部署方式: deamonset deployment nginx-ingress与traefix-ingress相比较 nginx-ingress-controller ui访问 deployment部署 ingress的证书访问 ingress实现https代理访问: 需要证书和密钥 创建证书 密钥 secre…...

MySQL-SQL-DQL

DQL-介绍 DQL-语法 基本查询 1、查询多个字段 2、设置别名 3、去除重复记录 条件查询 1、语法 2、条件 聚合函数 1、介绍 2、常见的聚合函数 3、语法 分组查询 1、语法 2、where与having区别 排序查询 1、语法 2、排序方式 分页查询 1、语法 DQL-执行顺序...

Docker(十四)Etcd 项目

作者主页: 正函数的个人主页 文章收录专栏: Docker 欢迎大家点赞 👍 收藏 ⭐ 加关注哦! etcd etcd 是 CoreOS 团队发起的一个管理配置信息和服务发现(Service Discovery)的项目,在这一章里面&a…...

EtherNet/IP开发:C++开发CIP源代码

① 介绍一下CIP CIP是一种考虑到自动化行业而设计的通用协议。然而,由于其开放性,它可以并且已经应用于更多的领域。CIP网络库包含若干卷: 第1卷介绍了适用于所有网络自适应的CIP的常见方面。本卷包含通用对象库和设备配置文件库&#xff0…...

【算法题】68. 文本左右对齐

题目 给定一个单词数组 words 和一个长度 maxWidth ,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。 你应该使用 “贪心算法” 来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必…...

PHP 调用 e 签宝接口签名指南

前言 在 401 问题上卡了 一段时间,参考官网文档和鉴权签名计算测试也试了很久,签名确定是没错的,但是一直提示 INVALID_SIGNATURE 其实问题在于我忽略了 公共请求头格式 中 Content-MD5 部分的一句话: GET 和 DELETE 请求且 Bod…...

穿越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 水位…...

服务器与Ajax

1.初识Ajax Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。 术语ajax最早产生于2005年,Ajax表示Asynchronous JavaScript and XML(异步JavaScript和XML),但是它不是像HTML、JavaScript或CSS这样的一种“正式的”技…...

Electron项目架构方案心得

这里只记录FE的业务流程设计考虑和Electron的业务流程考虑。 一个electron客户端,理想的架构是,底层的能力支持完全由electron底层模块支持。关于electron底层模块的支持,不限于node packages 或者 dll 或者 rust实现的一些东东。而业务流程…...

Java中创建List接口、ArrayList类和LinkedList类的常用方法(一)

List接口 要了解List接口,就不得不说起Java的集合框架。 (该图来自菜鸟教程) Collection接口和Map接口 Java 集合框架主要包括两种类型的容器,集合Collection和图Map。 Collection接口代表了单列集合,它包含了一组…...

顶级开源社区开发者体验实践分享

实践一:开发者贡献指南 实践二:Dev Container Setup(bonus) 实践三:Good First Issues 实践三:Good Second Issues(bonus) 实践四:RFC 机制 实践五:完善 CI I…...

STM32之RTC实时时钟

一、实时时钟概述 1、实时时钟介绍 英文缩写:RTC。显示年、月、日、时、分、秒、星期,自动计算闰年,能够区分每个月的天数。 RTC特点:能从RTC获取到具体的日期时间,断掉后再开机时间仍然准确(需要纽扣电池&#xff…...

Java JVM 堆、栈、方法区详解

目录 1. 栈 2. 堆 3. 方法区 4. 本地方法栈 5. 程序计数器 首先来看一下JVM运行时数据区有哪些。 1. 栈 在介绍JVM栈之前,先了解一下 栈帧 概念。 栈帧:一个栈帧随着一个方法的调用开始而创建,这个方法调用完成而销毁。栈帧内存放者方…...

Oracle篇—分区表和分区索引的介绍和分类(第一篇,总共五篇)

☘️博主介绍☘️: ✨又是一天没白过,我是奈斯,DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux,也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注❣…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

AI,如何重构理解、匹配与决策?

AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...