- 创建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能力实现虚实遮挡】
推荐阅读
-
-
-
-
-
小产权房有什么 *** 贷款买房 小产权房有什么 *** 贷款
-
苹果手机怎么解除id账号和密码 苹果手机怎么解除id
-
-
最强蜗牛9月21日最新密令是什么-9.21本周最新可用密令大全知道的都在这里了
-
十二星座找对象最看重对方什么方面?哪个星座要大方得体的?
-
-
-
-
拼多多解封店家,要怎么解封? 拼多多封店铺怎么解决
-
关于牺盟会及新军征战纪实简述 牺盟会及新军征战纪实
-
电脑搜不到iphone热点处理方法 搜不到苹果手机的热点怎么回事
-
-
root和免root框架双模式 和平精英国服免root心柔破解饕鬄绘制2.1稳定上分版辅助软件
-
-
-
炒瓜蒌子的功效与作用 炒瓜蒌子的食用方式和注意事项