Share via


Utiliser SideFX Houdini pour transformer les nuages de points en objets 3D optimisés pour Dynamics 365 Guides et pour les composants de réalité mixte dans les applications créées avec Power Apps

Ce didacticiel offre des instructions étape par étape pour les tâches suivantes :

  • Convertissez un cloud de points en un objet 3D.

  • Optimiser un objet 3D en réduisant le nombre de polygones pour qu’il corresponde aux objectifs de performance pour les applications de réalité mixte Dynamics 365.

  • Exporter un objet 3D optimisé sous forme de fichier .glb pouvant être utilisé dans Dynamics 365 Guides et dans les composants de réalité mixte dans les applications créées avec Power Apps

  • Créer un modèle de pipeline de traitement, afin d’optimiser rapidement les nuages de points par la suite.

Ce didacticiel est à titre d’information uniquement, pour montrer le fonctionnement de SideFX Houdini avec Microsoft Dynamics 365 Guides et Power Apps. L’utilisation de ces applications tierces est soumise aux conditions des tiers. Microsoft Corporation n’est pas affiliée à, n’est pas un partenaire de, et ne cautionne ni ne sponsorise SideFX ou aucun de ses produits. Il existe plusieurs autres applications de création de contenu que vous pouvez utiliser pour préparer vos objets 3D.

Qu’est-ce que Houdini ?

Houdini est un outil de création de contenu procédural 3D. Il utilise un système d’outils non destructif basé sur des nœuds pour concevoir des pipelines de processus et du contenu 3D.

Configurer votre environnement

Pour configurer votre environnement , vous devez effectuer les tâches suivantes :

  • Installer l’extension SideFX Labs.

  • Configurer AliceVision pour la photogrammétrie.

Installer l’extension SideFX Labs

SideFX Labs sert de banc d’essai pour les outils pour vous aider à être opérationnel plus rapidement avec Houdini. Cette collection d’outils gratuits comprend des outils utiles pour convertir des nuages de points en objets 3D optimisés. Pour utiliser SideFX Labs, vous devez disposer d’Houdini 18 ou version ultérieure.

SideFX fournit une vidéo de didacticiel qui vous aide à installer ces outils.

Remarque

Vous devez installer Houdini avant de pouvoir installer SideFX Labs. En savoir plus sur l’installation d’Houdini.

  1. Ouvrez Houdini.

  2. Pour installer SideFX Labs, sélectionnez le signe plus Signe plus. en haut de la fenêtre Houdini, sélectionnez Shelves, puis activez la case à cocher SideFX Labs.

    Case à cocher SideFX Labs.

  3. Dans la barre d’outils qui apparaît en haut de la fenêtre, sélectionnez Update Toolset pour ouvrir le programme d’installation.

    Bouton Update Toolset.

  4. Sélectionnez Update pour installer les outils.

    Bouton Update.

Une fois l’installation effectuée, d’autres outils apparaissent dans la barre d’outils. Vous pouvez ensuite continuer avec ce didacticiel.

Configurer AliceVision pour la photogrammétrie

AliceVision est un système de vision par ordinateur photogrammétrique développé par Mikros Image. Il fournit des algorithmes de reconstruction 3D et de suivi de caméra. En savoir plus sur AliceVision et le plug-in AliceVision.

Pour plus d’informations sur l’installation et la configuration du plug-in AliceVision pour Houdini, consultez le didacticiel SideFX.

Importer un nuage de points dans Houdini

Houdini peut importer des fichiers de nuages de points au format de fichier PLY. Si votre fichier est au format de fichier PTS, vous pouvez le convertir manuellement au format PLY.

Convertir un fichier .pts en fichier .ply

  1. Ouvrez votre fichier .pts dans un éditeur de fichiers de votre choix et ajoutez l’en-tête suivant.

    ************************
    ply
    format ascii 1.0
    element vertex 534993
    property float x
    property float y
    property float z
    property uchar intensity
    property uchar red
    property uchar green
    property uchar blue
    end_header
    ************************
    
  2. Dans l’en-tête, à côté de element vertex, remplacez la valeur 534993 par la valeur qui apparaissait à l’origine en haut de votre fichier .pts (mais qui suit maintenant immédiatement l’en-tête).

    Valeur en haut du fichier .pts.

    Cette valeur correspond au nombre total de points dans votre nuage de points.

  3. Supprimez la valeur d’origine après l’en-tête. Le tableau suivant présente une comparaison côte à côte des fichiers avant et après avoir effectué les modifications précédentes. La valeur element vertex est mise en surbrillance en rouge.

    Haut du fichier .pts Haut du fichier .ply
    Valeur en haut du fichier .pts Valeur dans l’en-tête du fichier .ply
  4. Enregistrez le fichier afin qu’il ait l’extension de nom de fichier .ply.

