【多服务场景化解决方案】AR虚拟技术助力智能家装( 二 )


【多服务场景化解决方案】AR虚拟技术助力智能家装

文章插图
结果
【多服务场景化解决方案】AR虚拟技术助力智能家装

文章插图
?
7、集成图形引擎服务华为图形引擎服务是一个高性能、低功耗、轻量级渲染引擎,提供高级描述性API,便于编辑、操作和渲染3D资源 。
应用集成图形引擎服务 , 使用ARView渲染普通AR场景 。
Xml
在布局中添加图形引擎服务的ARView 。
<com.huawei.hms.scene.sdk.ARViewandroid:id="@+id/ar_view"android:layout_width="match_parent"android:layout_height="match_parent"></com.huawei.hms.scene.sdk.ARView>
【多服务场景化解决方案】AR虚拟技术助力智能家装

文章插图
Java
检查ARPermission,按需请求权限 。并初始化图形引擎服务 。
if (!PermissionUtil.checkARPermissions(ViewProduct.this)) {PermissionUtil.requestARPermissions(ViewProduct.this);}if (!InitializeHelper.getInstance().isInitialized()) {Toast.makeText(ViewProduct.this, "SceneKit initializing", Toast.LENGTH_SHORT).show();InitializeHelper.getInstance().initialize(ViewProduct.this);return;}
【多服务场景化解决方案】AR虚拟技术助力智能家装

文章插图
开通ARView平面展示 。
arView.enablePlaneDisplay(true);
【多服务场景化解决方案】AR虚拟技术助力智能家装

文章插图
加载素材 。
if (testModel != null) {return;}Model.builder().setUri(Uri.parse("Furniture/"+threeDFileName)).load(getApplicationContext(), new Resource.OnLoadEventListener<Model>() {@Overridepublic void onLoaded(Model model) {Toast.makeText(TryProduct.this, "load success.", Toast.LENGTH_SHORT).show();testModel = model;}@Overridepublic void onException(Exception exception) {Toast.makeText(TryProduct.this, exception.getMessage(), Toast.LENGTH_SHORT).show();}});
【多服务场景化解决方案】AR虚拟技术助力智能家装

文章插图
添加相机和灯光组件 。
Node lightNode = arView.getScene().createNode();lightNode.addComponent(Light.descriptor()).setType(Light.Type.DIRECTIONAL).setIntensity(30.f);
【多服务场景化解决方案】AR虚拟技术助力智能家装

文章插图
arView.addOnTapPlaneEventListener(tapPlaneResult -> {node = arView.getScene().createNodeFromModel(testModel);node.getComponent(Transform.descriptor()).scale(new Vector3(0.01f, 0.01f, 0.01f));node.traverseDescendants(des -> {Renderable renderableComponent = des.getComponent(Renderable.descriptor());if (renderableComponent != null) {renderableComponent.setCastShadow(true).setReceiveShadow(true);}});Animator animator = node.getComponent(Animator.descriptor());if (animator != null) {animator.play(animator.getAnimations().get(0));}ARNode arNode = tapPlaneResult.createARNode(node);arView.recordARNode(arNode);});
【多服务场景化解决方案】AR虚拟技术助力智能家装

文章插图
依次在ARView调用onResume()、onPause()、onDestroy()方法 。
@Overrideprotected void onResume() {super.onResume();arView.resume();}@Overrideprotected void onPause() {super.onPause();arView.pause();}@Overrideprotected void onDestroy() {super.onDestroy();arView.destroy();}
【多服务场景化解决方案】AR虚拟技术助力智能家装

文章插图
结果
【多服务场景化解决方案】AR虚拟技术助力智能家装

文章插图
?
华为图形引擎服务的ARView检测到点状平面后,您可以在该平面摆放、放大、缩小、移动、或旋转3D物品来确认效果 。下图展示空调和长凳添加到视图上的效果 。
您可以使用本codelab和图形引擎服务的ARView来装扮您家 。
【多服务场景化解决方案】AR虚拟技术助力智能家装

文章插图
?
【多服务场景化解决方案】AR虚拟技术助力智能家装

文章插图
?
8、恭喜您祝贺您,您已经成功构建了一个HMSHomeDecor安卓应用并学到了:
  • 如何调用帐号服务、认证服务以及图形引擎服务的接口 。
  • 如何实现图形引擎服务的ARView服务 。
  • 如何在ARView中加载素材(3D文件或者纹路) 。
9、参考文件参考如下文件获取更多信息:

推荐阅读