在家也可以享受購物體驗?AR+Scene 幫您實現商品3D展示和虛擬試戴


互聯網和智慧終端的普及促進了電商的產生和蓬勃發展,而新技術的產生,則推動着電商領域的不斷升級。疫情使得人們更加習慣於使用電商進行購物,但對傳統的線上購物模式已經產生了一些厭倦,電商市場急需模式上的變革,讓老用戶耳目一新,提供便捷的同時促進他們的購物欲望,同時也能憑借爆點吸引到新用戶的加入。以此為背景,我們以HMS Core提供的智能圖像處理能力,識別用戶的面部和身體特征,再結合顯示模式,讓用戶直接在手機上就能體驗產品的佩戴效果,提供更加便利的購物體驗。

場景

在淘寶、京東、天貓等購物app,以及小紅書、得物、什么值得買等好物分享app,可以對產品進行AR體驗,便於消費者感受產品效果,也能減少后續的退換貨比例。

先看效果

打開App
點擊圖片可以查看商品的3D模型,可以進行旋轉和縮放

在這里插入圖片描述

在這里插入圖片描述

開發准備

配置華為Maven倉地址

打開AndroidStudio項目中的build.gradle文件

在“buildscript > repositories”和“allprojects > repositories”中增加SDK的Maven倉地址:

buildscript {
    repositories{
      ...   
        maven {url 'http://developer.huawei.com/repo/'}
    }    
}
allprojects {
    repositories {      
       …
         maven { url 'http://developer.huawei.com/repo/'}
    }
}

添加編譯SDK依賴

打開應用級的“build.gradle”文件

在dependencies中添加圖形引擎的SDK包,使用Full-SDK,以及AR Engine的SDK包

dependencies {
….
implementation 'com.huawei.scenekit:full-sdk:5.0.2.302'
implementation 'com.huawei.hms:arenginesdk:2.13.0.4'
}

上述步驟可以參考開發者網站中的應用開發介紹

在AndroidManifest.xml中添加權限

打開main中的AndroidManifest.xml文件,在<application 前添加相機的使用權限

<!--相機權限-->
<uses-permission android:name="android.permission.CAMERA" />

開發步驟

MainActivity配置

在MainActivity的layout配置文件中添加兩個按鈕,一個背景設為產品的預覽圖,另一個添加文字“Try it on!”,引導用戶進行試戴。

<Button
    android:layout_width="260dp"
    android:layout_height="160dp"
    android:background="@drawable/sunglasses"
    android:onClick="onBtnShowProduct" />
<Button

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="Try it on!"

    android:textAllCaps="false"

    android:textSize="24sp"

    android:onClick="onBtnTryProductOn" />

點擊onBtnShowProduct按鈕,會加載產品的3D模型,而點擊onBtnTryProductOn,則會進入AR試戴界面。

產品3D模型展示

1、創建一個繼承自SceneView的SceneSampleView

public class SceneSampleView extends SceneView {
    public SceneSampleView(Context context) {
        super(context);
    }
    public SceneSampleView(Context context, AttributeSet attributeSet) {
        super(context, attributeSet);
    }
}

重寫surfaceCreated完成SceneView的創建和初始化,loadScene加載的是要進行渲染顯示的模型文件,目前支持glTF和glb格式素材的渲染,loadSkyBox、loadSpecularEnvTexture、loadDiffuseEnvTexture分別進行天空盒紋理、鏡面反射紋理和漫反射紋理的加載,目前支持的是cubemap格式的dds文件。

所加載的素材都存放在src->main->assets->SceneView文件夾內。

@Override

public void surfaceCreated(SurfaceHolder holder) {

    super.surfaceCreated(holder);

    // 加載渲染素材

    loadScene("SceneView/sunglasses.glb");

    //調用loadSkyBox加載天空盒紋理貼圖素材

    loadSkyBox("SceneView/skyboxTexture.dds");

    //調用loadSpecularEnvTexture加載環境光反射貼圖素材

    loadSpecularEnvTexture("SceneView/specularEnvTexture.dds");

    //調用loadDiffuseEnvTexture加載環境光漫反射貼圖素材

    loadDiffuseEnvTexture("SceneView/diffuseEnvTexture.dds");

}

