档案通知:该存储库现已与官方的Bockadelabs SDK v2.0.0集成
所有版权,商标,徽标和资产都是其各自所有者的财产。
需要统一2021.3 LT或更高。
推荐的安装方法是Unity软件包管理器和OpenUPM。
Package Manager
OpenUPMhttps://package.openupm.comcom.rest.blockadelabscom.utilitiesMy RegistriesBlockadeLabs软件包https://github.com/RageAgainstThePixel/com.rest.blockadelabs.git#upm注意:此存储库对其他存储库有依赖性!您有责任自己添加它们。
有4种提供您的API键的方法,按优先顺序:
警告
我们建议使用环境变量加载API密钥,而不是将其硬编码在您的源中。不建议在生产中使用此方法,而仅用于接受用户凭据,本地测试和快速启动方案。
var api = new BlockadeLabsClient ( " yourApiKey " ) ;或手动创建BlockadeLabsAuthentication对象
var api = new BlockadeLabsClient ( new BlockadeLabsAuthentication ( " yourApiKey " ) ) ; 您可以将密钥直接保存到Assets/Resources文件夹中的可脚本对象中。
您可以使用Project Pane的上下文菜单创建一个新的,并创建一个新的BlockadeLabsConfiguration脚本对象。

尝试从配置文件加载API键,默认情况下,在当前目录中的.blockadelabs ,可选地遍历目录树或用户的主目录中。
要创建一个配置文件,请创建一个名为.blockadelabs的新文本文件,并包含该行:
{
"apiKey" : " yourApiKey " ,
}您还可以通过调用身份验证中的静态方法直接加载文件:
var api = new BlockadeLabsClient ( new BlockadeLabsAuthentication ( ) . LoadFromDirectory ( " your/path/to/.blockadelabs " ) ) ; ; 使用系统的环境变量指定使用的API键。
BLOCKADELABS_API_KEY用于API键。 var api = new BlockadeLabsClient ( new BlockadeLabsAuthentication ( ) . LoadFromEnvironment ( ) ) ;您可以使用Blockadelabs仪表板在编辑器中从Blockadelabs网站上执行所有相同的操作!
Window/Dashboards/BlockadeLabs

生成Skybox并将其直接在编辑器中重新混合。

您还可以访问所有生成的天箱的完整列表,可以直接下载到项目中。

返回可以影响Skybox生成整体美学的预定义样式列表。
var api = new BlockadeLabsClient ( ) ;
var skyboxStyles = await api . SkyboxEndpoint . GetSkyboxStylesAsync ( SkyboxModel . Model3 ) ;
foreach ( var skyboxStyle in skyboxStyles )
{
Debug . Log ( $" { skyboxStyle . Name } " ) ;
} 返回预定义的样式列表,这些样式可以影响您的天箱一代的整体美学,并以风格的家庭排序。该路线可用于构建由家庭排序的样式菜单。
var api = new BlockadeLabsClient ( ) ;
var skyboxFamilyStyles = await BlockadeLabsClient . SkyboxEndpoint . GetSkyboxStyleFamiliesAsync ( SkyboxModel . Model3 ) ;
foreach ( var skyboxStyle in skyboxFamilyStyles )
{
Debug . Log ( $" { skyboxStyle . Name } " ) ;
} 返回所有可用导出类型的列表。
var api = new BlockadeLabsClient ( ) ;
var exportOptions = await api . SkyboxEndpoint . GetAllSkyboxExportOptionsAsync ( ) ;
foreach ( var exportOption in exportOptions )
{
Debug . Log ( $" { exportOption . Id } : { exportOption . Name } | { exportOption . Key } " ) ;
}
var request = new SkyboxRequest ( " mars " , enhancePrompt : true ) ;
// Generates ALL export options for the skybox
var skyboxInfo = await api . SkyboxEndpoint . GenerateSkyboxAsync ( request , exportOptions ) ;
Debug . Log ( $" Successfully created skybox: { skyboxInfo . Id } " ) ; 生成一个天箱。
var api = new BlockadeLabsClient ( ) ;
var skyboxStyles = await BlockadeLabsClient . SkyboxEndpoint . GetSkyboxStylesAsync ( SkyboxModel . Model3 ) ;
var request = new SkyboxRequest ( skyboxStyles . First ( ) , " mars " , enhancePrompt : true ) ;
// You can also get progress callbacks when the generation progress has changed/updated
var progress = new Progress < SkyboxInfo > ( async progress =>
{
Debug . Log ( progress ) ;
} ) ;
var skyboxInfo = await api . SkyboxEndpoint . GenerateSkyboxAsync ( request , progressCallback : progress ) ;
Debug . Log ( $" Successfully created skybox: { skyboxInfo . Id } " ) ;
if ( skyboxInfo . TryGetAsset < Texture2D > ( SkyboxExportOption . Equirectangular_PNG , out var texture ) )
{
skyboxMaterial . mainTexture = texture ;
} 返回给定的Skybox ID的Skybox元数据。
var skyboxId = 42 ;
var api = new BlockadeLabsClient ( ) ;
var skyboxInfo = await api . SkyboxEndpoint . GetSkyboxInfoAsync ( skyboxId ) ;
Debug . Log ( $" Skybox: { result . Id } " ) ;
// Note: If you wish to use the returned skybox info textures you'll need to additionally call await SkyboxInfo.LoadAssetsAsync(); before you can assign them to a material property.
await skyboxInfo . LoadAssetsAsync ( ) ;
if ( skyboxInfo . TryGetAsset < Texture2D > ( SkyboxExportOption . Equirectangular_PNG , out var texture ) )
{
skyboxMaterial . mainTexture = texture ;
} 用请求的导出类型导出Skybox。
笔记
最初生成Skybox时,您还可以指定导出类型。
var skyboxId = 42 ;
var api = new BlockadeLabsClient ( ) ;
var skyboxInfo = await api . SkyboxEndpoint . GetSkyboxInfoAsync ( skyboxId ) ;
skyboxInfo = await api . SkyboxEndpoint . ExportSkyboxAsync ( skyboxInfo , DefaultExportOptions . DepthMap_PNG ) ;
await skyboxInfo . LoadAssetsAsync ( ) ;
if ( skyboxInfo . TryGetAsset < Texture2D > ( SkyboxExportOption . DepthMap_PNG , out var texture ) )
{
skyboxMaterial . depthTexture = texture ;
} 通过ID删除Skybox。
var skyboxId = 42 ;
var result = await api . SkyboxEndpoint . DeleteSkyboxAsync ( skybox ) ;
// result == true 获取先前生成的天箱。
var history = await api . SkyboxEndpoint . GetSkyboxHistoryAsync ( ) ;
Debug . Log ( $" Found { history . TotalCount } skyboxes " ) ;
foreach ( var skybox in history . Skyboxes )
{
Debug . Log ( $" { skybox . Id } { skybox . Title } status: { skybox . Status } " ) ;
} 取消通过ID的待处理的Skybox生成请求。
var skyboxId = 42 ;
var result = await CancelSkyboxGenerationAsync ( skyboxId ) ;
// result == true 笔记
使用取消令牌取消Skybox生成时,这将自动完成。
取消所有等待的Skybox生成请求。
var result = await api . SkyboxEndpoint . CancelAllPendingSkyboxGenerationsAsync ( ) ;
Debug . Log ( result ? " All pending generations successfully cancelled " : " No pending generations " ) ;