Ottieni tutti i triangoli di una mesh all'interno di un oggetto

Aug 18 2020

Voglio interagire con la mappa/mesh spaziale a cui accedo tramite mrtk. Voglio creare un'istanza di una sfera nella posizione del cursore e ottenere ogni triangolo della mesh spaziale che si trova all'interno della sfera, quindi posso ritagliarlo e salvarlo per me . So come istanziare e posizionare la sfera e so come ottenere la mesh spaziale tramite la scena comprendendo sdk, ma non so come affrontarlo. Per capire meglio cosa voglio provare, ho disegnato un piccolo schizzo:

--Modifica e soluzione--

  1. TriggerEnter & -Exit per ottenere oggetti in collisione
  2. My Sphere/Cube/Whatever ha lo script di manipolazione degli oggetti da mrtk, che ha un evento EndOfManipulation che si attiva, dopo aver posizionato il mio qualunque oggetto.
  3. Ottenere tutti i meshfilter e le mesh
  4. Controlla tramite collider.bounds.contains se point è all'interno del mio collider e salva tutti quei punti per creare una nuova mesh tramite il codice da @Pluto .
  5. La combinazione di mesh in una mesh e il posizionamento è da qualche parte

Risposte

1 Pluto Aug 17 2020 at 23:28
  • Ottieni gli indici dei vertici da spatialMeshquelli che sono all'interno della sfera ->indicesList
  • Dall'array di triangoli di spatialMeshottenere i triangoli che hanno tutti gli indici dei vertici all'interno indicesList->triangleList

E hai tutto ciò che ti serve per costruire un array di vertici e un array di triangoli per la mesh all'interno della sfera.

Solo come esempio:

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