华为ar插件_huawei ar engine

华为ar插件_huawei ar engineAR放置类APP已经广泛应用于各行各业中,如家居行业用户可以用AR体验家具摆放效果;在零售行业消费者可以用AR提前试穿鞋服;在教育行业学生可以利用AR探索物体的虚拟3D模型,了解各种物体的内部构造。 那么如何才能快速开发一款AR放置APP呢?集成HUAWEI Scene Kit…

前言

AR放置类APP已经广泛应用于各行各业中,如家居行业用户可以用AR体验家具摆放效果;在零售行业消费者可以用AR提前试穿鞋服;在教育行业学生可以利用AR探索物体的虚拟3D模型,了解各种物体的内部构造。

那么如何才能快速开发一款AR放置APP呢?集成HUAWEI Scene Kit, 只需要8步就能实现。ARView是Scene Kit 中面向AR的场景化API,通过集成AR Engine的平面检测能力,结合图形引擎服务自身渲染引擎的图形能力,为开发者提供了在一般AR场景中加载、渲染3D素材的能力。

ARView功能简介

  1. AR场景中加载、渲染3D素材。

  2. 可开关的平面辅助选取功能,屏幕中支持显示一个白色平面点阵的方式,辅助选取平面。

  3. 在平面放置素材后,可点击选取该素材物体。当物体处于红色被选取状态后,可进行移动、缩放、旋转。

AR放置应用开发

在使用ARView之前需要在Android工程中集成Scene Kit SDK,操作可以参见集成Scene Kit SDK

ARView继承自Android GLSurfaceView,并重写了相关生命周期方法,方便开发者调用。总共只需要8步即可实现完整的ARView应用。

Step1. 创建一个ARViewActivity,使其继承自Activity。添加一个Button按钮用于加载素材

public class ARViewActivity extends Activity {
    private ARView mARView;
    private Button mButton;
    private boolean isLoadResource = false;
}

Step2. 将ARView添加到Layout布局中

<com.huawei.hms.scene.sdk.ARView
    android:id="@+id/ar_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</com.huawei.hms.scene.sdk.ARView>

【说明】ARView为保证效果暂不支持转屏与分屏操作,需要在Android Manifest文件中进行配置:

android:screenOrientation="portrait"
android:resizeableActivity="false"

Step3. 重写onCreate方法,并获取ARView

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ar_view);
    mARView = findViewById(R.id.ar_view);
    mButton = findViewById(R.id.button);
}

Step4. 可在onCreate方法中使用一个Switch按钮控制辅助显示平面是否打开。

Switch mSwitch = findViewById(R.id.show_plane_view);
mSwitch.setChecked(true);
mSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        mARView.enablePlaneDisplay(isChecked);
    }
});

【说明】Switch按钮使用前请在Layout中添加。

<Switch
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/show_plane_view"
    android:layout_alignParentTop="true"
    android:layout_marginTop="15dp"
    android:layout_alignParentEnd="true"
    android:layout_marginEnd ="15dp"
    android:layout_gravity="end"
    android:text="@string/show_plane"
    android:theme="@style/AppTheme"
    tools:ignore="RelativeOverlap" />

Step5. 增加按钮回调方法。首次点击按钮加载素材,再次点击按钮清除素材。

public void onBtnClearResourceClicked(View view) {
    if (!isLoadResource) {
        mARView.loadAsset("ARView/scene.gltf");
        isLoadResource = true;
        mButton.setText(R.string.btn_text_clear_resource);
    } else {
        mARView.clearResource();
        mARView.loadAsset("");
        isLoadResource = false;
        mButton.setText(R.string.btn_text_load);
    }
}

【说明】onBtnSceneKitDemoClicked方法需在Button的布局属性onClick中注册。

Step6. 重写onPause方法,并调用ARView的onPause方法。

**@Override
protected void onPause() {
    super.onPause();
    mARView.onPause();
}**

Step7. 重写onResume方法,并调用ARView的onResume方法。

@Override
protected void onResume() {
    super.onResume();
    mARView.onResume();
}

