《Time Ghost》的制作:利用AI模型,实现更具真实感的布料变形

news/2024/12/17 22:36:21/

在 2024 年 9 月,Unity 的 Demo 团队展示了一个全新的实时电影级 demo 《Time Ghost》。这个 demo 是基于 Unity 6 引擎制作的,采用了 Unity 6 中的一些新功能和技术能力,让我们能够实现前所未有的视觉品质和复杂程度。

在制作《Time Ghost》的过程中,我们意识到需要解决的一个问题是如何创建具有可信度的角色。这些角色需要穿着真实感很强的服装进行激烈的动画动作,因此布料材质的衣物要能够根据角色的动作正确地变形和产生褶皱。

这并不是一个容易解决的问题,因为布料在 3D 中通常很难处理,常常成为破坏沉浸感和现实感的主要因素。为了避免传统游戏中布料制作方法的局限性,我们需要采取一种不同的方案。

与此同时,我们知道 Unity 的工程团队一直在开发一个实时推理引擎,可以在 Unity 运行时跨平台运行,能够充分发挥机器学习模型的潜力。

在这篇文章中,我们将分享 demo 的制作过程,解释如何将传统动画工作流程与前沿的机器学习技术结合起来,从而提升实时角色动画的品质和真实感,特别是在布料变形方面。

标准角色设置

由于我们的角色建模和骨骼绑定遵循了行业标准,因此可以将常规的动作捕捉数据应用到完成了骨骼绑定和蒙皮的角色模型上,并进行关键帧动画。但为了让主角的服装动画看起来更加真实,我们找到了一种更高级的解决方案,不是单纯使用蒙皮网格和额外的 blendshapes。

基于机器学习的布料动力学

Sentis 是 Unity 对神经网络交换(Neural Network Exchange,NNX)框架的实现,是我们角色管线的核心。通过使用 Sentis,我们能够利用自己的高质量离线布料模拟数据集训练机器学习模型,并在运行时部署该模型。

数据集的构建

首先,我们为每个角色模型的动作表现创建了 70 个姿势,可在 30 帧中从中性姿势平滑过渡到最终的极限姿势。

在 Marvelous Designer 中,我们模拟了基于图案的布料,并能够捕捉到这70个动作中的布料变形行为。

数据提取

接下来的步骤是提取偏差值(delta 值),即皮肤网格和模拟网格之间的差异。这个计算可以在 Maya 或任何其他支持模型顶点数据的数字内容创作(DCC)软件中完成。这个过程涉及到反转蒙皮变形,同时要保持模拟变形的数据。

AI 模型的设计与训练

训练运行时模型可以使用任何机器学习框架,只要它能够转换为 ONNX 格式(开放神经网络交换格式)。最常用的框架有 TensorFlow 和 PyTorch。在《Time Ghost》项目中,我们使用了 TensorFlow 基于提取数据设计并训练了一个自定义模型。

提取的数据被输入到前馈神经网络(feedforward neural network,FNN)中,以角色的关节方向作为输入,然后基于偏差值(delta值)计算并输出相应的顶点位置。

高效的数据管理和实时变形

在 Unity 中,变形数据被应用到蒙皮角色网格上,并通过分块处理来维持一个小巧的运行时模型。

总的来说,我们可以在几小时内将现有的布料模拟(在我们的案例中是 Marvelous Designer 中的模拟)转化为 Unity 中的实时变形。对于《Time Ghost》,我们能够将 2.5GB 的离线变形数据压缩成一个 47MB 的模型。此外,由于 Sentis 在 GPU 上本地运行该模型,而且 GPU 上已存在蒙皮数据,因此我们可以在 GPU 上以 0.8 毫秒的速度变形 12 万个顶点。

接下来的计划

通过集成 Sentis,我们不仅提升了视觉真实感,达到了高度逼真和动态的变形效果,还提供了一种高效且能适应高质量游戏开发需求的工作流程。我们相信,类似的基于机器学习的工作流程将能够解决一系列不同的制作问题,尤其是高质量输出所需的数据量和实时处理预算之间的艰难平衡已经达到极限的情况。我们也在继续实验类似的工作流程,并计划将其应用于未来其他领域。

此外,我们在使用 Sentis 时获得的性能结果也蕴藏巨大潜力,因此我们已经开始研究是否可以将相同的流程应用于移动端开发。Unity 的工程师已经完成了一些初步验证,确认 Sentis 可以在移动设备上运行我们的角色模型,并实现逼真的布料变形效果。虽然移动端游戏开发通常不会追求高保真度,但能够将基于机器学习的方法应用到移动目标平台,表示风格化动画中的变形也能变得比以往更精细和美丽。

