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

费用

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构——Java实现栈和队列

一、栈 Stack 1.特点 (1)栈是一种线性数据结构 (2)规定只能从栈顶添加元素,从栈顶取出元素 (3)是一种先进后出的数据结构(Last First Out)LIFO 2.具体实现 Java中可…

Zookeeper集群

一、Zookeeper概述 1.1 Zookeeper 定义 Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目。 1.2 Zookeeper 工作机制 Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理…

华夏基金“冰火两重天”:产品增量不增值,靠什么赢得用户?

近日,华夏基金发布关于华夏野村日经225交易型开放式指数证券投资基金(QDII)(下称“华夏野村日经ETF”)二级市场交易价格溢价风险提示及临时停牌公告。 公告内容显示,华夏野村日经ETF二级市场交易价格明显高…

备战2个月,面试被问麻了....

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

为什么静态IP是您批量创建社交媒体和账户管理必备?

“新设备登录请求被拒绝,请使用常用设备登录。”谁没有遇到过远程管理社交或商业账户时登录被拒的情况呢? 更糟糕的情况可能是遇到这样的提示:“您的账号可能被盗用,暂时限制使用。请按要求进行身份验证。” 最坏的结果则可能是因为各种原…

工业RFID读卡器的功能和作用

工业读卡器主要用于识别和读写特定目标的数据,它的种类有很多,有分体的读写器也有一体的读写器,根据不同场景的应用可以选择不同的读写器。 工业RFID读卡器的功能和作用 工业RFID读卡器在工业自动化和物流管理等领域中发挥着重要作用。其主要…

什么是DDoS攻击?

什么是DDoS攻击? 拒绝服务(Denial-of-Service,DoS)攻击是一种针对某些服务可用性的攻击。 通过耗尽CPU、内存、带宽以及磁盘空间等系统资源,来阻止或削弱对网络、系统或应用程序的授权使用的行为。 如果攻击者采用单一…

动态权限有哪些

定位权限: ACCESS_FINE_LOCATION:精确位置ACCESS_COARSE_LOCATION:大致位置 相机权限: CAMERA:访问摄像头 存储权限: READ_EXTERNAL_STORAGE:读取外部存储WRITE_EXTERNAL_STORAGE:…

springboot集成easypoi

easypoi,主打的功能就是容易,通过简单的配置&#xff0c;就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出 pom导入依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-star…

SpringCloud Aliba-Seata【上】-从入门到学废【7】

目录 &#x1f9c2;.Seata是什么 &#x1f32d;2.Seata术语表 &#x1f953;3.处理过程 &#x1f9c8;4.下载 &#x1f37f;5.修改相关配置 &#x1f95e;6.启动seata 1.Seata是什么 Seata是一款开源的分布式事务解决方案&#xff0c;致力于在微服务架构下提供高性能…

【C++修行之道】STL(初识pair、vector)

目录 一、pair 1.1pair的定义和结构 1.2pair的嵌套 1.3pair自带排序规则 1.4代码示例 二、vector 2.1vector的定义和特性 2.2vector的初始化 一维初始化&#xff1a; 2.3vector的常用函数 2.4vector排序去重 排序: 去重&#xff1a; 示例&#xff1a; 一、pair …

宠物空气净化器推荐哪个好?实惠的猫用猫用净化器牌子测评

作为宠物主人&#xff0c;我们深知养宠物的乐趣和责任&#xff0c;但同时也面临着一些挑战&#xff0c;比如宠物掉毛、异味和空气质量等问题。这就是为什么越来越多的家庭选择宠物空气净化器&#xff0c;为我们创造一个清新、健康的室内环境。 无论我们多么爱我们的毛茸茸伙伴…

STM32(--001) Win10、Win11 上的驱动安装说明

一、USB线插到 CMSIS-DAP 接口上&#xff0c;将自动识别到两个设备 ① CMSIS-DAP&#xff1a;用于烧录代码、在线硬件仿真; 在Keil里烧录&#xff0c;无需通过FlyMCU; ② USB转TTL&#xff1a;用于开发板与电脑间串口通信 &#xff0c;即USART1, TX-PA9、RX-PA10; 接口备注&a…

UDP和TCP代理协议有什么区别?哪个更好

在互联网的世界里&#xff0c;数据传输的方式有很多种&#xff0c;其中 UDP 和 TCP 是两种常见的传输协议。而代理协议则是为了在网络中传输数据时提供安全、稳定和高效的传输环境。那么&#xff0c;UDP 和 TCP 代理协议有什么区别呢&#xff1f;哪个更好呢&#xff1f;接下来&…

web系统服务器监控检查

一、检查操作系统是否存在增减文件&#xff0c;是否有shell被上传 要检查操作系统是否存在增减文件或是否有shell被上传&#xff0c;您可以按照以下步骤进行操作&#xff1a; 文件完整性检查&#xff1a; 使用文件系统的完整性检查工具&#xff0c;例如fsck&#xff08;对于ext…

Linux之快速入门

一、Linux目录结构 从Windows转到Linux最不习惯的是什么&#xff1a; 目录结构 Windows会分盘&#xff0c;想怎么放东西就怎么放东西&#xff0c;好处自由&#xff0c;缺点容易乱 Linux有自己的目录结构&#xff0c;不能随随便便放东西 /&#xff1a;根目录/bin:二进制文件&…

Mapbox加载浙江省天地图服务和数据处理

1. 加载影像服务 通过浙江省天地图官网申请所需服务&#xff0c;使用token获取服务数据 由于浙江省天地图使用的坐标系是 cgcs2000&#xff0c;需要使用 的框架对应为 cgcs2000/mapbox-gl&#xff0c;通过cdn引入或npm下载 影像服务地址为&#xff1a; ‘https://ditu.zjzw…

力扣hot100 环形链表 快慢指针 哈希 数学公式

Problem: 142. 环形链表 II 文章目录 思路Code 思路 &#x1f468;‍&#x1f3eb; 参考题解 Code ⏰ 时间复杂度: O ( n ) O(n) O(n) &#x1f30e; 空间复杂度: O ( 1 ) O(1) O(1) /** /*** Definition for singly-linked list.* class ListNode {* int val;* …

Vector源码

Vector源码 总结 Vector底层采用数组对元素进行存储&#xff0c;与ArrayList不同的是使用synchronized保障了线程安全&#xff0c;并且扩容机制为原容量的1.5倍&#xff0c;而数组的初始化时机是调用构造方法后&#xff0c;ArrayList是调用add方法后,由于读和写都加了锁&…