Wektory normalne w CloudCompare
Do modelowania i analizy danych z różnych sensorów pozyskujących chmury punktów najczęściej potrzebne są normalne. Normalna – dla niezaznajomionych z tematem – to wektor prostopadły do płaszczyzny stycznej do powierzchni w danym punkcie. Oczywiście jest wiele narzędzi programistycznych i komercyjnych, które umożliwiają wyznaczenie tych wektorów. W tym poście jednak pokażemy Wam jak generować normalne w darmowym Cloud Compare (CC). Wykonamy to na naszej testowej chmurze punktów przedstawiającej koty, której używaliśmy już wcześniej. Pobierzecie ją tutaj.
Zaczynamy jak zawsze od wczytania naszego pliku do CC:
Wybieramy zbiór punktów dla którego generować będziemy wektory normalne. Zbiór zostanie otoczony prostopadłościanem.
Z menu głównego wybieramy Edit -> Normals -> Compute. Otwiera się okno w którym definiujemy podstawowe parametry generowania:
Do wyboru mamy takie parametry jak:
Surface approximation | Local surface model – model aproksymacji płaszczyzny do której wyznaczany będzie wektor normalny,
Neighbors – odległość do wyboru punktów sąsiednich do aproksymacji płaszczyzny
Orientation – sposób orientacji wektorów normalnych: preferowana orientacja (Use preferred orientation) lub lokalna orientacja bazująca na określonej liczbie sąsiadów knn (Use Minimum Spanning Tree)
Dobór parametrów jest uzależniony od naszych potrzeb. Najlepiej na małym reprezentatywnym fragmencie naszych danych wyliczyć kilkukrotnie normalne dla różnych ustawień. Wybrać te które najlepiej nam odpowiadają i przeprowadzić proces na całym zbiorze.
W naszym przypadku wygenerujemy normalne z domyślnymi ustawieniami. Nasz zbiór wygląda teraz tak:
Co się stało? Nic szczególnego po prostu orientacja wektorów normalnych jest błędna względem źródła światła. Wektory normalne oświetlone z tyłu wyświetlają się na czarno. Poprawiamy to stosując inwersję normalnych. Wybieramy Edit -> Normals -> Invert.
Taki wynik jest poprawny. Używają narzędzia Tools -> Point picking i klikając na dowolny punkt naszego zbioru możemy odczytać wyliczone dla niego wartości wektora normalnego.
Generowanie wektorów normalnych w Cloud Compare jest łatwe. Wyliczone wartości wykorzystać możemy później do tworzenia siatek, analiz, czy też po prostu jako atrybut do eksportu.