- 创建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能力实现虚实遮挡】
经验总结扩展阅读
-
-
一本情感簿|《闯关东》里的“厄运体”姑娘:这个苦命女人,真的是“作”?
-
植物大战僵尸怎么重新玩(植物大战僵尸通关后重新打)
-
为什么第一眼喜欢的人,做不了朋友?眼缘这种东西,就是很神奇
-
65岁爷爷常去集市买的3款白酒,当时没钱不常喝,现在很难再见了
-
-
-
-
微信聊天照片误删可以恢复吗,微信上好友发的照片误删了怎么恢复
-
-
化妆品|开皮肤管理店,自己不够专业,自主学习没有头绪!
-
蜜蜡对身体有什么好处,佩戴蜜蜡对身体有什么好处 戴蜜蜡有什么好处
-
-
-
在快节奏生活状态下 在快节奏生活状态下,一眼定恋情的人越来越多
-
算命婚姻,2020年下元节后一天是安葬逝者吉日吗,安葬逝者注意什么?
-
-
-
抗癌 获得5倍抗癌功效!把这种食材加入小吃中,抗癌、减肥、护心效果翻倍!
-