在AR应用中,用户最不想看到的就是虚幻穿刺的现象,比如虚拟人物身体的一部分被困在墙壁里,或者头像不能再碰壁手机,这种虚幻的交互方式极大地影响了用户体验。那么如何避免穿越虚拟对象的问题呢?使用AREngine的环境网格能力可以帮助开发者解决这个问题。效果展示实现方法AREngine提供了实时计算并输出屏幕环境Mesh数据的能力。通过环境Mesh能力,虚拟角色可以准确识别当前的三维空间,从而使虚拟物体不仅可以放置在水平和垂直平面上,还可以放置在任何可重构的表面上。开发者可以利用重构后的环境Mesh实现虚实遮挡和碰撞检测,让虚拟物体隐藏在真实物体后面,避免真实物体和虚拟物体融合,从而实现沉浸式AR体验。集成步骤开发环境要求:JDK1.8.211及以上版本。安装AndroidStudio3.0及以上:minSdkVersion26及以上targetSdkVersion29(推荐)compileSdkVersion29(推荐)Gradle6.1.1及以上(推荐)在华为终端设备上的应用商店下载AREngine服务器APK(需要在华为应用商店,搜索“HuaweiAREngine”),在终端设备上安装。测试应用的设备:参见AREngine特性软硬件依赖表中Mesh环境支持的设备列表。如果同时使用多个HMSCore服务,需要使用每个Kit对应的最大值。开发准备在开发应用之前,您需要在华为开发者联盟网站注册为开发者并完成实名认证。具体请参见账号注册与认证。华为以Maven仓库集成方式提供AREngineSDK包。在开始开发之前,您需要将AREngineSDK集成到您的开发环境中。对于7.0、7.0和7.1及以上版本的Gradle插件,AndroidStudio的代码库配置有所不同。请根据您当前的Gradle插件版本选择相应的配置流程。以7.0为例:打开AndroidStudio项目级“build.gradle”文件,添加Maven代码库。在“buildscript>repositories”配置HMSCoreSDK的Maven仓库地址。buildscript{repositories{google()jcenter()maven{url"https://developer.huawei.com/repo/"}}}打开项目级"settings.gradle"文件,配置HMS的Maven仓库地址CoreSDKdependencyResolutionManagement{repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories{repositories{google()jcenter()maven{url"https://developer.huawei.com/repo/"}}}}添加依赖添加如下编译依赖在"dependencies":dependencies{implementation'com.huawei.hms:arenginesdk:{version}}开发步骤创建HitResultDisplay类,根据指定参数绘制虚拟对象。publicclassHitResultDisplayimplementsSceneMeshComponentDisplay{//初始化VirtualObjectDataVirtualObjectDatamVirtualObject=newVirtualObjectData();//在init方法中将上下文传递给mVirtualObjectPublicvoidinit(Contextcontext){mVirtualObject.init(context);//输入材质属性mVirtualObject.setMaterialProperties();}//在onDrawFrame方法中输入ARFrame获取光照估算publicvoidonDrawFrame(ARFramearframe){//获取光照估算ARLightEstimatele=arframe.getLightEstimate();//获取当前相机视野的像素强度lightIntensity=le.getPixelIntensity();//获取之后,需要给mVirtualObject中的一些方法传递数据mVirtualObject.draw(...,...,lightIntensity,...);//创建handleTap方法传入ARFrame对象获取坐标信息handleTap(arframe);}//实现handleTap方法PrivatevoidhandleTap(ARFrameframe){//使用ARFrame对象调用hitTestList
