能力地图:PICO 空间应用开发

你已经完成了 22 课的系统学习,以下是完整的”能力→功能”映射。

如何使用本地图

每当你有一个新想法,先定位到对应的”应用场景”,然后看”所需能力”列,反查课程笔记即可快速上手。

一、能力全景分类

Kotlin 语言

  • 读写 Kotlin 代码,理解空安全/扩展/密封类
  • 使用协程进行异步/并发编程
  • 使用 Flow 做响应式数据流
  • 集合操作与函数式编程

Android 基础

  • Gradle KTS 构建配置 + 版本目录
  • Jetpack Compose 声明式 UI
  • MVVM + ViewModel + State
  • 数据持久化 (Room/DataStore)
  • 网络请求 (Retrofit/OkHttp)

空间应用架构

  • SpatialAppScopemainApp 入口
  • WindowContainer / Stage 容器
  • ECS 实体组件系统
  • 共享空间 vs 全空间模式
  • 生命周期管理

空间用户界面

  • PicoTheme 主题系统
  • 30+ 内置设计组件
  • 3D 手势交互 (Tap/Drag/Rotate/Scale)
  • 空间窗口 (Planar/Volumetric)
  • 玻璃材质和 vibrant 效果
  • Hover 效果和自定义

空间感知 & 追踪

  • 平面检测 / 网格扫描
  • 空间 Anchor 定位
  • 手势追踪 (Hand Tracking)
  • 眼球追踪 / 面部追踪
  • 空间键盘
  • 世界 Mesh 语义标签

渲染 & 交互

  • 3D 模型加载 (USD/glTF)
  • 骨骼动画 / 补间动画
  • 空间音频 (环境音/对象音)
  • 空间视频播放 (SBS 立体)
  • 物理仿真 (刚体/碰撞)
  • 自定义材质 (Unlit/PBR)

空间 UI 设计规范

  • PicoTheme 主题配色系统
  • 玻璃材质 (Material Regular/Light)
  • hover 反馈最佳实践
  • 空间窗口布局规范
  • 手势冲突避免

开发 & 调试工具

  • PICO CLI 命令操作
  • PICO 模拟器使用
  • pico-cli perf 性能分析
  • Perfetto Trace 分析
  • 3D 模型测量 (calculate_bbox)
  • 场景变换配置 (scene_transforms)

二、需求 → 能力 映射表

当你有一个具体的功能需求时,对照此表找到需要使用的 SDK 模块和能力:

你想实现什么需要的核心能力涉及的 SDK 模块参考 Demo / 课程
在空间中显示一个 3D 模型模型加载 + Entity 场景挂载spatial-corewelcomespace / 第6课
用户用射线点击一个按钮空间 UI + Modifier + 手势spatial-ui:foundation/designspatialui / 第12课
用户用手拖拽旋转一个物体CollisionComponent + InteractableComponent + 手势检测spatial-core + trackinginteraction-tracking / 第11课
把虚拟物体放在真实桌面上平面检测 + Anchor + Stage 容器spatial-sensemixed-reality / 第10课
播放一段空间环绕音效空间音频 (环境音/对象音)spatial-audiospatialaudio / 第13课
播放一个 3D 模型的骨骼动画动画资源加载 + AnimationPlaybackControllerspatial-core:animationanimation / 第13课
两个物体碰撞反弹PhysicsWorldComponent + RigidBody + CollisionResponseModespatial-core:physicsphysics / 第13课
在空间中播放立体视频SpatialVideoView + 视频解码spatial-videospatialvideo / 第13课
打开一个不可见的空间模式窗口WindowContainer + MaterialBackground 关闭spatial-ui:platformspatialui / 第12课
应用在手柄/手部交互间切换TargetingMode 切换 + GestureRecognizerspatial-trackinginteraction-tracking / 第11课
扫描真实环境生成网格MeshTracking + 语义标签spatial-sensespatialmesh / 第10课
创建沉浸式全空间体验Stage 容器 + Skybox/IBL + Full Spacespatial-corewelcomespace / 第14课
追踪用户眼球注视点EyeTracking + GazeDataspatial-trackinginteraction-tracking / 第11课
在空间中展示一个图文面板Subwindow + Text/Image 组件 + 3D 布局spatial-ui:designspatialui / 第12课
加载自定义 3D 场景(编辑器制作)AssetBundle 加载 + editor-asset 模块spatial-core:resourceswelcomespace / 第9课
分析应用卡顿丢帧原因pico-cli perf + Perfetto Trace工具链performance-profiling / 第18课
把现有 Android App 跑在 PICO 上应用移植流程 + 容器替换 + 依赖排除全模块porting-guide / 第21课

三、场景:完整应用案例

场景 1:虚拟家居展示

flowchart LR
    A["📱 启动<br/>LaunchActivity + mainApp"] --> B["🪟 主窗口<br/>DefaultWindowContainer + PicoTheme"]
    B --> C["📋 家具列表<br/>SpatialUI 组件 + ViewModel"]
    C --> D["🪑 3D 模型加载<br/>Entity.loadSuspend + glTF"]
    D --> E["📐 平面检测<br/>PlaneTracking + Anchor"]
    E --> F["🖐️ 交互<br/>手势拖动/旋转"]

