首页 > 解决方案 > 在 android 应用程序中,如何在运行时加载 3d 动画以实现增强现实?

问题描述

我正在制作一个带有增强现实的应用程序,我需要在运行时加载一个 3d 动画(在 .fbx 文件中)。是否可以使用 arcore 加载此动画并显示给用户?

标签: androidaugmented-realityarcore

解决方案


您的 fbx 文件应该有动画,您可以签入 .sfb 文件动画数组。在渲染 3d 模型时,您可以使用该动画并进行播放。

 val modelData = it.getAnimationData(0)
                    val modelAnimator = ModelAnimator(modelData, it)
                    modelAnimator?.start()

完整代码:

 ModelRenderable.builder()
            .setSource(fragment.context, model)
            .build()
            .thenAccept {
                val anchorNode = AnchorNode(anchor)
                val skeletonNode = SkeletonNode()
                skeletonNode.localScale = Vector3(0.2f, 0.2f, 0.2f)
                skeletonNode.setParent(anchorNode)
                skeletonNode.renderable = it
                skeletonNode.setOnTapListener { hitTestResult: HitTestResult, motionEvent: MotionEvent ->
                    listener.onClick()
                }
                anchorNode.setOnTapListener { hitTestResult: HitTestResult, motionEvent: MotionEvent ->
                    listener.onClick()
                }


                it.material.setTexture("baseColor", texture)
                fragment.arSceneView.scene.addChild(anchorNode)
                val count: Int = it.animationDataCount
                if (count > 0) {
                    val modelData = it.getAnimationData(0)
                    val modelAnimator = ModelAnimator(modelData, it)
                    modelAnimator?.start()
                }

            }
            .exceptionally {
                return@exceptionally null
            }

推荐阅读