android - 在 android 应用程序中,如何在运行时加载 3d 动画以实现增强现实?
问题描述
我正在制作一个带有增强现实的应用程序,我需要在运行时加载一个 3d 动画(在 .fbx 文件中)。是否可以使用 arcore 加载此动画并显示给用户?
解决方案
您的 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
}
推荐阅读
- excel - vba 函数“sendkeys”不发送任何内容
- python - 我的代码检查变量是否为 nan。它是 nan 但不知何故在检查中幸存下来?
- python - 有没有办法根据另一个数据框添加 NaN 值?
- visual-studio-code - VS Code Extension,如何编程刷新 PlantUML 预览
- java - Optaplanner 和 Quarkus 求解器配置更新
- android - 每次 UI 测试后如何使用“pm clear”清理应用程序数据
- java - 并行运行 maven 测试而不等待兄弟模块依赖项
- azure - 如何更改 SignUpOrSignIn 以验证 Azure AD B2C 自定义策略中登录时的自定义属性?
- java - 从java中的sftp服务器下载所有文件
- node.js - 如何在 Post 上设置选项(公共或私人)?反应,nodejs