您可以创建一个游戏,允许玩家使用照片和文本提示生成一个功能齐全的头像角色。
此过程涉及以下步骤:
- 请求头像生成会话。
- 提示用户拍摄自拍并生成头像的 2D 预览图像。
- 使用 HumanoidDescription 生成完整的头像角色。
请求头像生成会话
要开始照片到头像生成,请从服务器调用 AvatarCreationService:RequestAvatarGenerationSessionAsync() 来请求玩家的会话。会话为 Player 提供一定数量的头像预览和头像生成。
由于会话可能需要一些时间才能可用,AvatarCreationService:RequestAvatarGenerationSessionAsync() 返回一个 RBXScriptConnection 和一个以秒为单位的 waitTime。waitTime 可用于向 Player 提供有关他们何时能够开始生成的信息。
一旦会话准备就绪,回调将被调用,并传递一个包含会话信息的 Dictionary。该 Dictionary 包括:
- SessionId — 在调用 AvatarCreationService:GenerateAvatar2DPreviewAsync() 和 AvatarCreationService:GenerateAvatarAsync() 时作为参数传递。
- Allowed2DGenerations — 会话中允许的 2D 预览生成数量。
- Allowed3DGenerations — 会话中允许的头像生成数量。
- SessionTime — 会话的最大时间(以秒为单位)。
提示自拍并生成 2D 预览
会话开始后,提示用户拍摄自拍,并通过在服务器上调用 AvatarCreationService:PromptSelectAvatarGenerationImageAsync() 方法获取 fileId string。此 fileId 将传递给 AvatarCreationService:GenerateAvatar2DPreviewAsync() 方法。
要创建头像的 2D 预览图像,请调用以下方法:
AvatarCreationService:GenerateAvatar2DPreviewAsync() 以 SessionId、fileId 和可选的文本提示作为输入来生成 2D 头像预览。此方法返回一个 previewId。
此 previewId 应发送到客户端,然后可以用来检索预览作为 EditableImage。
如果用户对生成的预览不满意,可以重复此工作流程。
生成头像
一旦用户对预览满意,您可以生成完整的 3D 头像角色。
要生成头像角色:
- 在服务器上调用 AvatarCreationService:GenerateAvatarAsync(),并传递一个包含 SessionId 和 PreviewId 的 Dictionary。
- 此方法调用返回一个 string generationId。
- 使用 AvatarCreationService:LoadGeneratedAvatarAsync() 方法在游戏服务器和客户端上检索生成的头像数据作为 HumanoidDescription。
网格和纹理资产分别作为 EditableMesh 和 EditableImage 对象提供,以允许继续编辑生成的头像。应在游戏服务器和客户端副本上进行编辑,以保持它们在发布时同步。
发布头像
如果用户对生成的头像满意,可以使用 AvatarCreationService:PromptCreateAvatarAsync() 方法进行发布。
有关更多信息,请参见 游戏内创建。