Pokedex-AR开发者教程:5步向AR场景添加一只新宝可梦(从Poly模型到.sfb导入)

Pokedex-AR开发者教程:5步向AR场景添加一只新宝可梦(从Poly模型到.sfb导入)

【免费下载链接】Pokedex-AR 🦄 Pokedex-AR demonstrates ARCore, Sceneform, and modern Android tech stacks — such as Hilt, Coroutines, Flow, Jetpack (Room, ViewModel, LiveData) based on MVVM architecture. 【免费下载链接】Pokedex-AR 项目地址: https://gitcode.com/gh_mirrors/po/Pokedex-AR

Pokedex-AR 是基于 ARCore + Sceneform 的 AR 宝可梦示例应用,结合 Hilt、Coroutines + Flow、MVVM 架构等现代 Android 技术栈,将 3D 宝可梦模型渲染进真实环境。本教程以「新增一只宝可梦」为主线,用 5 个步骤讲清从 Poly 挑选 3D 模型、Sceneform Viewer 转换 .sfb,到最终在 AR 场景中看到它的完整流程,新手也可以跟着做。

如果本地还没有项目,先执行:

git clone https://gitcode.com/gh_mirrors/po/Pokedex-AR

Pokedex-AR AR场景效果截图:宝可梦列表与妙蛙种子、伊布AR详情页面

第1步:从 Google Poly 获取 3D 模型并转换成 .sfb 🎯

  • 在 Poly 上搜索你喜欢的宝可梦造型,下载 .glb 格式模型
  • 项目现用的宝可梦与精灵球模型出自艺术家 Tipatat Chennavasin,花园场景来自 Poly by Google,均采用 CC-BY 3.0 许可(商用需保留署名)
  • 用 Sceneform Viewer(Android Studio 插件)打开 .glb,转换为:
    • .sfb:静态渲染文件,运行时真正加载的就是它
    • .sfa:动画文件

第2步:把 .sfb 导入 assets 目录 📦

将转换好的文件复制到 App 模块的资源目录 app/src/main/assets/ 下,每个宝可梦一个 .sfb 文件。项目已内置 15 个示例模型(pikachu.sfb、snorlax.sfb 等),可作为对照。

Pokedex-AR AR场景使用的3D模型BaseColor贴图图集:花园场景模型纹理

此外,app/sampledata/ 保留了各宝可梦的模型源文件(如 pikachu/pikachu.sfa、pikachu/pikachu.sfb)以及 3D 模型的 Garden_BaseColor.png 贴图,方便理解模型与贴图的关系。

第3步:在 PokemonModels.kt 中注册新宝可梦 🧩

打开核心模块 pokedexar-core/src/main/java/com/skydoves/pokedexar_core/PokemonModels.kt,为每只宝可梦定义一个 RenderingModel(字段含义见 RenderingModel.kt 注释:名称、模型文件名、朝向、缩放、位置):

fun getTotodile() = RenderingModel(
  name = "totodile",
  model = "totodile.sfb",
  scale = 1.2f
)

💡 scale 决定模型在现实中的大小:项目里 Jigglypuff 是 0.45f、Snorlax 是 3f、精灵球仅 0.1f,按你模型的实际比例微调即可。

第4步:接入名称映射与随机抽取 🔁

这一步让新宝可梦能被详情页和捕捉页找到,共 3 个小改动:

  1. getPokemonByName():增加 "totodile" -> getTotodile() 分支(详情页按名字取模型,找不到会兜底返回 Eevee)
  2. getRandomPokemon():增加对应分支,⚠️ 同时把 Random.nextInt(13) 改成 Random.nextInt(14)——这是最容易被漏掉的一处
  3. PokemonUtils.getPokemonId():在 app/src/main/java/com/skydoves/pokedexar/utils/PokemonUtils.kt 中补充名字→图鉴 ID 的映射(如 pikachu -> 25)。该 ID 会被 SceneRepository 用于将捕捉次数持久化到 Room 数据库

第5步:编译运行,验证 AR 场景效果 ✅

  • 需要支持 ARCore 的 Android 真机(AndroidManifest.xml 已声明 android.hardware.camera.ar 特性与 com.google.ar.core = required)
  • 进入捕捉页后,相机追踪状态进入 TRACKING 即自动创建锚点,随机渲染一只宝可梦 + 精灵球,点击球体完成「捕捉」并记录 hits
  • 详情页(DetailActivity)会在 Garden 场景中渲染指定宝可梦,适合单独验收新模型的比例与朝向

新增宝可梦常见踩坑速查

问题快速解决办法
模型太大,占满整个画面调小 RenderingModel 的 scale
模型不显示确认 .sfb 已放入 assets/ 且文件名与 model 字段完全一致
模型不播放动画检查对应的 .sfa 动画文件是否正确导入
捕捉后次数不增加检查 PokemonUtils.getPokemonId() 是否漏加映射
随机抽不到新宝可梦检查 getRandomPokemon() 的 nextInt 上限是否已 +1

总结

整条链路可以概括为:Poly 取模型 → Sceneform Viewer 转 .sfb → 放入 assets → 在 PokemonModels.kt 注册 → 接入映射并验证。掌握这 5 步,你就能随时扩展 Pokedex-AR 的宝可梦阵容,并顺带理解 ARCore 锚点、Sceneform 模型加载与 MVVM 数据流的协作方式。

【免费下载链接】Pokedex-AR 🦄 Pokedex-AR demonstrates ARCore, Sceneform, and modern Android tech stacks — such as Hilt, Coroutines, Flow, Jetpack (Room, ViewModel, LiveData) based on MVVM architecture. 【免费下载链接】Pokedex-AR 项目地址: https://gitcode.com/gh_mirrors/po/Pokedex-AR

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值