2、新建一個SceneViewActivity,繼承自Activity,在其中用onCreate方法調用setContentView,傳入在layout文件中用xml標簽創建的SampleView,

public class SceneViewActivity extends Activity {

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_sample);

    }

}

layout文件中的SampleView創建為

<com.huawei.scene.demo.sceneview.SceneSampleView

    android:layout_width="match_parent"

    android:layout_height="match_parent"/>

3、在MainActivity中新建onBtnShowProduct,當點擊對應的按鈕時,就會調用SceneViewActivity,將商品的3D模型加載,進行渲染,然后顯示出來

public void onBtnShowProduct(View view) {

    startActivity(new Intent(this, SceneViewActivity.class));

}

產品AR試戴展示

通過HMS Core提供的面部識別、圖像渲染和AR顯示能力,可以非常便捷的實現產品的AR試戴展示

1、創建一個FaceViewActivity,繼承自Activity,同時創建對應的layout文件

在layout中創建face_view,用於顯示試戴效果

<com.huawei.hms.scene.sdk.FaceView

    android:id="@+id/face_view"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    app:sdk_type="AR_ENGINE"></com.huawei.hms.scene.sdk.FaceView>

同時創建一個開關,用於對比佩戴與不佩戴的效果差別

<Switch

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:id="@+id/switch_view"

    android:layout_alignParentTop="true"

    android:layout_marginTop="15dp"

    android:layout_alignParentEnd="true"

    android:layout_marginEnd ="15dp"

    android:text="Try it on"

    android:theme="@style/AppTheme"

    tools:ignore="RelativeOverlap" />

2、在FaceViewActivity中重寫onCreate方法,獲取FaceView

public class FaceViewActivity extends Activity {

    private FaceView mFaceView;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_face_view);

        mFaceView = findViewById(R.id.face_view);

    }

}

3、創建switch開關的監聽方法,當開關打開時,使用loadAsset方法加載商品的3D模型,LandmarkType可以選定與人臉的識別位置

mSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

    @Override

    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

        mFaceView.clearResource();

        if (isChecked) {

            // Load materials.

         int index = mFaceView.loadAsset("FaceView/sunglasses.glb", LandmarkType.TIP_OF_NOSE);

        }

    }

});

模型的大小和位置可以通過setInitialPose進行調整,建立position,rotation,scale數組,將要調整的數值傳入

final float[] position = { 0.0f, 0.0f, -0.15f };

final float[] rotation = { 0.0f, 0.0f, 0.0f, 0.0f };

final float[] scale = { 2.0f, 2.0f, 0.3f };

在loadAsset語句下面加入

mFaceView.setInitialPose(index, position, scale, rotation);

4、在MainActivity中新建onBtnTryProductOn,點擊按鈕時調用FaceViewActivity讓用戶查看AR試戴效果

public void onBtnTryProductOn(View view) {

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)

            != PackageManager.PERMISSION_GRANTED) {

        ActivityCompat.requestPermissions(

                this, new String[]{ Manifest.permission.CAMERA }, FACE_VIEW_REQUEST_CODE);

    } else {

        startActivity(new Intent(this, FaceViewActivity.class));

    }

}

源碼

參與開發者討論請到Reddit社區:https://www.reddit.com/r/HMSCore/

下載demo和示例代碼請到Github:https://git.huawei.com/HMS_Core_SPDT/DTSE/Super_Demo/tree/Br_feature_hmscore_cases/ARFittingRoom

解決集成問題請到Stack Overflow:https://stackoverflow.com/questions/tagged/huawei-mobile-services?tab=Newest


原文鏈接:https://developer.huawei.com/consumer/cn/forum/topic/0201428872278800009?fid=18

原作者:胡椒


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM