DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»DevOps Zone»Comment créer un modèle de produit 3D en seulement 5 minutes
    DevOps Zone

    Comment créer un modèle de produit 3D en seulement 5 minutes

    novembre 26, 2021
    Comment créer un modèle de produit 3D en seulement 5 minutes
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    L’affichage de produits avec des modèles 3D est quelque chose de trop important pour être ignoré pour une application de commerce électronique. En utilisant ces gadgets sophistiqués, une telle application peut laisser aux utilisateurs une première impression sur les produits d’une manière nouvelle !

    Le modèle 3D joue un rôle important dans l’accélération de la conversion des utilisateurs. Il permet aux utilisateurs de voir attentivement un produit sous tous les angles avant de faire un achat. Avec la technologie AR, qui donne aux utilisateurs un aperçu de l’apparence du produit dans la réalité, le modèle 3D apporte une expérience d’achat en ligne plus fraîche qui peut rivaliser avec les achats hors ligne.

    Malgré ses avantages, le modèle 3D n’a pas encore été largement adopté. La raison sous-jacente à cela est que l’application de la technologie de modélisation 3D actuelle est coûteuse :

    • Les pré-requis techniques: Apprendre à construire un modèle 3D prend du temps.
    • Temps: Il faut au moins plusieurs heures pour construire un modèle à faible polygone pour un objet simple, et encore plus pour un modèle à polygone élevé.
    • Dépenses: Le coût moyen de construction d’un modèle simple peut être supérieur à cent dollars, et même plus élevé pour la construction d’un modèle complexe.

    Heureusement, la reconstruction d’objets 3D, une fonctionnalité du kit de modélisation 3D récemment lancée dans HMS Core, simplifie la création de modèles 3D. Cette capacité génère automatiquement un modèle 3D avec une texture pour un objet, via des images prises sous différents angles avec une RVB-Cam commune. Il donne à une application la possibilité de créer et de prévisualiser des modèles 3D. Par exemple, lorsqu’une application de commerce électronique a intégré la reconstruction d’objets 3D, elle peut générer et afficher des modèles 3D de chaussures. Les utilisateurs peuvent ensuite zoomer et dézoomer librement sur les modèles pour une expérience d’achat plus immersive.

    Effet réel

    effet réel de la modélisation 3D

    Solutions techniques

    flux technique du modèle 3D

    La reconstruction d’objets 3D est implémentée à la fois sur l’appareil et sur le cloud. Les images RVB d’un objet sont collectées sur l’appareil, puis téléchargées sur le cloud. Les technologies clés impliquées dans le processus de modélisation sur le cloud incluent la détection et la segmentation d’objets, la détection et l’appariement de caractéristiques, le cloud computing clairsemé/dense et la reconstruction de texture. Enfin, le cloud génère un fichier OBJ (un format de fichier de modèle 3D couramment utilisé) du modèle 3D généré avec 40 000 à 200 000 patchs.

    Les préparatifs

    1. Configuration d’une dépendance sur le SDK de modélisation 3D

    Ouvrir le niveau de l’application build.gradle et ajoutez une dépendance sur le SDK de modélisation 3D dans le dépendances bloquer.

    /Build a dependency on the 3D Modeling SDK.
    
     implementation 'com.huawei.hms:modeling3d-object-reconstruct:1.0.0.300'

    2. Configuration d’AndroidManifest.xml

    Ouvrez le AndroidManifest.xml fichier dans le principale dossier. Ajoutez les informations suivantes avant pour demander les autorisations de lecture et d’écriture de stockage et l’autorisation de caméra.

    Procédure de développement

    1. Configuration de l’application d’autorisation de stockage

    Dans le onCreate() méthode de Activité principale, vérifiez si les autorisations de lecture et d’écriture du stockage ont été accordées ; sinon, faites-en la demande en utilisant requestPermissions.

    if (EasyPermissions.hasPermissions(MainActivity.this, PERMISSIONS)) {
        Log.i(TAG, "Permissions OK");
    } else {
        EasyPermissions.requestPermissions(MainActivity.this, "To use this app, you need to enable the permission.",
                RC_CAMERA_AND_EXTERNAL_STORAGE, PERMISSIONS);
    }

    Vérifiez le résultat de l’application. Si les autorisations ne sont pas accordées, invitez l’utilisateur à les accorder.

    @Override
    public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {
    Log.i(TAG, "permissions = " + perms);
    if (requestCode == RC_CAMERA_AND_EXTERNAL_STORAGE && PERMISSIONS.length == perms.size()) {
    initView();
    initListener();
    }
    }
    
    @Override
    public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
    if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
    new AppSettingsDialog.Builder(this)
    .setRequestCode(RC_CAMERA_AND_EXTERNAL_STORAGE)
    .setRationale("To use this app, you need to enable the permission.")
    .setTitle("Insufficient permissions")
    .build()
    .show();
    }
     }

    2. Création d’un configurateur de reconstruction d’objets 3D

    // Set the PICTURE mode.
    Modeling3dReconstructSetting setting = new Modeling3dReconstructSetting.Factory()
    .setReconstructMode(Modeling3dReconstructConstants.ReconstructMode.PICTURE)
             .create();
    
     

    3. Création d’un moteur de reconstruction d’objets 3D et initialisation de la tâche

    Appel getInstance() de Modélisation3dReconstructEngine et transmettre le contexte actuel pour créer une instance du moteur de reconstruction d’objet 3D.

    // Create an engine.
     modeling3dReconstructEngine = Modeling3dReconstructEngine.getInstance(mContext);

    Utilisez le moteur pour initialiser la tâche.

    // Initialize the 3D object reconstruction task.
    modeling3dReconstructInitResult = modeling3dReconstructEngine.initTask(setting);
    // Obtain the task ID.
     String taskId = modeling3dReconstructInitResult.getTaskId();

    4. Création d’un rappel d’écoute pour traiter le résultat du téléchargement d’image

    Créez un rappel d’écouteur qui vous permet de configurer les opérations déclenchées en cas de succès ou d’échec du téléchargement.

    // Create an upload listener callback.
    private final Modeling3dReconstructUploadListener uploadListener = new Modeling3dReconstructUploadListener() {
    @Override
    public void onUploadProgress(String taskId, double progress, Object ext) {
    // Upload progress.
    }

    @Override
    public void onResult(String taskId, Modeling3dReconstructUploadResult result, Object ext) {
    if (result.isComplete()) {
    isUpload = true;
    ScanActivity.this.runOnUiThread(new Runnable() {
    @Override
    public void run() {
    progressCustomDialog.dismiss();
    Toast.makeText(ScanActivity.this, getString(R.string.upload_text_success), Toast.LENGTH_SHORT).show();
    }
    });
    TaskInfoAppDbUtils.updateTaskIdAndStatusByPath(new Constants(ScanActivity.this).getCaptureImageFile() + manager.getSurfaceViewCallback().getCreateTime(), taskId, 1);
    }
    }

    @Override
    public void onError(String taskId, int errorCode, String message) {
    isUpload = false;
    runOnUiThread(new Runnable() {
    @Override
    public void run() {
    progressCustomDialog.dismiss();
    Toast.makeText(ScanActivity.this, "Upload failed." + message, Toast.LENGTH_SHORT).show();
    LogUtil.e("taskid" + taskId + "errorCode: " + errorCode + " errorMessage: " + message);
    }
    });
    
    }
     };

    5. Passer le rappel de l’écouteur de téléchargement au moteur pour télécharger des images

    Transmettez le rappel de l’écouteur de téléchargement au moteur. Appel téléverser un fichier(), transmettez l’ID de tâche obtenu à l’étape 3 et le chemin des images à télécharger. Ensuite, téléchargez les images sur le serveur cloud.

    // Pass the listener callback to the engine.
    modeling3dReconstructEngine.setReconstructUploadListener(uploadListener);
    // Start uploading.
     modeling3dReconstructEngine.uploadFile(taskId, filePath);

    6. Interrogation du statut de la tâche

    Appel getInstance de Modélisation3dReconstructTaskUtils pour créer une instance de traitement de tâche. Passer le contexte actuel.

     // Create a task processing instance.
     modeling3dReconstructTaskUtils = Modeling3dReconstructTaskUtils.getInstance(Modeling3dDemo.getApp());

    Appel requêteTâche de l’instance de traitement de tâche pour interroger l’état de la tâche de reconstruction d’objet 3D.

    // Query the task status, which can be: 0 (images to be uploaded); 1: (image upload completed); 2: (model being generated); 3( model generation completed); 4: (model generation failed).
     Modeling3dReconstructQueryResult queryResult = modeling3dReconstructTaskUtils.queryTask(task.getTaskId());

    7. Création d’un rappel d’écoute pour traiter le résultat du téléchargement du fichier modèle

    Créez un rappel d’écouteur qui vous permet de configurer les opérations déclenchées en cas de succès ou d’échec du téléchargement.

    // Create a download listener callback.
    private Modeling3dReconstructDownloadListener modeling3dReconstructDownloadListener = new Modeling3dReconstructDownloadListener() {

    @Override
    public void onDownloadProgress(String taskId, double progress, Object ext) {
    ((Activity) mContext).runOnUiThread(new Runnable() {
    @Override
    public void run() {
    dialog.show();
    }
    });
    }
    
    @Override
    public void onResult(String taskId, Modeling3dReconstructDownloadResult result, Object ext) {
    ((Activity) mContext).runOnUiThread(new Runnable() {
    @Override
    public void run() {
    Toast.makeText(getContext(), "Download complete", Toast.LENGTH_SHORT).show();
    TaskInfoAppDbUtils.updateDownloadByTaskId(taskId, 1);
    dialog.dismiss();
    }
    });
    }
    
    @Override
    public void onError(String taskId, int errorCode, String message) {
    LogUtil.e(taskId + " <---> " + errorCode + message);
    ((Activity) mContext).runOnUiThread(new Runnable() {
    @Override
    public void run() {
    Toast.makeText(getContext(), "Download failed." + message, Toast.LENGTH_SHORT).show();
    dialog.dismiss();
    }
    });
    }
     };

    8. Passer le rappel de l’écouteur de téléchargement au moteur pour télécharger le fichier du modèle généré

    Transmettez le rappel de l’écouteur de téléchargement au moteur. Appel downloadModel, transmettez l’ID de tâche obtenu à l’étape 3 et le chemin d’enregistrement du fichier modèle pour le télécharger.

    // Pass the download listener callback to the engine.
    modeling3dReconstructEngine.setReconstructDownloadListener(modeling3dReconstructDownloadListener);
    // Download the model file.
     modeling3dReconstructEngine.downloadModel(appDb.getTaskId(), appDb.getFileSavePath());

    Plus d’information

    1. L’objet doit avoir une texture riche, être de taille moyenne et avoir un corps rigide. L’objet ne doit pas être réfléchissant, transparent ou semi-transparent. Les types d’objets incluent des biens (comme des jouets en peluche, des sacs et des chaussures), des meubles (comme des canapés) et des reliques culturelles (comme des bronzes, des artefacts en pierre et des artefacts en bois).
    2. La dimension de l’objet doit être comprise entre 15 x 15 x 15 cm et 150 x 150 x 150 cm (une dimension plus grande nécessite un temps de modélisation plus long).
    3. La reconstruction d’objets 3D ne prend pas en charge la modélisation du corps et du visage humains.
    4. Assurez-vous que les conditions suivantes sont remplies lors de la collecte d’images : Placez un seul objet sur un plan stable en couleur pure. L’environnement ne doit pas être sombre ou éblouissant. Gardez toutes les images nettes, sans flou causé par le mouvement ou les secousses. Assurez-vous que les images sont prises sous différents angles, y compris le bas, le plat et le haut (il est conseillé de télécharger plus de 50 images pour un objet). Déplacez la caméra aussi lentement que possible. Ne modifiez pas l’angle pendant la prise de vue. Enfin, assurez-vous que le rapport objet/image est aussi grand que possible et que toutes les parties de l’objet sont présentes.

    Il s’agit de l’exemple de code de reconstruction d’objets 3D. Vous pouvez télécharger l’exemple de code depuis GitHub. Essayez de l’intégrer dans votre application et créez vos propres modèles 3D !

    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.