Sceneform-EQR 技术文档
1. 安装指南
环境要求
- Android Studio 最新稳定版
- Android SDK API Level 24 及以上
- 支持ARCore/AREngine的Android设备(AR功能需要)
依赖配置
在项目级build.gradle中添加仓库配置:
allprojects {
repositories {
maven {
allowInsecureProtocol = true
url "http://repo.eqgis.cn"
}
}
}
在模块级build.gradle中添加依赖:
dependencies {
implementation 'com.eqgis:eq-renderer:最新版本号'
}
2. 项目使用说明
基础场景初始化
// AR场景初始化(ARCore)
ARFragment arFragment = (ARFragment) getSupportFragmentManager().findFragmentById(R.id.ux_fragment);
EqARScene scene = EqARScene.create(arFragment);
// VR场景初始化
EqVRScene vrScene = new EqVRScene(this);
setContentView(vrScene.getView());
模型加载与交互
// 加载GLTF模型
ModelLoader.loadModel(this, "model.gltf")
.thenAccept(model -> {
scene.addChild(model);
// 添加点击交互
model.setOnTapListener((hitTestResult, motionEvent) -> {
// 处理点击事件
});
});
手势控制
默认支持以下手势操作:
- 单指旋转模型
- 双指平移模型
- 双指缩放模型
3. 项目API使用文档
核心类说明
EqARScene
AR场景控制器,主要方法:
create(ARFragment fragment)创建AR场景addChild(Renderable renderable)添加可渲染对象getLight()获取场景光源
EqVRScene
VR场景控制器,主要方法:
getView()获取场景视图setBackground(Color color)设置背景色loadSkybox(String path)加载天空盒
ModelLoader
模型加载工具类:
loadModel(Context context, String assetPath)异步加载模型loadModelSync(Context context, String assetPath)同步加载模型
材质系统
支持通过Filament的matc工具编译自定义材质:
Material material = new Material.Builder()
.setSource(this, R.raw.custom_material)
.build();
4. 项目安装方式
方式一:直接使用AAR
- 从仓库下载最新eq-renderer.aar文件
- 放入项目的libs目录
- 在build.gradle中添加依赖:
implementation files('libs/eq-renderer.aar')
方式二:源码集成
- 克隆整个项目仓库
- 将Eq-Renderer模块作为依赖模块导入
- 在settings.gradle中添加:
include ':eq-renderer'
示例项目运行
- 使用Android Studio打开SampleProj目录
- 连接支持AR的设备或使用模拟器
- 运行app模块
高级功能
AR视图渲染
支持将Android原生View渲染为AR内容:
ViewRenderable.builder()
.setView(this, R.layout.custom_view)
.build()
.thenAccept(renderable -> {
scene.addChild(renderable);
});
视频纹理
支持将视频作为材质纹理:
VideoMaterial videoMat = new VideoMaterial(this, Uri.parse("video.mp4"));
model.getMaterial().setTexture("baseColor", videoMat);
动画控制
控制GLTF模型动画:
ModelAnimationController controller = model.getAnimationController();
controller.setAnimation("walk");
controller.play();
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



