37.6 ARCamera开发指南(With ARCore)
less than 1 minute read
1. 集成ARCore
2. 集成渲染环境(OpenGL)
- 使用并创建
GLSurfaceView
- 初始化
Renderer
surfaceView.setPreserveEGLContextOnPause(true);
surfaceView.setEGLContextClientVersion(2);
surfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 0); // Alpha used for plane blending.
// 设置GLSurfaceView#Renderer
surfaceView.setRenderer(this);
surfaceView.setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY);
surfaceView.setWillNotDraw(false);
- 编写
shader
, 并进行attach(GLES20#glAttachShader()
), 链接(GLES20#glLinkProgram
)
-
shader
如何编写待补充
- 在
GLSurfaceView.Renderer#onSurfaceCreated()
, 获取shader
的变量并进行初始化; 创建纹理
3. 加载3D模型
obj
文件使用de.javagl.obj
开源库进行加载
ObjReader#read(objInputStream);
读取obj
文件
- 调用
ObjUtils#convertToRenderable(obj)
, 准备obj
文件并确定适合OpenGL的渲染, 经过1). Triangulate it, 2). Make sure that texture coordinates are not ambiguous, 3). Make sure that normals are not ambiguous, 4). Convert it to single-indexed data
- 获取
obj
文件的数据, 包括wideIndices
, vertices
, texCoords
, normals
等direct buffers
4. 3D模型动画渲染
5. ARCore与OpenGL交互
- 创建
Session
, 与ARCore进行交互
Session#setDisplayGeometry()
, 更新屏幕的几何(rotation)显示
6. 渲染
参考