Você pode criar um jogo que permite aos jogadores gerar um personagem avatar totalmente funcional usando uma foto e um prompt de texto.
Esse processo envolve os seguintes passos:
- Solicitar uma sessão de geração de avatar.
- Solicitar ao usuário que tire uma selfie e gere uma imagem de pré-visualização 2D do avatar.
- Gerar o personagem avatar completo usando HumanoidDescription.
Solicitar uma sessão de geração de avatar
Para iniciar uma geração de avatar a partir de foto, chame AvatarCreationService:RequestAvatarGenerationSessionAsync() do servidor para solicitar uma sessão para o jogador. Uma sessão fornece a um Player um certo número de pré-visualizações de avatar e gerações de avatar.
Como pode levar algum tempo para que uma sessão fique disponível, AvatarCreationService:RequestAvatarGenerationSessionAsync() retorna uma RBXScriptConnection e um waitTime em segundos. O waitTime pode ser usado para fornecer ao Player informações sobre quanto tempo levará para que eles possam começar suas gerações.
Uma vez que uma sessão esteja pronta, o callback é invocado com um Dictionary de informações sobre a sessão. O Dictionary inclui:
- SessionId — Passado como um argumento ao chamar AvatarCreationService:GenerateAvatar2DPreviewAsync() e AvatarCreationService:GenerateAvatarAsync().
- Allowed2DGenerations — O número de gerações de pré-visualização 2D permitidas em uma sessão.
- Allowed3DGenerations — O número de gerações de avatar permitidas em uma sessão.
- SessionTime — O tempo máximo para uma sessão em segundos.
Solicitar selfie e gerar pré-visualização 2D
Após uma sessão ser iniciada, solicite ao usuário que tire uma selfie e obtenha o fileId string chamando o método AvatarCreationService:PromptSelectAvatarGenerationImageAsync() no servidor. Este fileId será passado para o método AvatarCreationService:GenerateAvatar2DPreviewAsync().
Para criar uma imagem de pré-visualização 2D do avatar, chame os seguintes métodos:
- AvatarCreationService:GenerateAvatar2DPreviewAsync() no servidor.
- AvatarCreationService:LoadAvatar2DPreviewAsync() no cliente.
O AvatarCreationService:GenerateAvatar2DPreviewAsync() recebe o SessionId, fileId e um prompt de texto opcional como entrada para gerar uma pré-visualização 2D do avatar. Este método retorna um previewId.
Este previewId deve ser enviado ao cliente e pode então ser usado para recuperar a pré-visualização como um EditableImage.
Se o usuário não estiver satisfeito com a pré-visualização gerada, esse fluxo de trabalho pode ser repetido.
Gerar o avatar
Uma vez que o usuário esteja satisfeito com a pré-visualização, você pode gerar o personagem avatar 3D completo.
Para gerar um personagem avatar:
- Chame AvatarCreationService:GenerateAvatarAsync() no servidor com um Dictionary contendo o SessionId e PreviewId.
- Esta chamada de método retorna um string generationId.
- Recupere os dados do avatar gerado como um HumanoidDescription usando o método AvatarCreationService:LoadGeneratedAvatarAsync() tanto no servidor do jogo quanto no cliente.
- Use o método Players.CreateHumanoidModelFromDescription para criar um modelo de avatar a partir do HumanoidDescription para exibir ao Player.
Os ativos de malha e textura são fornecidos como objetos EditableMesh e EditableImage, respectivamente, para permitir a edição contínua do avatar gerado. As edições devem ser feitas tanto no servidor do jogo quanto na cópia do cliente para mantê-las sincronizadas para publicação.
Publicar o avatar
Se o usuário estiver satisfeito com o avatar resultante, ele pode ser publicado usando o método AvatarCreationService:PromptCreateAvatarAsync().
Para mais informações, veja criação no jogo.