Jak mogę rozmieścić punkty na niejawnej powierzchni, aby skoncentrować je bardziej gęsto w obszarach o wyższej krzywiźnie?
Rozważyłem dodawanie punktów losowo i odrzucanie punktów niewymaganych na podstawie krzywizny, ale chciałbym wiedzieć, czy istnieje lepsze podejście zapewniające bardziej równomierny rozkład na obszarach o podobnej krzywiźnie, a jednocześnie zapewniające wyższą gęstość wymaganą w wysokich regiony krzywizny.
Patrzę konkretnie na użycie tych punktów do triangulacji powierzchni i nie chcę tworzyć więcej trójkątów niż potrzebuję dla stosunkowo płaskich części.
Zostanie to zastosowane do kształtów ze znaną pochodną, aby można było obliczyć krzywiznę w danym punkcie.
Nie musi to być podejście w czasie rzeczywistym.
algorithm
triangulation
trichopaks
źródło
źródło
Odpowiedzi:
Pomysł, który chciałbym zastosować, byłby następujący: robię przykład dla krzywej, ale powinien być prosty w przypadku aplikacji na powierzchnię.
Powiedzmy, że mamy krzywą jednakowo sparametryzowaną. Powiedzmy, że parametrem krzywej jest s . Twoim celem jest próbkowanie punktu odpowiadającego wartości s, tak aby krzywizna była wysoka.γ s s
Jeśli uzyskasz wartość krzywizny , będzie to również funkcja s . Więc jeśli znormalizujesz funkcję | c | , otrzymasz rozkład prawdopodobieństwa. Jeśli otrzymasz całkę takiego rozkładu, będziesz miał rozkład skumulowany. Nazwijmy tę funkcję skumulowaną C ( s ) .c s |c| C(s)
Problem próbkowania z rozkładu podanego przez funkcję skumulowaną jest dobrze znany, więc w zasadzie po pobraniu próbki zestawu wartości , taka wartość będzie związana z interesującymi miejscami.s0,s1,…,sn
Zastosowanie tej metody w przypadku powierzchni powinno być proste, ponieważ zasadniczo masz dwuwymiarową funkcję rozkładu skumulowanego, ale problem próbkowania jest dokładnie taki sam.
Aby podać trochę szczegółów, jest to w zasadzie próbkowanie z rozkładu, ponieważ funkcja skumulowana obejmuje dwa etapy:
weź losową wartość w przedziale , powiedzmy k[0,1] k
rozwiązać równanie .C(s)=k
To podejście jest dokładne, oczywiście jest drogie, ale jeśli lubisz takie podejście, możesz popracować nad optymalizacją.
źródło
Dobrym punktem wyjścia jest klasyczny papier Wykorzystanie cząstek do próbkowania i kontrolowania niejawnych powierzchni , opublikowany w SIGGRAPH 1994.
Prosta symulacja cząstek opisana w artykule Próbkowanie niejawnych obiektów za pomocą fizycznych układów cząstek ( Computers & Graphics , 1996) dla krzywych również działa na powierzchniach; przykłady zawiera dynamiczna tekstura niejawnych powierzchni .
Aby zapoznać się z najnowszym przykładem, zobacz Kształt i ton dla niejawnych powierzchni ( Komputery i grafika , 2011).
źródło
Poniższe naiwne podejście prawdopodobnie nie zapewni tak ładnie rozłożonych punktów, jak podane przez Lhf , ale powinno być znacznie łatwiejsze do wdrożenia i obliczeniowo szybsze:
źródło