GenerationService

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Non costruibile
Assistenza

GenerationService è un servizio che consente ai sviluppatori di generare oggetti 3D da prompt di testo utilizzando il modello di fondazione 3D Cube 3D di Roblox.

La generazione di mesh è un processo a due passi:

  1. GenerateMeshAsync() avvia il processo di generazione della mesh utilizzando un prompt di testo e altri parametri richiesti.Restituisce un identificatore univoco (ID di generazione) che può essere utilizzato per recuperare il Risultatofuturo.
  2. LoadGeneratedMeshAsync() carica la mesh generata nell'esperienza. La mesh viene restituita come un MeshPart contenente un EditableMesh .

Attualmente, GenerationService supporta solo l'uso seguente:

Di Risultato, quando una richiesta di generazione di mesh origina da un client, il client deve inviare un segnale al server per avviare la generazione.Una volta che il server determina che la generazione è completa, dovrebbe avvisare il cliente appropriato di chiamare LoadGeneratedMeshAsync() e recuperare la Mesh, maglia.Si noti che poiché la mesh generata è caricata con EditableMesh contenuto e solo sul client, non viene replicata ad altri client.

Il seguente codice illustra questo modello di design.Vedi questa esperienza di dimostrazione per un esempio più dettagliato.Fai clic sul pulsante e Modifica in Studio .

Campioni di codice

Adds server-side functionality to handle mesh generation requests from clients.

Server-side mesh generation

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local GenerationService = game:GetService("GenerationService")
-- Create a RemoteEvent for client-server communication
local meshGenerationEvent = Instance.new("RemoteEvent")
meshGenerationEvent.Name = "MeshGenerationEvent"
meshGenerationEvent.Parent = ReplicatedStorage
-- Event to send generation results back to clients
local generationResultEvent = Instance.new("RemoteEvent")
generationResultEvent.Name = "GenerationResultEvent"
generationResultEvent.Parent = ReplicatedStorage
-- Handle mesh generation requests from clients
meshGenerationEvent.OnServerEvent:Connect(function(player, prompt)
print("Generating mesh for player", player.Name, "with prompt:", prompt)
-- Generate the mesh on the server
local success, generationId, contextId = pcall(function()
return GenerationService:GenerateMeshAsync(
{["Prompt"] = prompt},
player,
{},
function(intermediateType, intermediateGenerationId, intermediateContextId)
-- Send intermediate result to the requesting client
generationResultEvent:FireClient(
player,
intermediateGenerationId,
true -- isIntermediate
)
end
)
end)
if success then
-- Send the final generation ID to the client
generationResultEvent:FireClient(player, generationId, false)
print("Successfully generated mesh with ID:", generationId)
else
-- Notify the client of failure
generationResultEvent:FireClient(player, nil, false)
warn("Failed to generate mesh:", generationId)
end
end)

Adds client-side functionality to request mesh generation from the server and display the results.

Client-side mesh generation

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local GenerationService = game:GetService("GenerationService")
local Players = game:GetService("Players")
-- Connect to the RemoteEvents
local meshGenerationEvent = ReplicatedStorage:WaitForChild("MeshGenerationEvent")
local generationResultEvent = ReplicatedStorage:WaitForChild("GenerationResultEvent")
-- Local player
local player = Players.LocalPlayer
-- Store generated meshes
local generatedMeshes = {}
-- Function to request mesh generation
local function requestMeshGeneration(prompt)
print("Requesting mesh generation for prompt: " .. prompt)
meshGenerationEvent:FireServer(prompt)
end
-- Handle generation results from the server
generationResultEvent.OnClientEvent:Connect(function(generationId, isIntermediate)
if not generationId then
print("Generation failed")
return
end
print(isIntermediate and "Loading intermediate result..." or "Loading final result...")
local mesh = GenerationService:LoadGeneratedMeshAsync(generationId)
if mesh then
-- Clean up previous mesh if it exists
if generatedMeshes[isIntermediate and "intermediate" or "final"] then
generatedMeshes[isIntermediate and "intermediate" or "final"]:Destroy()
end
mesh.Parent = workspace
-- Position the mesh in front of the player
local character = player.Character
if character and character:FindFirstChild("HumanoidRootPart") then
local rootPart = character.HumanoidRootPart
mesh:PivotTo(rootPart.CFrame * CFrame.new(0, 0, -10))
end
-- Store the mesh for cleanup
generatedMeshes[isIntermediate and "intermediate" or "final"] = mesh
print(isIntermediate and "Loaded intermediate result" or "Loaded final result")
else
print("Failed to load mesh")
end
end)
-- Example usage
requestMeshGeneration("toy robot")

