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