安卓原生3D开源渲染引擎:Sceneform‑EQR的开源成长之旅

# 安卓原生3D开源渲染引擎:Sceneform‑EQR的开源成长之旅


2020年,Google官方宣布Sceneform SDK归档,对许多Android 3D/AR开发者而言,这意味着一场技术断崖。彼时,我正是一名“AR+GIS”一线开发者,Sceneform是我们业务与ARCore深度结合的核心模块。SDK突然停摆,不只是“无法更新”,更直接影响业务连续性。


起初,我只是“临时救火”:Fork一份仓库,想办法让它多撑一阵子。但这个应急操作很快演变成深入的技术探索——学习Filament、尝试接入华为AREngine、调试渲染bug,逐步将Sceneform从“被遗弃的代码”转变为“可维护、可扩展的系统”。


## 从“救火”到“守火种”


社区开发者ThomasGorisse曾接过第一棒,基于原始SDK维护SceneView,延续了Sceneform的生命。但在2023年后,这条线也停止了维护。面对这一局面,我开始维护私有仓库“EQ-Renderer”,并做出关键改进:解决gltf模型加载内存泄漏问题、接入AREngine、修复颜色映射异常。


2024年初,我开源了本地库,并重命名为“Sceneform‑EQR”。EQR寓意Extended(扩展)、Quick(快速适配)、Rewired(重新连接生态)。这不是在“造轮子”,而是在“守火种”——哪怕只有一个人用着,它也值得被延续。


## 核心架构与能力


Sceneform-EQR基于Sceneform(Filament)扩展,是一个适用于安卓端的轻量化渲染库。项目结构清晰:Eq-Renderer为核心渲染库,SampleProj为示例程序。


其核心功能涵盖多个维度:


**场景加载方面**,完整支持glTF 2.0标准模型加载,可在普通场景、AR场景、VR场景中灵活部署。**动画支持**上,封装了ModelAnimation,自动播放、设置时长、循环,接入FilamentAnimator,简化开发流程。


**XR兼容性**是项目的突出亮点:集成了ARCore、华为AREngine、ORB-SLAM3,可快速适配不同安卓设备,无论是否支持ARCore。**背景扩展**支持透明背景、图片背景、视频背景,灵活配置、流程简洁。**材质扩展**方面,调用matc工具生成材质,实现呼吸、流动纹理、视频贴图等视觉效果。**手势交互**内置单指旋转、双指平移/缩放、点击事件等基本场景交互。


以下是在Sceneform-EQR中创建模型动画的简化示例:


```java

public void createAnimation(Node node){

    if (node.getRenderableInstance() == null) {

        return;

    }<"e3.j9k5.org.cn"><"u7.j9k5.org.cn"><"t9.j9k5.org.cn">

    int animationCount = node.getRenderableInstance().getAnimationCount();

    if (animationCount > 0){

        //创建动画参数

        ARAnimationParameter parameter = new ARAnimationParameter();

        parameter.setDuration(6000L);//设置播放周期

        parameter.setRepeatMode(ARAnimationRepeatMode.INFINITE);//设置循环方式

        

        //创建默认动画

        ARAnimationModel animationModel = new ARAnimationModel(node);

        animationModel.createAnimation(parameter);

        animationModel.setCurrentIndex(0);

        animationModel.play();

    }

}

```


## 技术挑战与突破


**内存泄漏的破冰之战**是项目发展的关键节点。2022年开发“AR+GIS SDK”时,发现3D模型多次加载与释放会导致内存泄漏,最终崩溃。反复比对日志、查阅源码后,通过社区开发者的一段代码找到突破口。这项修复被合入Sceneform-EQR本地库,成为我从“使用者”转变为“参与者”的分水岭。


**材质探索**同样充满挑战。为复现类似三星AR涂鸦的功能——包括文本图片涂鸦、3D自由线条绘制、流动透明呼吸等视觉材质——我查阅Filament文档,使用matc工具自编.mat文件,支持动态图、视频纹理注入,搭配节点系统实现交互绘制。


**双屏适配**在OST AR眼镜项目中得到验证。2023年底,有开发者希望用原生方式实现眼镜Launcher应用。Sceneform-EQR展现出适配潜力:原生AR渲染体验、支持ARCore/AREngine双平台统一、适配单双屏/XR显示模式,最终成功打造出可部署到AR眼镜的Launcher原型。


## 持续进化的生态


如今,Sceneform-EQR已在GitHub和GitCode双平台同步,方便国内外开发者访问与协作。通过Maven中央仓库即可快速集成:


```gradle

maven {

    allowInsecureProtocol = true

    url "http://repo.eqgis.cn"

}<"i2.j9k5.org.cn"><"o5.j9k5.org.cn"><"l1.j9k5.org.cn">

implementation "com.eqgis:eq-renderer:1.0.9"

```


项目持续更新,已适配Filament v1.54,支持动态环境光遮蔽和屏幕空间反射等渲染特性。最新探索包括基于Filament支持PLY点云/Mesh,并开始研究3D Gaussian Splatting渲染实现。


## 写在最后


开源的起点,是热爱;中途,是孤独;坚持,是信仰。从谷歌Sceneform被弃,到多次凌晨提交代码;从一人维护,到今日支持多设备适配与社区反馈——Sceneform-EQR不只是一个技术项目,它也是我技术成长、自我构建、走向开源世界的旅程。


“用不用在你,做与不做在我。”这句话,我写给自己,也写给每一个仍在热爱技术的你。


请使用浏览器的分享功能分享到微信等