Obtenir tous les triangles d'un maillage dans un objet

Aug 18 2020

Je souhaite interagir avec la carte/le maillage spatial auquel j'ai accès via mrtk. Je veux instancier une sphère à la position du curseur et obtenir chaque triangle du maillage spatial qui se trouve à l'intérieur de la sphère, afin que je puisse le découper et le sauvegarder pour moi . Je sais comment instancier et positionner la sphère et je sais comment obtenir le maillage spatial via le sdk de compréhension de la scène, mais je ne sais pas comment aborder cela. Pour mieux comprendre ce que je veux essayer, j'ai fait un petit croquis :

--Modifier et solution--

  1. TriggerEnter & -Exit pour obtenir des objets en collision
  2. Mon Sphere/Cube/Whatever a le script de manipulation d'objet de mrtk, qui a un événement EndOfManipulation qui se déclenche, après avoir placé mon objet.
  3. Obtenir tous les meshfilter et meshes
  4. Vérifiez via collider.bounds.contains si le point est à l'intérieur de mon collisionneur et enregistrez tous ces points pour créer un nouveau maillage via le code de @Pluto .
  5. Combiner des maillages en un seul maillage et placer est quelque part

Réponses

1 Pluto Aug 17 2020 at 23:28
  • Obtenir les indices des sommets à partir de spatialMeshceux qui sont à l'intérieur de la sphère ->indicesList
  • À partir du tableau de triangles, spatialMeshobtenez les triangles contenant tous les indices de sommet indicesList->triangleList

Et vous avez tout ce dont vous avez besoin pour construire un tableau de sommets et un tableau de triangles pour le maillage à l'intérieur de la sphère.

Juste à titre d'exemple :

for i = 0 to triangleList.Count
    newVertices[i] = spatialMesh.vertices[triangleList[i]];
    newTriangles[i] = i;