Importer le fichier .ply

  1. Ouvrez Houdini. Une scène est créée automatiquement. Dans cette procédure, vous allez créer une chaîne de nœuds pour traiter le nuage de points dans un objet 3D. Ces nœuds sont créés dans le volet inférieur droit de la fenêtre Houdini.

    Volet Node.

  2. Cliquez avec le bouton droit dans le volet inférieur droit pour ouvrir le menu TAB. (Sinon, appuyez sur la touche Tabulation.)

  3. Sur le menu TAB, sélectionnez Import > File, puis cliquez sur le volet Geometry pour placer le nœud.

    Commande File.

  4. Double-cliquez au milieu du nœud file1 (ou appuyez sur I) pour explorer la partie sélection de fichier du nœud, cliquez sur le bouton File Chooser, puis sélectionnez le fichier à importer.

    Bouton File Chooser.

  5. Dans le navigateur de fichiers qui s’affiche, accédez à l’emplacement du fichier de nuage de points .ply que vous souhaitez importer, sélectionnez-le, puis cliquez sur Accept.

    Bouton Accept.

    Le nuage de points apparaît dans la partie principale de la fenêtre. Si vous ne pouvez pas le voir, essayez d’utiliser la molette de la souris pour faire un zoom arrière jusqu’à voir le nuage de points en entier.

    Nuage de points.

Préparer le nuage de points

Réorienter le nuage de points

Lorsque vous importez un nuage de points pour la première fois, il est mal orienté. Vous pouvez corriger l’orientation en ajoutant un nœud de transformation à l’arborescence de nœuds.

  1. Faites un clic droit dans le volet Geometry pour ouvrir le menu TAB, puis sélectionnez Manipulate > Transform pour ajouter un nœud de transformation.

    Commande Transform.

  2. Faites glisser à partir du point en bas du nœud file1 vers le point situé au-dessus du nœud transform1. De cette façon, vous connectez la sortie du nœud file1 à l’entrée du nœud transform1. Cliquez ensuite sur le côté droit du nœud transformer1. Le côté droit du nœud transform1 devient bleu et le nœud devient actif dans la partie principale de la fenêtre, afin que vous puissiez voir votre modèle une fois qu’il a été réorienté.

    Nœud Transform.

    Conseil

    Pour afficher le modèle à une étape spécifique du processus dans Houdini, cliquez sur le côté droit du nœud approprié. Cette fonctionnalité est utile si vous devez revenir à un état antérieur de votre objet 3D et apporter de nouvelles modifications.

  3. Pour corriger la rotation de votre modèle, dans le volet des options au-dessus du volet des nœuds, ajoutez des valeurs dans la ligne Rotate. Vous pouvez souvent définir la valeur x sur 270 pour faire pivoter le modèle dans la bonne position. Cependant, si cette valeur ne fonctionne pas, essayez des valeurs différentes.

    Valeur Rotate.

  4. Pour centrer votre nuage de points sur le point d’origine, ajoutez un nœud d’alignement d’axe après le nœud de transformation. Pour placer le nœud, passez votre souris sur le volet Geometry, appuyez sur la touche Tabulation pour ouvrir le menu TAB, puis sélectionnez Labs>Geo>Labs Axis Align.

    Commande Labs Axis Align.

  5. Faites glisser pour connecter le point de sortie en bas du nœud transform1 vers le point d’entrée situé au-dessus du nœud axis_align1. Laissez les valeurs par défaut telles quelles pour positionner votre nuage de points au-dessus du point d’origine (un endroit idéal pour cela).

    Nœuds connectés.

Nettoyer le nuage de points pour supprimer les points parasites

