Avatar 定制#

Unreal renderer 微服务支持各种类型的 avatar 场景。

如何将您的 MetaHuman 引入 ACE 管线#

此过程的目标是将您自己的自定义 MetaHuman 集成到 ACE 管线中。

警告

我们仅支持 Windows。

您需要在 Windows 机器上完成以下所有步骤,然后交叉编译为 Linux。

我们正在努力支持 Linux,但目前无法在 Linux 上下载 MetaHuman。

步骤详解#

  1. 下载 Unreal Engine 5.3.2

  2. 设置 Visual Studio

  3. 创建一个新的空白项目。

    In the Unreal Project Browser, go to 'Games', select 'Blank', set a project location and name. Then click 'Create'.
  4. 接下来,访问 Quixel Bridge。

    Click on the icon showing a white cube with a green plus. From the dropdown select 'Quixel Bridge'.

注意

如果您没有看到此选项,则您可能正在使用 Linux,该插件目前在 Linux 上不可用,或者您需要在插件中激活它。

注意

您可能会收到 Windows 安全性的询问,Quixel 正在尝试被访问。单击“允许”以下载 MetaHumans。

  1. 在 Quixel Bridge 中,转到 MetaHumans 的选项卡。并下载您想要使用的那个。为此,您需要登录到您的 Epic Games 帐户。您使用 MetaHuman Creator (metahuman.unrealengine.com) 创建的任何自定义 MetaHumans 也将在此处列出,前提是它们是使用同一帐户创建的。下载后,您可以通过单击“添加”按钮将 MetaHuman 添加到您的项目中。

    Select the desired MetaHuman from the grid.

    选择 MetaHuman 并单击“下载”。

    ../../_images/unreal_download-metahuman.png

    下载后单击“添加”。

  2. 现在您的内容浏览器中将有一个“MetaHumans”文件夹。

  3. 在该目录中右键单击并创建一个新的“蓝图类”。

    ../../_images/unreal_blueprint.png
  4. 选择“Actor”。

    ../../_images/unreal_actor.png
  5. 将此新资源命名为 “BP_Avatar”

    ../../_images/unreal_bp-avatar-file.png
  6. 打开 BP_Avatar。

  7. 在该窗口打开的情况下,在内容浏览器中打开以您的 MetaHuman 名称命名的目录。在我的示例中为“Bernice”。在那里您将找到一个蓝图资源。将该资源拖放到 BP_Avatar 的视口中。由于资源正在加载,这可能会使编辑器冻结一段时间。

    ../../_images/unreal_drag-and-drop.gif
  8. 如果您收到有关缺少依赖项的弹出窗口,请单击“启用缺失”来启用它们。此时,系统可能会提示您重启编辑器。执行重启。

    ../../_images/unreal_messages.png
  9. 点击“编译”,然后点击“保存”图标。

    ../../_images/unreal_bp-avatar-compile.png
  10. 关闭编辑器,并使用 NGC CLI 下载 ‘ACE_Template_Scene’。暂时不要打开此项目 - 它依赖于 MetaHuman 资源,没有它将无法工作。

ngc registry resource download-version "nvidia/ace/ia-unreal-engine-project-template:0.1.0"

注意

Windows 在路径长度超过 260 个字符时会出现问题。因此,请确保您的路径较短。可以将模板项目文件夹重命名并移动到 C:\\UnrealProjects\\ACE_Template_Scene

  1. 找到您之前创建的项目的文件夹位置。从子文件夹 “Content” 内部复制 “MetaHumans” 文件夹,并将其粘贴到 ACE_Template_Scene 项目的 “Content” 文件夹中。

    ../../_images/unreal_metahuman-folder.png ../../_images/unreal_metahuman-folder_paste.png
  2. 为了使项目运行,您首先需要安装 3 个特殊的插件。使用 NGC CLI 下载这些资源

    ngc registry resource download-version "nvidia/ace/ace-unreal-renderer-plugin:2.2.0"
    

    然后将此插件放置在 Unreal Engine 的安装文件夹中的名为 “Marketplace” 的文件夹中(例如 C:\Program Files\Epic Games\UE_5.3\Engine\Plugins\Marketplace)。如果该文件夹不存在,请创建它。

    ngc registry resource download-version "nvidia/ace/ace-unreal-renderer-http-api-plugin:0.1.0"
    
    ngc registry resource download-version "nvidia/ace/ace-unreal-renderer-stream-helper-plugin:0.1.0"
    

    然后将这些插件放置在 ACE_Template_Scene 项目中名为 “Marketplace” 的文件夹中(例如 C:\UnrealProjects\ACE_Template_Scene\Plugins\Marketplace)。如果该文件夹不存在,请创建它。

  3. 现在您可以打开 “ACE_Template_Scene”,当您按下播放时,您应该会看到您的 metahuman。它们可能无法被相机很好地取景。这是因为 MetaHumans 的高度不同。要调整相机或环境,请参阅下一章。

  4. 当您第一次打开项目时,系统可能会要求您重建插件。只需单击“是”。

    ../../_images/unreal_project-rebuild-plugins.png

