Obter todos os triângulos de uma malha dentro de um objeto

Aug 18 2020

Desejo interagir com o mapa/malha espacial ao qual tenho acesso via mrtk. Quero instanciar uma esfera na posição do cursor e obter cada triângulo da malha espacial que está dentro da esfera, para que eu possa cortá-lo e salvá-lo para mim . Eu sei como instanciar e posicionar a esfera e sei como obter a malha espacial por meio do sdk de entendimento da cena, mas não sei como abordar isso. Para entender melhor o que quero tentar, desenhei um pequeno esboço:

--Editar e Solução--

  1. TriggerEnter & -Exit para obter objetos colididos
  2. My Sphere/Cube/Whatever possui o script de manipulação de objetos do mrtk, que possui um evento EndOfManipulation que é acionado, após colocar meu objeto Whatever.
  3. Obtendo todos os meshfilter e meshes
  4. Verifique via collider.bounds.contains se o ponto está dentro do meu colisor e salve todos esses pontos para criar uma nova malha por meio do código de @Pluto .
  5. Combinando malhas em uma malha e colocando em algum lugar

Respostas

1 Pluto Aug 17 2020 at 23:28
  • Obtenha os índices dos vértices spatialMeshque estão dentro da esfera ->indicesList
  • Da matriz de triângulos, spatialMeshobtenha os triângulos que possuem todos os índices de vértice dentro indicesList->triangleList

E você tem tudo o que precisa para construir uma matriz de vértices e uma matriz de triângulos para a malha dentro da esfera.

Apenas como exemplo:

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