Si votre nuage de points contient des points parasites que vous souhaitez supprimer, vous pouvez sélectionner et supprimer des points individuels ou des groupes de points.

  1. Remplacez la méthode Geometry select par Points et l’outil Select par Lasso Picking.

    Remarque

    Vous pouvez utiliser une méthode différente si vous préférez.

    Méthode Points et outil Lasso Picking sélectionnés.

  2. Sélectionnez les points à supprimer.

    Points à supprimer sélectionnés.

  3. Appuyez sur la touche Suppr. Un nouveau nœud blast1 apparaît. Le point d’entrée en haut de ce nœud est connecté au point de sortie en bas du dernier nœud avec lequel vous travailliez.

    Nœud d’éclatement.

  4. Continuez à supprimer des points jusqu’à ce que vous soyez satisfait des résultats. Chaque suppression ajoute un nouveau nœud d’éclatement que vous pouvez afficher ou supprimer à tout moment.

    Plusieurs nœuds d’éclatement.

Convertir le nuage de points en un maillage

Les applications de rendu glTF et en temps réel nécessitent que les objets soient représentés sous la forme d’une surface polygonale triangulée. Vous pouvez utiliser la commande Particle Fluid Surface pour connecter les points dans une surface logique sous forme de géométrie polygonale.

  1. Cliquez dans le volet Geometry pour ouvrir le menu TAB, puis sélectionnez Fluid>Particle Fluid Surface. Sélectionnez ensuite le nœud et ajoutez-le dans le volet Geometry.

    Commande Particle Fluid Surface.

  2. Faites glisser pour connecter le point de sortie situé en bas du nœud transform1 vers le point d’entrée situé en haut, à gauche du nœud particlefluidsurface1. Cliquez ensuite sur le côté droit du nœud pariclefluidsurface1 pour l’activer dans la partie principale de la fenêtre.

    Capture d’écran des nœuds connectés.

    Le nuage de points est représenté sous forme de maillage dans la partie principale de la fenêtre. L’onglet Surfacing est sélectionné dans le volet supérieur droit, au-dessus du volet Geometry.

    Onglet Surfacing.

  3. Si les données de couleur sont associées aux points du nuage de points, vous pouvez utiliser les attributs de couleur en ajoutant les lettres Cd à la fin de la valeur dans le champ Transfer Attributes. La couleur sera alors affichée sur votre maillage.

    Attribut Cd.

  4. S’il y a des trous dans le maillage, comme indiqué dans l’illustration suivante, ajustez les curseurs Particle Separation et Voxel Scale dans le volet supérieur droit pour essayer de résoudre le problème.

    Curseurs Particle Separation et Voxel Scale.

  5. Pour préparer le maillage pour la décimation (la prochaine étape du processus global), sous Output, modifiez la valeur du champ Convert To et remplacez Surface Polygon Soup par Surface Polygons. De cette façon, vous pouvez modifier le maillage et le décimer.

    Champ Convert To.

  6. Cliquez avec le bouton droit dans le volet Geometry pour ouvrir le menu TAB puis sélectionnez Polygon>Remesh. Un nœud de remaillage est ajouté pour convertir le maillage en triangles. De cette manière, vous pouvez décimer l’objet 3D en un nombre de polygones qui répond à vos exigences de performances.

    Commande Remesh.

  7. Faites glisser pour connecter le point de sortie situé en bas du nœud particlefluidsurface1 vers le point d’entrée situé en haute, à gauche du nœud remesh. Cliquez au milieu du nœud remesh pour l’activer dans le volet au-dessus du volet Geometry. Cliquez ensuite sur le côté droit du nœud remesh pour activer le modèle dans la partie principale de la fenêtre. Vous pouvez maintenant modifier les propriétés du remaillage, le modèle dans la partie principale de la fenêtre va ensuite refléter ces modifications.

    Nœuds connectés.

  8. Testez les options situées sous Element Sizing jusqu’à obtenir les résultats que vous souhaitez. Pour le champ Edge Lengths, vous pouvez conserver la valeur par défaut (Uniform) ou sélectionner Adaptive et ajuster le curseur Relative Density (et d’autres options) afin d’obtenir le maillage souhaité.

    Options Element Sizing.

Décimer l’objet 3D pour améliorer les performances

