Sceneform 动画
借助 Sceneform,您可以导入包含动画的模型。您可以使用 Sceneform API 播放和控制动画,并将节点附加到模型框架上。
例如,Sceneform 动画示例包含用于构建 Andy Android 模型和棒球帽的文件。Andy 模型包含动画数据,而棒球帽是非动画模型。运行此示例时,Andy 跳舞并挥舞双臂,帽子仍站着,用一个节点固定在头上。
区分 Sceneform 中的模型动画与 Android 中的属性动画非常重要。
模型动画由艺术家使用建模和动画软件提前制作。它们包含框架动画数据。这些动画必须导出为 *.fbx
文件,然后导入到 *.sfb
文件中,以便在 Sceneform 中使用。
属性动画是一个基本的 Android 概念,并不局限于 Sceneform。这种动画可以更改具有 getter 和 setter 的 Java 对象中的任何可变值。动画值可以动态设置,但无法打包到 *.sfb
文件中。
属性动画和模型动画都支持 Android 的 Animator API。它们都支持监听器、播放控件(启动/停止/结束/暂停/取消)、时长和启动延迟。
模型动画仅提供对 TimeInterpolators
播放的有限支持。模型动画不支持反向播放。
如需了解 Sceneform 动画建模的实际运用,请查看动画示例。
如需了解 Sceneform 的实际属性动画效果,请查看太阳系示例。
模型动画概念
在开始使用动画模型之前,建议您先了解与框架动画相关的具体概念,以及适用于 Sceneform 的相关限制和功能。
骨头。动画模型包含连在一起的骨头,形成层次结构中的父子关系。动画在播放过程中改变了骨架的位置和方向。
就像在 Sceneform 中移动父 Node
会导致所有子 Node
也移动一样,在 Sceneform 中移动父骨子也会移动子项。骨架可以通过动画移动,也可以通过 SkeletonNode
类作为节点访问。当骨头以 Node
的形式进行访问时,如果正在播放骨头,系统会用动画覆盖每帧的新位置。
骨架。框架由所有这些架构组成,形成一个父子关系的层次结构。
例如,人体模型可能包含“左肩”、“左上臂”、“左肘”和“左前臂”等骨头。从“左肩”作为此层次结构的父级,系统会将“左上臂”分配为子级。“左上臂”的子项可能是“左手肘”和下肢骨头的子项。当肩骨旋转时,上臂、前臂、肘部和下面的任何骨骼都会随之移动。
Sceneform 没有用于更改框架中框架之间父子关系的 API。必须提前在外部建模和动画软件包中完成此操作。
即使是描述无机物体的模型也可以利用骨架来描绘现实世界。例如,沙发的模型可以有骨架,也有骨架。
皮肤。皮肤是应用于模型的绘制的表面网格的权重。皮肤网格的位置和形状根据附近的骨头计算得出。这种皮肤连接骨架对应着模型变形的情况,从而提供更逼真的移动效果。
皮肤必须提前使用建模和动画软件包进行准备。Sceneform 可以更改皮肤网格的材料以改变模型的外观。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2022-09-26。
[null,null,["最后更新时间 (UTC):2022-09-26。"],[[["Sceneform allows importing and controlling 3D models with pre-made animations, including attaching objects to model skeletons for dynamic interactions."],["Sceneform supports both model animation (baked into the model file) and property animation (dynamically controlled in Android), each with its own features and limitations."],["Model animation in Sceneform relies on concepts like bones, skeletons, and skinning to define the structure and movement of animated objects."],["Developers can utilize Sceneform APIs to control playback, attach nodes, and interact with animated models within AR experiences."]]],["Sceneform allows importing and controlling animated models via its APIs, including attaching nodes to a model's skeleton. Model animations, created externally and imported as `*.sfb` files, differ from Android property animations, which modify Java object values dynamically. Sceneform model animations use skeletal animation, where bones, connected in a hierarchical skeleton, drive the movement of the model's skin. Bones can be manipulated via the `SkeletonNode` class. The skin mesh appearance can be customized in sceneform.\n"]]