Step8. 重写onDestroy方法,并调用ARView的destroy方法。

@Override
protected void onDestroy() {
    super.onDestroy();
    mARView.destroy();
}

Step9. 加载完素材后,可通过setInitialPose设置3D素材初始的缩放系数与旋转角度。【可选】

float[] scale = new float[] { 0.1f, 0.1f, 0.1f };
float[] rotation = new float[] { 0.707f, 0.0f, -0.707f, 0.0f };
mARView.setInitialPose(scale, rotation);

效果展示

按照以上8个步骤调用HUAWEI Scene Kit ARView接口,我们即可实现一个简单的AR放置应用。 华为ar插件_huawei ar engine

如果你对实现方式感兴趣,可以查看Github源码:github.com/HMS-Core/hm…

基于Scene Kit ARView的能力不仅仅可以用来开发AR放置应用,还可以帮助开发者实现很多有趣的功能, 例如:AR游戏、虚拟展厅、AR导航等。

欲了解更多详情,请参阅:

华为Scene Kit官网:developer.huawei.com/consumer/cn…

获取开发指导文档:developer.huawei.com/consumer/cn…

参与开发者讨论请到Reddit社区:www.reddit.com/r/HMSCore/

下载demo和示例代码请到Github:github.com/HMS-Core/hm…

解决集成问题请到Stack Overflow:stackoverflow.com/questions/t…


原文链接:developer.huawei.com/consumer/cn… 作者:胡椒

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/13331.html

(0)

相关推荐

  • 安图恩(dnf安图恩为什么最成功)

    安图恩(dnf安图恩为什么最成功)

    2023-09-07
    127
  • 【数组、双指针】day7_234. 回文链表

    【数组、双指针】day7_234. 回文链表给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。   示例 1: 示例 2:   提示: 链表中节点数目在范围[1, 105] 内

    2023-11-13
    132
  • Python中的list clear方法

    Python中的list clear方法在Python编程语言中,list是使用最广泛的数据类型之一。Python中的list对象类似于其他编程语言中的数组。Python中的list可以存储各种类型的数据,包括字符串、数字、对象等等。这些数据可以通过list的方法来进行增加、删除、修改和查询等操作。其中,list clear方法可以清空一个list,使得它变为一个空list,接下来我们将详细介绍Python中的list clear方法。

    2024-07-08
    45
  • redis 实战-redis 事务

    redis 实战-redis 事务redis 实战-redis 事务 1.描述 redis 事务单独的隔离操作:事务中的所有命令都会序列化、按顺序执行。事务在执行过程中,不会被其他客户端发送过来的命令请求所打断。 redis 事务没有

    2023-02-14
    154
  • Navicat for mysql 15激活方法「建议收藏」

    Navicat for mysql 15激活方法「建议收藏」激活工具下载地址 链接:https://pan.baidu.com/s/1jN6-wzLSBOGmnWxA6fxCJg 提取码:sdq1 操作流程 1.下载该软件,然后放到Navicat的根目录,并…

    2023-03-25
    156
  • 华为和荣耀的区别看这几点 别踩雷双品牌很好懂[亲测有效]

    华为和荣耀的区别看这几点 别踩雷双品牌很好懂[亲测有效]     都2020年了,怎么还有小伙伴不知道华为和荣耀的区别呢?买手机的时候,经常会听见有人说:我要去买华为荣耀。亲!我恨不得过去纠正一下,不叫华为荣耀,华为是华为、荣耀是荣耀,这是两个品牌虽然同…

    2023-03-14
    153
  • 设计模式这样学也太简单了吧!

    设计模式这样学也太简单了吧!设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。

    2023-08-07
    131
  • 《MySQL必知必会》之快速入门游标和触发器「终于解决」

    《MySQL必知必会》之快速入门游标和触发器「终于解决」第二十四章 使用游标 本章将介绍什么是游标以及如何使用游标 游标 之前的select语句检索出来的数据,没有办法得到第一行或者下一行 有时,需要在检索出来的行中前进或后退一行或多行。这就是使用游标的原

    2023-06-20
    151

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注