Pour atteindre les objectifs spécifiques à une application, vous devrez peut-être décimer votre objet 3D. La décimation consiste à recalculer des polygones de surface d’un modèle pour créer une forme similaire en utilisant moins de polygones. Bien que ce processus réduise la fidélité visuelle, il contribue à améliorer les performances. Le tableau suivant présente une comparaison côte à côte d’un modèle de haute qualité utilisé pour une faible complexité de scène sur HoloLens et un modèle de faible qualité utilisé pour une complexité de scène élevée.

Objet 3D à polygone élevé Objet 3D à polygone faible
Modèle à polygone élevé Modèle à faible polygone
500 000 triangles 8 000 triangles

Décimer un modèle

  1. Dans le volet Geometry, appuyez sur la touche Tabulation pour ouvrir le menu TAB, puis sélectionnez Polygon>PolyReduce pour placer un nœud PolyReduce dans le volet Geometry.

    Commande PolyReduce.

  2. Faites glisser pour connecter le point de sortie situé en bas du nœud remesh vers le point d’entrée situé en haut, à gauche du nœud polyreduce1. Cliquez au milieu du nœud polyreduce1, puis cliquez sur le côté droit du nœud pour l’activer dans la partie principale de la fenêtre.

  3. Sous Reduction Amount, dans le champ Target, sélectionnez Output Polygon Count, puis utilisez le curseur Number To Keep pour ajuster le nombre de polygones afin de répondre à vos exigences de performances, mais également de maintenir une fidélité visuelle acceptable.

    Options Reduction Amount.

Le nuage de points a maintenant été converti en un maillage 3D optimisé. À l’étape suivante, vous créerez une texture haute résolution sur l’objet 3D pour récupérer une partie de la fidélité visuelle qui existait avant la décimation.

Cuire une texture haute résolution sur un maillage à faible polygone

Un inconvénient de la réduction du nombre de polygones dans un maillage est qu’une grande partie des détails peut être perdue. Pour restaurer une partie de ces détails, vous pouvez les capturer et les appliquer en tant que texture superposée au modèle à faible polygone. Au cours de ce processus, connu sous le nom de cuisson de texture, vous allez prendre une photo de toutes les surfaces de votre modèle à polygone élevé, puis les assembler dans une « courtepointe » que vous allez draper sur le modèle à faible polygone. De cette manière, vous bénéficiez des performances d’un modèle à faible polygone tout en conservant certains des détails les plus fins d’un modèle à polygone élevé.

Les coordonnées de texture (également appelées UV) sont des paires de nombres (U et V) qui sont stockées dans la géométrie d’un modèle. Ces nombres représentent la manière dont une image 2D peut être mappée sur une surface 3D et permettent de définir les propriétés de la surface en tant qu’image. Les images peuvent être de simples décalcomanies ou des composants de matériaux complexes, tels que la rugosité et le métal. Vous pouvez générer manuellement des positions UV pour un maillage, ou le processus peut être effectué de manière semi-automatique ou automatique. L’opérateur de surface AutoUV est un outil dans Houdini qui peut générer des UV. Il utilise quelques méthodes automatiques lors de la création d’UV.