Sommario

Metodi

Proprietà

Metodi

GenerateMeshAsync

Resa

Avvia la generazione di una nuova mesh 3D da una richiesta di testo e restituisce ID unici utilizzati per tracciare e recuperare il Risultato.Puoi opzionalmente ricevere risultati intermedi, come la Mesh, maglianon texturizzata, fornendo una funzione intermediateResultCallback .Dopo che la generazione è completata, usa LoadGeneratedMeshAsync() per caricare e visualizzare la Mesh, maglia.

Limiti di tariffa Esiste un limite di velocità di 5 generazioni al minuto per esperienza.Se superi questo limite, altre richieste di generazione sono bloccate fino al prossimo minuto.

Codici di errore | Errore | Descrizione | Azione di sviluppatore raccomandata | | ------------------------ | ------------------------------------------------------------------------------------ | | Limite di velocità superato | Il numero massimo di generazioni di mesh è stato superato per il minuto.| Attendi fino a quando il limite di tasso viene ripristinato. | | Fallimento della moderazione | La generazione della mesh è stata contrassegnata per la moderazione.| Revisione e modifica del prompt per garantire che aderisca alle linee guida di moderazione di Roblox.| | Errore interno del server | Si è verificato un problema inaspettato sul server.| Riprova la richiesta più tardi o controlla lo stato del Serverper problemi.| | Limite di caratteri superato | La lunghezza della richiesta di input per questa generazione richiesta ha superato il limite.| Riduci il numero di caratteri nella stringa Prompt del dizionario input. |

Parametri

inputs: Dictionary

Un dizionario che contiene le richieste di generazione della mesh.Attualmente, l'unica chiave supportata è la Prompt (Stringa) che descrive la mesh da generare.

Valore predefinito: ""
player: Player

La richiesta Player che richiede la generazione.

Valore predefinito: ""
options: Dictionary

Opzioni di generazione aggiuntive. Attualmente, non sono supportate opzioni.

Valore predefinito: ""
intermediateResultCallback: function

Una funzione di richiamo attivata con i risultati di generazione intermedi. Utile per recuperare le versioni mesh early (ad esempio prima che le texture vengono applicate).

Valore predefinito: ""

Restituzioni

Un tuple di ID di generazione e ID di contesto.

  • ID di generazione: un ID univoco restituito per ogni invocazione di GenerateMeshAsync() .
  • ID contestuale: Non attualmente utilizzato.

Campioni di codice

Simple example showing how to use GenerateMeshAsync() to generate a mesh from a prompt.

Basic usage

local generationId, contextId = GenerationService:GenerateMeshAsync({["Prompt"] = "toaster"}, player, {})

Example showing how to use GenerateMeshAsync() with a callback for intermediate results.

Intermediate results callback

local generationId, contextId = GenerationService:GenerateMeshAsync({["Prompt"] = prompt}, player, {}, function(intermediateType, generationId, contextId)
-- Add your logic here
end)

Example showing how to handle errors when generating meshes with GenerateMeshAsync().

Server-side generation with error handling

local success, generationIdOrError, contextId = pcall(function()
return GenerationService:GenerateMeshAsync(
{["Prompt"] = "robot toy"},
player,
{},
function(intermediateType, intermediateId, intermediateContextId)
-- Notify client about intermediate result
generationResultEvent:FireClient(player, intermediateId, true)
end
)
end)
-- Handle a specific error code
if generationIdOrError == "Rate limit exceeded" then
-- Wait for the rate limit to reset
elseif success then
-- Send the final generation ID to the client
generationResultEvent:FireClient(player, generationIdOrError, false)
end

LoadGeneratedMeshAsync

Resa

Recupera e carica una mesh generata da GenerationService:GenerateMeshAsync() utilizzando l'ID di generazione fornito.La mesh viene restituita come un MeshPart con EditableMesh contenuto.Poiché le maglie modificabili non vengono replicate, la maglia caricata non viene replicata ad altri client e può essere caricata solo una volta per generationId .

Parametri

generationId: string

L'ID univoco restituito da GenerateMeshAsync() . Identifica la mesh da Caricare.

Valore predefinito: ""

Restituzioni

La Mesh, magliagenerata, restituita come MeshPart contenente un EditableMesh .

Campioni di codice

Example showing how to load a generated mesh using LoadGeneratedMeshAsync().

LoadGeneratedMeshAsync - Load generated mesh

-- Take your generation ID generated on the server and load your generation
local mesh = GenerationService:LoadGeneratedMeshAsync(generationId)
mesh.Parent = workspace

Eventi