Na szybko napisalem kod ktory chyba dobrze ilustruje jedna z mozliwosci rozwiazania problemu. Mam nadzieje ze z komentarzami wszystko jest jasne.
groupsArr = #()
allFoundArr = #()
myMesh = $obiekt
iNumFaces = getNumFaces myMesh
iTotalFound = 0 --ilosc znalezionych fejsow
iCurrentFace = 1 --od tego fejsa zaczynam przeszukiwanie
while (true) do
(
sel = #{iCurrentFace}
count = 0
while (true) do
(
sel = meshop.getVertsUsingFace myMesh sel --szukam vertexow przy pomocy fejsa(ow) z sel
sel = meshop.getFacesUsingVert myMesh sel --szukam fejsow przy pomocy vertexow z poprzedniego kroku
if (count == sel.numberSet) then exit --i tak dopoki przybywa elementow
count = sel.numberSet
)
iTotalFound += sel.numberSet --zwiekszam ilosc wszystkich znalezionych fejsow
append groupsArr (sel as array) --wrzucam to tablicy wynikowej grupe fejsow
join allFoundArr (sel as array) --dodatkowa tablica ktorej uzywam do znalezienia numeru nie wykorzystanego jeszcze fejsa
if (iTotalFound == iNumFaces) then exit --znalazlem wszystkie fejsy, koniec
for f in 1 to iNumFaces do --szukam numeru fejsa od ktorego moge zaczac kolejny etap wyszukiwania
(
if (findItem allFoundArr f == 0) then
(
iCurrentFace = f
exit
)
)
)
print groupsArr
edit: na koncu wychodzi tablica z fejsami, dopiero teraz to zauwazylem, oczywiscie mozesz latwo wydobyc z tego vertexy (getVertsUsingFace) albo zmodyfikowac algorytm