我们已经在 Unity Asset Store 中发布了《Time Ghost》demo 的两个 Unity 项目,一个是环境场景,另一个是角色。如果你想亲自体验上述流程的效果,可以从 Unity Asset Store 下载《Time Ghost:Character》项目。

https://assetstore.unity.com/packages/essentials/tutorial-projects/time-ghost-character-298910

它包括一个 Unity 6 的示例场景,内有角色和基于顶点的变形模型。我们还提供了文档,介绍了模型和训练过程。你可以尝试使用自己的角色模拟数据进行训练,看看这种方法是否对你的项目有所帮助。

角色示例中还包含了我们开发的毛发系统(Hair System),这个系统是Unity Originals在过去几个demo(《异教徒》、《Enemies》和《Time Ghost》)中逐步开发完成的。

Sentis 现已随 Unity 6 发布。Sentis 可以导入、优化和运行 AI 模型,具有真实世界交互、更智能的游戏玩法构建与出色游戏特效三大核心功能。欢迎下载体验 Unity 6,体验更快的渲染速度、更先进的光照选项、无缝的多人游戏工作流、增强的 AI 功能,以及对移动端 Web 运行时的改进支持。


http://www.ppmy.cn/news/1555973.html

相关文章

mac 安装CosyVoice (cpu版本)

CosyVoice 介绍 CosyVoice 是阿里研发的一个tts大模型 官方项目地址:https://github.com/FunAudioLLM/CosyVoice.git 下载项目(非官方) git clone --recursive https://github.com/v3ucn/CosyVoice_for_MacOs.git 进入项目 cd CosyVoic…

【人工智能】100+目标检测数据集模型算法源码(持续更新中建议收藏)

前言      目标检测在计算机视觉领域扮演着至关重要的角色,其核心任务是在图像或视频中识别并定位特定物体的位置。为了训练和评估这些算法的性能,研究人员和开发者常常依赖于一系列广泛应用的数据集。以下是一些非常有用的目标检测数据集、模型和算…

NVR小程序接入平台/设备EasyNVR深度解析H.265与H.264编码视频接入的区别

随着科技的飞速发展和社会的不断进步,视频压缩编码技术已经成为视频传输和存储中不可或缺的一部分。在众多编码标准中,H.265和H.264是最为重要的两种。今天我们来将深入分析H.265与H.264编码的区别。 一、H.265与H.264编码的区别 1、比特率与分辨率 H.…

springboot集成h2数据库并使用多数据源

前言 为了满足客户的需求,我们计划将项目中使用的MySQL数据库迁移至H2数据库。虽然项目已经集成了多数据源,理论上可以正常运作,但在实际操作过程中,我们发现项目启动时无法自动创建表。我们将对此问题进行深入分析,并…

211-基于FMC的1路1.5G ADC 1路 2.5G DAC子卡

一、板卡概述 FMC-1AD-1DA-1SYNC是我司自主研发的一款1路1G AD采集、1路2.5G DA回放的FMC、1路AD同步信号子卡。板卡采用标准FMC子卡架构,可方便地与其他FMC板卡实现高速互联,可广泛用于高频模拟信号采集等领域。 二、功能介绍 2.1 原理框图 2.2 硬件…

Java全栈项目 - 校园智慧节能管理平台

项目简介 校园智慧节能管理平台是一个基于Java全栈技术开发的现代化校园能源管理系统。该平台旨在通过智能化手段实现校园能源的精细化管理,提高能源使用效率,降低能源浪费,助力校园绿色可持续发展。 技术架构 后端技术栈 Spring Boot 2.xSpring SecurityMyBatis PlusMySQL…

大模型呼出机器人能够解决哪些问题?

大模型呼出机器人能够解决哪些问题? 原作者:开源呼叫中心FreeIPCC,其Github:https://github.com/lihaiya/freeipcc 大模型呼出机器人作为现代科技在客户服务领域的创新应用,能够解决多个方面的问题,以下是…

【Linux金典面试题(上)】41道Linux金典面试问题+详细解答,包含基本操作、系统维护、网络配置、脚本编程等问题。

大家好,我是摇光~,用大白话讲解所有你难懂的知识点 之前写了一篇关于 python 的面试题,感觉大家都很需要,所以打算出一个面试专栏。 【数据分析岗】Python金典面试题 这个专栏主要针对面试大数据岗位、数据分析岗位、数据运维等…