文章插图
结果
文章插图
?
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>
文章插图
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;}
文章插图
开通ARView平面展示 。
arView.enablePlaneDisplay(true);
文章插图
加载素材 。
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();}});
文章插图
添加相机和灯光组件 。
Node lightNode = arView.getScene().createNode();lightNode.addComponent(Light.descriptor()).setType(Light.Type.DIRECTIONAL).setIntensity(30.f);
文章插图
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);});
文章插图
依次在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();}
文章插图
结果
文章插图
?
华为图形引擎服务的ARView检测到点状平面后,您可以在该平面摆放、放大、缩小、移动、或旋转3D物品来确认效果 。下图展示空调和长凳添加到视图上的效果 。
您可以使用本codelab和图形引擎服务的ARView来装扮您家 。
文章插图
?
文章插图
?
8、恭喜您祝贺您,您已经成功构建了一个HMSHomeDecor安卓应用并学到了:
- 如何调用帐号服务、认证服务以及图形引擎服务的接口 。
- 如何实现图形引擎服务的ARView服务 。
- 如何在ARView中加载素材(3D文件或者纹路) 。
推荐阅读
- 一 Linux--多线程
- 怪诞不经的拼音 经的拼音
- 1斤等于多少磅 一斤等于多少磅
- 荣耀v40屏幕材质_荣耀v40屏幕多大
- 怎样快速赚钱(期货1万一年挣1亿)
- 荣耀50多久上市_荣耀50什么时候上市
- 华为nova8安兔兔跑分_华为nova8跑分多少
- 天玑1100相当于骁龙多少处理器_天玑1100相当于骁龙什么水平
- 说说 Redis 事务
- 【原创】i.MXRT J-Flash烧写算法使能eFuse熔丝位写入