如何在 MetaHuman 场景中自定义相机和环境#

如果您想自定义 MetaHuman 场景的背景、灯光和相机,请按如下操作

  1. 打开 ACE_Template_Scene

  2. 在 “Scene” 文件夹内,有一个名为 “Environment” 的关卡

    ../../_images/unreal_environment-asset.png
  3. 打开 Environment 并根据您的喜好进行设计。在最终结果中,MetaHuman 将被放置在场景的中心,面向正 Y 方向。您可能想在那里放置一些东西作为参考,但请记住在保存场景之前将其移除。

  4. 要自定义相机,请打开 BP_DefaultCamera。在那里您将看到一个 “Cine Camera”。这定义了相机在您的环境中的位置。您可以根据您的喜好进行调整。

    ../../_images/unreal_cine-camera.png

如何调整质量/可扩展性设置#

在右上角的 “Settings” 下面是 “Engine Scalability Settings”。这些是可用的不同渲染质量(要自定义它们,请查阅 Epic 文档 可扩展性参考

../../_images/unreal_scalability.png

默认情况下,Unreal 将使用 ‘Epic’ 设置并根据您的硬件进行缩减。但您可能想要设置特定的可扩展性。模板场景包含一个调试蓝图,允许您在运行时使用数字键调整设置。此蓝图可以轻松地进行调整,以在启动时设置特定的设置。

  1. 打开位于 “Core” 文件夹中的名为 ‘BP_ScalabilityDebugControlls’ 的蓝图。

  2. 删除左侧的数字键节点。然后将 ‘Event BeginPlay’ 节点连接到您要设置为默认的可扩展性设置。(SCALABILITY 0 = Low,SCALABILITY 1 = Medium,SCALABILITY 2 = High,SCALABILITY 3 = Epic)

    ../../_images/unreal_default_scalability.gif

    注意

    您可能不应该将 “Low” 设置与 MetaHumans 一起使用,因为它们的头发将不再被渲染。

  3. 编译并保存蓝图。

如何打包和上传项目#

  1. 您现在可以为 Linux 打包项目。在 “Platforms” 下选择 “Linux”,然后选择 “Package Project”。如果您在那里没有列出 Linux,则有两种方法可以使其工作

    1. 设置 Windows 以进行交叉编译:开发要求

    2. 保存项目,在 Linux 机器上重新打开它,并从那里打包它。

    ../../_images/unreal_package-project.png

注意

如果您遇到类似 Error: HttpListener unable to bind to 127.0.0.1:8021 的构建错误,请关闭编辑器并从命令行构建项目。

"C:\Program Files\Epic Games\UE_5.3\Engine\Build\BatchFiles\RunUAT.bat" BuildCookRun -clientconfig=Development -serverconfig=Development -project=C:\UnrealProjects\ACE_Template_Scene\ACE_Template_Scene.uproject -utf8output -nodebuginfo -allmaps -noP4 -cook -build -stage -prereqs -pak -archive -archivedirectory=C:\UnrealProjects\ACE_Template_Scene\dist -platform=Linux

  1. 打包可能需要很长时间。结果将在您选择的位置创建一个名为 “Linux” 的文件夹。完成后,按照 将版本上传到 NGC 资源 部分中的说明将该文件夹的内容上传到 NGC。

  2. 通常,您现在还需要更新 UCS 应用程序中指向您的新资源的链接,该应用程序使用 Unreal Renderer 微服务。remoteResourcePath 下的参数需要更新以指向新资源。您还可以在 微服务参数 部分中找到有关各个参数的更多信息。

...
avatar-renderer:
  resourceDownload:
    remoteResourcePath:
      unrealEngineProject: "<ORG>/<TEAM>/<RESOURCE_NAME>:<RESOURCE_VERSION>" # e.g. "your-org/your-team/ia-unreal-renderer-asset-metahuman-example:0.1.0"
    secretName: ngc-api-key-secret
    image: nvcr.io/nvidia/ace/ngc-resource-downloader:1.1.4
...