Obtenir tous les triangles d'un maillage dans un objet
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--
- TriggerEnter & -Exit pour obtenir des objets en collision
- 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.
- Obtenir tous les meshfilter et meshes
- 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 .
- Combiner des maillages en un seul maillage et placer est quelque part
Réponses
- Obtenir les indices des sommets à partir de
spatialMesh
ceux qui sont à l'intérieur de la sphère ->indicesList
- À partir du tableau de triangles,
spatialMesh
obtenez les triangles contenant tous les indices de sommetindicesList
->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;