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
导入到 Blender
和 Unity
中,虽然我可以看到动画正在播放,但我真的无法在任何地方看到 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 以随机角度旋转图像