Sceneform-EQR:让 Android 原生 3D 开发更容易

从"能显示模型"到"能做三维应用"
很多 Android 开发者第一次接触 3D 时,都会觉得:
"模型能显示出来,好像就差不多了。"
但真正开始做项目后,才会发现,渲染只是最开始的一步。
模型加载、材质系统、光照环境、手势交互、视频纹理、相机流、AR Session、平面检测、生命周期管理、资源释放、线程调度......
这些能力一旦组合起来,整个工程复杂度会迅速提升。
尤其是在 Android 原生体系下,3D 往往不是一个独立模块,而是需要同时与:
- Activity 生命周期
- 相机权限
- 媒体播放
- OpenGL/Vulkan 渲染
- ARCore / AREngine
- 传感器与 XR 交互
一起协同工作。
而 Sceneform-EQR 想解决的,正是这部分问题。
它并不是一个"展示模型"的 Demo,而更像是一套 Android 原生三维工程化样本。
框架整体延续了 Sceneform 的使用习惯,底层基于 Filament,目前已经覆盖:
- 普通 3D 场景
- GLTF / GLB 模型
- ARCore / AREngine
- VR 场景
- 360 全景视频
- 视频纹理
- 相机流
- PLY 点云
也就是说,它已经不再只是"加载一个模型",而是开始逐步形成 Android XR 场景里的完整能力链。

示例工程重新整理:从"功能堆叠"变成"学习路径"
这次示例工程的改版,一个比较明显的变化,是首页开始区分:
- 常用示例
- 开发教程
过去很多三维示例工程都有一个问题:
功能很多,但入口是平铺的。
开发者第一次打开时,很容易不知道该从哪里开始。
这次 Sceneform-EQR 更偏向"学习路径"的组织方式。
常用示例主要用于快速验证能力,包括:
- 普通 3D
- 手势交互
- 视频渲染
- AR 三维场景
- AR 平面检测
- VR 场景
- 360 全景 VR
- 地球示例
- 坐标转换
而开发教程,则开始从更基础的几何体切入。
比如:
- Triangle
- Plane
- Cube
这些内容虽然简单,但实际上是理解三维渲染结构最重要的部分。
三角形能够帮助理解:
- 顶点
- 索引
- UV
- 法线
- 材质
这些渲染系统里的基础概念。
Plane 更适合理解:
- 参考面
- 透明材质
- 纹理承载
- 空间定位
而 Cube 则进一步开始涉及:
- 空间关系
- 光照
- 阴影
- 相机观察
整个示例工程开始更像一个"从 0 到 XR"的学习仓库,而不仅仅是功能展示。
这一点其实对阅读源码非常友好。
因为每个页面都会明确告诉你:
- 当前功能是什么
- 对应代码在哪
- 预览效果是什么
- 这个示例重点解决什么问题
这对于 Android 原生开发者理解 3D 工程,会轻松很多。

从模型渲染,开始进入真实 XR 场景
如果继续往后看,会发现 Sceneform-EQR 已经不仅是"模型显示"。
它开始覆盖越来越多真实 XR 项目中的典型场景。
比如 AR。
很多 Demo 的 AR,其实只是"把模型放到摄像头上"。
但真正的 AR 场景,需要:
- 平面检测
- HitTest 命中测试
- Anchor 锚点挂载
- 世界坐标稳定
- 跟踪状态管理
模型需要真正进入现实空间。
而不是漂浮在屏幕里。
VR 示例则开始涉及:
- SceneViewType
- 双目渲染
- 相机视场角
- 全景纹理
- 沉浸式观察
尤其是 360 全景视频部分,本质上已经进入"视频 + XR"融合场景。
视频纹理示例也很有代表性。
它把 Android 原生媒体播放能力,与 Filament 外部纹理连接到一起。
这里其实已经涉及:
- SurfaceTexture
- ExternalTexture
- 视频解码
- GPU 纹理同步
这类能力在:
- XR 视频播放器
- MR 场景
- 虚拟大屏
- 空间视频
里都会大量使用。

点云、与 GIS:开始进入"数据型三维"
我觉得 Sceneform-EQR 里一个比较有意思的方向,是它已经开始不局限于传统模型。
比如:
- PLY 点云
- GIS 坐标转换
这些内容其实已经进入"数据型三维"的范畴。
这类数据通常体积更大,对:
- 排序
- 内存
- 渲染方式
- 线程调度
- Renderable 数据结构
都更敏感。
很多问题已经不是"模型能不能显示"。
而是:
"Android 设备能不能稳定跑起来。"
所以在示例中,也开始能看到一些更偏工程化的问题:
- Renderable 生命周期
- MaterialInstance 管理
- Entity 销毁顺序
- 数据线程加载
- 内存释放
包括近期版本里:
- Filament 已升级到 v1.67.1
- 修复 MaterialInstance 释放问题
- 修复 Node 销毁时 Material 与 Entity 顺序问题
- 修复 CoordinateUtils NaN 问题
这些内容其实已经很接近真实项目开发。
而坐标转换示例,则补上了 GIS 与数字孪生里非常关键的一环:
地理坐标、世界坐标、模型坐标与屏幕坐标之间如何映射。
这个能力在:
- 数字孪生
- GIS
- AR 导航
- 实景融合
- 空间定位
里都非常重要。
因为很多时候,真正困难的不是"渲染"。
而是"三维内容如何与真实数据对齐"。

写在最后
现在再回头看 Sceneform-EQR,更想做成
一个 Android 原生 XR 能力集合。
里面既有基础三维渲染,也有 AR、VR、视频、点云、GIS 等逐渐偏工程化的内容。
如果你的方向是:
- Android 原生 3D
- AR 场景开发
- VR / XR
- 数字孪生
- GIS 三维
- 点云与扫描数据
- Android 端 Filament 渲染
那么 Sceneform-EQR 其实是一个很值得研究的工程样本。
因为它真正有价值的地方,不只是"能渲染"。
而是:
它正在尝试把 Android 三维开发,整理成一套更接近原生工程习惯的体系。