Cuire la texture

  1. Cliquez avec le bouton droit dans le volet Geometry pour ouvrir le menu TAB, puis sélectionnez Labs>UV>Labs Auto UV pour ajouter un nœud AutoUV à la scène.

    Commande Labs AutoUV.

  2. En dessous de Method, remplacez la valeur du champ Method par UV Unwrap.

    Méthode UV Unwrap sélectionnée.

  3. Faites glisser pour connecter le point de sortie en bas du nœud polyreduce1 vers le point d’entrée situé au-dessus du nœud autouv1.

    Faire glisser pour créer des nœuds connectés.

  4. Pour afficher côte à côte les objets « avant » et « après », sélectionnez Disposition de la fenêtre d’affichage, puis Deux vues côte à côte.

    Option Two Views Side by Side.

  5. Dans la partie principale de la fenêtre, dans le menu déroulant, sélectionnez Set View > UV viewport.

    Commande UV viewport.

    Les UV non emballés apparaissent à gauche et l’objet 3D apparaît à droite.

    UV non emballés et objet 3D.

  6. Dans le volet Geometry, sélectionnez Labs>Output>Labs Maps Baker pour ajouter un nœud maps_baker1.

    Commande Labs Maps Baker.

  7. Faites glisser pour connecter le point de sortie situé en bas du nœud autouv1 vers le point d’entrée situé en haut, à gauche du nœud maps_baker1. (Le point supérieur gauche est le nœud LOW Resolution input.)

    Connexion du nœud autouv1 au nœud maps_baker1.

  8. Faites glisser pour connecter le point de sortie situé en bas du nœud particlefluidsurface1 vers le point d’entrée situé en haut, à droite du nœud maps_baker 1. (Le point supérieur droit est le nœud HIGH Resolution input.)

    Connexion du nœud particlefluidsurface1 au nœud maps_baker 1.

  9. Sélectionnez le nœud maps_baker1, puis, sous Bake, remplacez la valeur du champ Preview Channel par diffuse. Sous Bake Options, définissez le champ Diffuse Map sur diffuse.

    Options de cuisson.

    Conseil

    Pour enregistrer votre projet dans un dossier spécifique, cliquez sur le bouton File Chooser à côté du champ Output Directory qui est indiqué dans l’illustration précédente. Lorsque vous cuisez une texture, le fichier de texture .png est enregistré dans un dossier render créé dans le dossier racine du projet enregistré. En enregistrant votre projet dans son propre dossier, vous rendez la texture cuite facile à trouver.

  10. Sélectionnez le nœud maps_baker1, puis, dans le volet des options, sélectionnez Bake.

    Capture d’écran du bouton Bake.

  11. Cliquez avec le bouton droit dans le volet Geometry pour ouvrir le menu TAB, puis sélectionnez Managers>Material Network pour ajouter un nœud matnet1 à la scène.

    Commande Material Network.

  12. Double-cliquez sur le nœud matnet1 pour ouvrir le volet VEX Builder.

    Nœud Matnet.

  13. Cliquez avec le bouton droit dans le volet VEX Builder, puis sélectionnez Shaders > Principled Shader pour ajouter un matériau Principled Shader.

    Commande Principled Shader.

  14. Dans le volet des options, sur l’onglet Surface, utilisez les curseurs pour remplacer la valeur du champ Roughness par 0.6 et la valeur du champ Metallic par 0.1. (Vous pouvez définir ces champs sur ce que vous voulez, mais nous avons constaté que ces valeurs sont un bon point de départ lorsqu’elles sont utilisées en conjonction avec les valeurs par défaut.)

    Champs Roughness et Metallic.

  15. Sur l’onglet Textures, sous Base Color, activez la case à cocher Use Texture. Cliquez ensuite sur le bouton File Chooser et sélectionnez le fichier de texture *_color.png que vous avez enregistré dans le dossier render plus tôt. Le shader basé sur des principes est désormais prêt à être utilisé.

    Remarque

    N’hésitez pas à modifier davantage le matériau. Pour les besoins de ce didacticiel, cette configuration est suffisante.

    Case à cocher Use Texture et texture sélectionnée.

  16. Dans le volet VEX Builder, cliquez sur le bouton Back (flèche gauche) pour revenir au volet Geometry.

    Bouton Back.

  17. Sélectionnez Material > Material pour placer un nœud de support dans le volet Geometry.

    Commande Material.

  18. Faites glisser pour connecter le point de sortie en bas du nœud autouv1 vers le point d’entrée situé au-dessus du nœud material1.

    Connexion du nœud autouv1 au nœud material1.

  19. Sélectionnez le nœud material1 et cliquez sur le bouton Operator chooser. Ensuite, dans la boîte de dialogue Choose Operator, sélectionnez file1>matnet1>principledshader1 pour sélectionner le shader basé sur des principes que vous avez créés précédemment.

    Bouton Choose Operator et fichier de matériau sélectionné.

  20. Cliquez sur le côté droit du nœud pour l’activer dans la partie principale de la fenêtre.

La texture est rendue au-dessus de votre objet 3D à faible polygone. Si cela semble acceptable, passez à l’étape suivante.

Texture rendue sur le modèle à faible polygone.

Exporter le modèle en tant que fichier .glb

