Sceneform 1.15 无法在 ARCore-Android 中播放 fbx 动画

Posted

技术标签:

【中文标题】Sceneform 1.15 无法在 ARCore-Android 中播放 fbx 动画【英文标题】:Sceneform 1.15 Unable to play fbx animations in ARCore- Android 【发布时间】:2020-10-01 03:06:37 【问题描述】:

我是 Sceneform (1.15.0) 和相关 3D 文件格式(如 fbx 和 glTF)的新手。我看到了关于如何运行动画的示例动画项目(Andy Dance) 和sceneform 文档。

我在尝试什么?

运行场景形式 fbx 资产中存在的动画。我有 2 个资产 - ka27 helicopter 和 3d model

这两个 fbx 资产都有一些动画。当我尝试将这些资产导入 android Studio 时,它当前会抛出一个 error,我通过将 sceneform 资产添加到我的 sampledata 目录并在 app/gradle 文件中添加信息来克服这个问题。 .sfa 和 .sfb 文件生成正确。

sceneform.asset('sampledata/models/ka27.FBX',
        'default',
        'sampledata/models/ka27.sfa',
        'src/main/res/raw/ka27')

但是现在如果我尝试运行动画,我可以在场景中看到直升机,但没有动画-

arFragment.getArSceneView().getScene().addChild(helicopterNode);
AnimationData animationData = helicopterRenderable.getAnimationData("ka27");
ModelAnimator helicopterAnimator = new ModelAnimator(animationData, helicopterRenderable);
helicopterAnimator.start();

我的问题-

    这些资产是否正确并与场景动画兼容? getAnimationData中需要传递的参数是什么?我可以通过打开此资产找到此信息吗? (我尝试将这些资产,包括场景形式的示例 andy_dance 导入到 BlenderUnity 中,虽然我可以看到动画正在播放,但我真的无法在任何地方看到 animation data 名称属性。) .fbx.glTF 转换的资产是否保留其动画? sceneform 可以运行.glTF 动画吗? 动画是否必须单独导出以用于场景形式?如果是,那么如何?

.fbx 动画不起作用的应用示例图-

【问题讨论】:

【参考方案1】:

如果您打开您的.sfa,如果您的.fbx 文件包含任何动画,您将找到一个密钥animations。它应该是这样的:


  animations: [
    
      clips: [
        
          name: 'Animation 001',
          runtime_name: 'animation_1',
        ,
      ],
      path: 'sampledata/models/ka27.fbx',
    ,
  ],
  ...

getAnimationData 需要 runtime_name 的值,因此您需要修改以下行:

AnimationData animationData = helicopterRenderable.getAnimationData("ka27");

在我的.sfa 文件中,这一行变为:

AnimationData animationData = helicopterRenderable.getAnimationData("animation_1");

您可以注意到getAnimationData 也可以将.sfa 文件的数组animations 中的动画索引作为参数。所以你可以写:

AnimationData animationData = helicopterRenderable.getAnimationData(0);

ModelRenderable 的文档在here 可用。

【讨论】:

以上是关于Sceneform 1.15 无法在 ARCore-Android 中播放 fbx 动画的主要内容,如果未能解决你的问题,请参考以下文章

[ARCore][SceneForm] 手机旋转后的世界位置

ARCore Sceneform ChromaKeyVideo Sampleproject 如何使用视频功能

ARCore Sceneform ViewRenderable 以随机角度旋转图像

ARCore 不显示对象的真实尺寸

Google Sceneform – 是不是已弃用?有替代品吗? [关闭]

无法在 Android Studio 模拟器上安装 ARCore