涉及课程第14课(项目搭建)第9课(ECS)第10课(感知)第11课(追踪)第12课(UI)

场景 2:空间视频播放器

flowchart LR
    A["🎬 视频列表<br/>Retrofit+ViewModel"] --> B["🖼️ 选择视频<br/>SpatialUI 列表"]
    B --> C["🎥 全空间播放<br/>Stage + SpatialVideoView"]
    C --> D["🔊 环境音效<br/>SpatialAudio"]
    D --> E["🖐️ 播放控制<br/>手势交互+UI覆盖层"]

涉及课程补充课(网络)第12课(UI)音频)第11课(手势)

场景 3:混合现实射击游戏

flowchart LR
    A["🏗️ Stage 全空间<br/>Stage + Skybox"] --> B["🌐 环境扫描<br/>MeshTracking"]
    B --> C["🎯 敌人生成<br/>ECS System + 动画"]
    C --> D["💥 碰撞检测<br/>RayCast + Physics"]
    D --> E["🏆 计分 UI<br/>Subwindow + ViewModel"]

涉及课程第9课(ECS)第10课(Mesh)第11课(RayCast)动画)

四、模块决策树(快速参考)

遇到新需求时,按此决策树判断该用 SDK 的哪个模块:

需求开始
├── 需要显示 2D 界面?
│   ├── 平面窗口 → spatial-ui (Planar WindowContainer)
│   ├── 3D 空间面板 → spatial-ui (Volumetric WindowContainer)
│   └── 全 3D 场景 → spatial-core (Stage + ECS)
├── 需要感知真实世界?
│   ├── 检测平面/桌面 → spatial-sense (PlaneTracking)
│   ├── 扫描环境网格 → spatial-sense (MeshTracking)
│   ├── 在固定位置放物体 → spatial-sense (Anchor)
│   └── 检测键盘 → spatial-sense (Keyboard)
├── 需要追踪用户?
│   ├── 手部交互 → spatial-tracking (HandTracking + Gesture)
│   ├── 眼球注视 → spatial-tracking (EyeTracking)
│   └── 面部表情 → spatial-tracking (FaceTracking)
├── 需要媒体能力?
│   ├── 播放 3D 动画 → spatial-core (Animation)
│   ├── 播放音频 → spatial-audio
│   └── 播放视频 → spatial-video
├── 需要物理效果?
│   └── 刚体/碰撞 → spatial-core (Physics)
├── 需要机器学习?
│   └── 超分/问答 → spatial-ml
├── 需要空间定位?
│   └── 坐标/单位转换 → spatial-core (Coordinate)
└── 需要性能分析?
    └── pico-cli perf 工具链 + Perfetto

五、补充知识点索引

以下是最新补充到各课程中的知识点:

知识点位置说明
Blend Shape 混合变形动画第13课 §1.3面部表情、口型同步、肌肉变形
Experimental API 上架限制第22课 §10使用实验性 API 的应用无法上架 PICO Store
Foveated Rendering 注视点渲染第18课 §5.2降低边缘渲染分辨率,节省 30-50% GPU
上肢可见性控制第11课 §10控制虚拟手臂的显示模式
实体克隆深入第9课 §2.5对象池模式、材质共享、物理组件注意

六、官方 Demo 项目能力索引

8 个官方 Demo 各自展示的核心能力:

Demo核心能力能学到的模式
welcomespace-0.13.3Stage 全空间 + 模型加载 + 家具摆放mainApp 入口、ECS 架构、AssetBundle
animation-0.13.3骨骼动画 + 补间动画 + MVVMAnimationPlaybackController、findSkinnedMeshEntity
physics-0.13.3物理仿真 + 刚体 + 碰撞检测PhysicsWorldComponent、CollisionResponseMode
spatialui-0.13.3全部 30+ UI 组件 + 3D 手势PicoTheme、手势 Modifier、窗口约束
spatialaudio-0.13.3空间音频播放环境音 + 对象音 + 音频事件
spatialmesh-0.13.3空间网格 + 语义 + 射击游戏MeshTracking + RayCast 射击
spatialvideo-0.13.3空间视频播放 + 字幕SpatialVideoView + SBS 立体
spatialml-0.13.3空间机器学习超分辨率 + VQA

七、进阶扩展能力

多窗口管理

同时管理多个 WindowContainer + Augment 侧面板 + Stage 的全空间,实现复杂的空间多任务体验。 参考: spatialui demo

自定义着色器

通过 Spatial SDK 的自定义材质 API 实现特殊视觉效果,超越内置 Unlit/PBR。 参考: advanced-rendering demo

高级渲染管线

理解 spatial-runtime 的渲染管线,优化 App→SPR→Eng-Render→OpenXR 各阶段的帧时间。 参考: performance-profiling demo / 第18课

空间编辑器集成

使用 PICO Spatial Editor 制作 3D 场景,通过 editor-asset 管线导入到应用中。 参考: 各 demo 的 editor-asset 目录 / 第19课


参考资料

全部 22 课 + 8 个官方 Demo · PICO Spatial SDK 0.13.3 如有任何不清楚的地方,随时提问!


上一课: 0015-koin-navigation-tools | 下一课: 0017-pico-cli-toolchain