Dans cette étape, vous allez exporter le modèle dans un fichier .glb afin qu’il puisse être utilisé avec Dynamics 365 Guides et Power Apps.

  1. Cliquez avec le bouton droit dans le volet Geometry pour ouvrir le menu TAB, puis sélectionnez Export>ROP GLTF Output.

    Commande ROP GLTF Output.

  2. Faites glisser pour connecter le point de sortie en bas du nœud material1 vers le point d’entrée situé au-dessus du nœud rop_gltf1.

    Connexion du nœud material1 au nœud rop_gltf1.

  3. Dans le volet supérieur, remplacez la valeur du champ Export Type par glb.

    glb sélectionné dans le champ Export Type.

  4. Cliquez sur le bouton File Chooser en regard du champ Output File, puis entrez un nom et une destination pour le fichier .glb. Ajoutez bien .glb à la fin du nom de fichier. Lorsque vous avez terminé, sélectionnez Accept.

    Bouton File Chooser et champ File.

  5. Sélectionnez Render to Disk pour terminer l’exportation et créer le fichier .glb.

    Bouton Render to Disk.

Créez un modèle pour réutiliser vos paramètres pour d’autres nuages de points

Vous pouvez créer un modèle pour gagner du temps et vous épargner des efforts. De cette manière, les paramètres que vous créez pour un nuage de points peuvent être utilisés pour d’autres nuages de points. Bien que vous deviez toujours sélectionner manuellement Bake et probablement ajuster quelques valeurs, vous pouvez automatiser la plupart du traitement.

Créer un modèle

  1. Remplacez la géométrie actuellement utilisée par une géométrie par défaut. Cette étape allège le fichier modèle pour qu’il se charge rapidement.

    1. Dans le volet Geometry, cliquez au milieu du nœud de fichier pour basculer vers le menu File dans le volet supérieur.

    2. Remplacez la valeur du champ Geometry File par default.bgeo, puis sélectionnez Reload Geometry.

    3. Notez que la géométrie est redessinée afin de ressembler désormais à un cube générique.

    4. Remplacez le nom du fichier par quelque chose de générique comme Modèle.

    Géométrie redessinée.

  2. Sélectionnez File > Save, et entrez un nom dont vous vous souviendrez, comme Prep_Template.

    Commande Save.

  3. Fermez Houdini.

Utiliser le modèle

  1. Ouvrez Houdini, sélectionnez File>Open, puis sélectionnez le modèle que vous venez de créer.

    Commande Open.

  2. Dans le volet Geometry, cliquez au milieu du nœud de fichier pour basculer vers le menu File dans le volet supérieur. Cliquez ensuite sur le bouton File Chooser à côté du champ Geometry File pour sélectionner le fichier de nuage de points .ply.

    Nœud sélectionné et bouton File Chooser.

  3. Sélectionnez Reload Geometry pour charger le nuage de points dans la scène.

    Bouton Reload Geometry.

  4. Accédez au nœud maps_baker1, puis sélectionnez Bake pour créer une nouvelle texture pour votre objet 3D.

    Bouton Bake.

  5. Cliquez sur le côté droit du nœud material1 pour afficher votre modèle cuit.

    Côté droit du nœud Material.

  6. Suivez l’une de ces étapes :

    • Si vous êtes satisfait de l’objet 3D, accédez au nœud rop_gltfB, puis sélectionnez Render to Disk pour exporter votre objet 3D.

      Commande Render to Disk.

    • Si vous n’êtes pas satisfait de l’apparence de l’objet 3D, ajustez les paramètres des nœuds particlefluidsurface1, remesh, et polyreduce1. Lorsque votre modèle semble acceptable, cuisez à nouveau votre texture et exportez l’objet 3D.

Afficher un objet 3D dans Dynamics 365 Guides ou Power Apps

Après avoir préparé un objet 3D, utilisez les liens suivants pour en savoir plus sur l′utilisation du modèle dans Dynamics 365 Guides ou Power Apps :

Plus d’informations

Les captures d’écran présentées dans ce didacticiel proviennent du logiciel Houdini afin de fournir des instructions claires sur la façon d’utiliser ce logiciel. En savoir plus sur SideFX Houdini.

Microsoft Corporation n’est pas responsable et décline expressément toute responsabilité pour les dommages de toute nature résultant de l’utilisation de Houdini ou du fait de se fier à ces instructions. Ce document est créé uniquement pour fournir des informations générales à nos clients et ne prend en compte aucun plan d′affaires ou cahier des charges individualisé.

L’utilisation dans ce document de noms et d’images de marques déposées est strictement à des fins informatives et descriptives, et aucune réclamation commerciale à leur utilisation, ou suggestion de parrainage ou d’approbation, n’est faite par Microsoft Corporation.