- 创建SceneMeshDisplay类,用来渲染场景网络
Public class SceneMeshDiaplay implements SceneMeshComponenDisplay{ //需要在init中实现openGL的一些操作 Public void init(Context context){} //在onDrawFrame方法中获取当前对应的环境Mesh Public void onDrawFrame(ARFrame arframe){ARSceneMesh arSceneMesh = arframe.acquireSceneMesh();//创建一个用来更新数据的方法把arSceneMesh传入进去updateSceneMeshData(arSceneMesh); //arSceneMesh使用完之后需要释放 arSceneMesh.release(); } //实现这个方法用来更新数据 Public void updateSceneMeshData(ARSceneMesh sceneMesh){ //返回当前视角下环境Mesh顶点坐标数组 FloatBuffer meshVertices = sceneMesh.getVertices(); //返回当前视角下环境Mesh三角面片顶点索引的数组 IntBuffer meshTriangleIndices = sceneMesh.getTriangleIndices(); }}
- 创建SceneMeshRenderManager类 , 这个类来提供与外部场景相关的渲染管理器,
包括虚拟对象渲染管理
public class SceneMeshRenderManager implements GLSurfaceView.Render{ //初始化更新网络数据和执行渲染的类 private SceneMeshDisplay mSceneMesh = new SceneMeshDisplay(); //初始化绘制虚拟对象的类 Private HitResultDisplay mHitResultDisplay = new HitResultDisplay(); //实现onSurfaceCreated()方法 public void onSurfaceCreated(){//需要给mSceneMesh 类和mHitResultDisplay类传入 contextmSceneMesh.init(mContext);mHitResultDisplay.init(mContext);}//实现onDrawFrame()方法; public void onDrawFrame(){//用ARSession对象来配置camera 。mArSession.setCameraTexTureName();ARFrame arFrame = mArSession.update();ARCamera arCamera = arframe.getCamera();//把SceneMeshDisplay类需要的数据传过去mSceneMesh.onDrawFrame(arframe,viewmtxs,projmtxs);}}
- 创建SceneMeshActivity用来展示功能
public class SceneMeshActivity extends BaseActivity{ //提供与外部场景相关的渲染管理器,包括虚拟对象渲染管理类 。private ScemeMeshRenderManager mSceneMeshRenderManager; //用来管理AR Engine的整个运行状态, private ARSession mArSession;//需要初始化一些类和对象 protected void onCreate(Bundle savedInstanceState){ mSceneMeshRenderManager = new SceneMeshRenderManager();}//在onResume方法中初始化ARSessionprotected void onResume(){ //初始化ARSession mArSession = new ARSession(this.getApplicationContext()); //基于session参数创建ARWorldTrackingConfig对象 ARConfigBase config = new ARWorldTrackingConfig(mArSession); //需要把ARSession传给SceneMeshRenderManager mSceneMeshRenderManager.setArSession(mArSession);//需要开启mesh,用config调用setEnableItem方法config.setEnableItem(ARConfigBase.ENABLE_MESH | ARConfigBase.ENABLE_DEPTH);}}具体实现可参考示例代码
了解更多详情>>
访问华为开发者联盟官网获取开发指导文档华为移动服务开源仓库地址:GitHub、Gitee
关注我们,第一时间了解 HMS Core 最新技术资讯~
【如何用AR Engine环境Mesh能力实现虚实遮挡】
推荐阅读
-
-
一天就有8个瓜,去世、两度得新冠、58岁当爸,喜怒哀乐齐活了 ...
-
南宁中考2020年等级划分 2023年南宁中考成绩等级划分标准
-
机械键盘性价比哪款比较好,哪种机械键盘性价比比较高?
-
2023林芝墨脱县养老金方案何时才出炉?今年企退养老金预计涨多少?
-
-
-
-
-
-
-
-
-
-
-
免费领取王者荣耀永久皮肤的软件 免费获得王者荣耀皮肤的软件
-
山东教师资格证考试推迟 山东2023年上半年教资笔试迟到怎么办
-
-
-