【多服務場景化解決方案】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、參考文件參考如下文件獲取更多信息:

推薦閱讀