檔案通知:該存儲庫現已與官方的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 " ) ;