Jaki byłby dobry filtr do tworzenia „deformatorów magnetycznych” z mapy głębokości?

10

W moim projekcie tworzę system do deformowania bardzo szczegółowej siatki (odzieży), aby „pasowała” do wypukłej siatki. Aby to zrobić, używam map głębokości przedmiotu i „kadłuba”, aby określić, w którym punkcie przestrzeni świata występuje odchylenie i zasięg.

Po prostu przekształcenie wszystkich zasłoniętych wierzchołków na głębokości określone przez „kadłub” jest dość skuteczne i ma dobrą wydajność, ale cierpi z powodu problemu nie zachowania cech siatki i wymaga obszernego wyrównywania, aby uniknąć fałszywych trafień.

Zamiast tego chciałbym wygenerować z mapy odchyleń głębokości zestaw prostych „odkształcaczy”, które „wypchną” * wszystkie wierzchołki zdeformowanej siatki na zewnątrz (w przestrzeni świata). W ten sposób wszystkie cechy siatki zostają zachowane i nie ma potrzeby posiadania złożonej heurystyki, aby wyrównać niewłaściwe wierzchołki.

Nie jestem jednak pewien, jak przejść do generowania tego zestawu deformatorów. Wyobrażam sobie coś w rodzaju algorytmu, który próbuje dopasować sferyczną powierzchnię do każdej łaty przylegających odchyleń w określonym zakresie, ale nie wiem od czego zacząć.

Czy ktoś może zasugerować odpowiedni filtr lub algorytm do generowania deformatorów? Lub inaczej mówiąc „kompresowanie” mapy głębokości?

(* Wciśnij, ponieważ dopasowuje się do wypukłego, „grubego” humanoida, więc transformacje prawdopodobnie będą „kuliste” z POV powierzchni.)

Edycja: Oto słusznie zasugerowany obraz / schemat, który ilustruje to, co próbuję osiągnąć.

Powinienem też powiedzieć, że odkąd to pytanie zostało opublikowane, pracowałem o wiele więcej nad tym problemem i chociaż nigdy nie rozwiązałem problemu z uzyskaniem deformatorów, ostatecznie zdecydowałem, że mapy głębokości do tego celu są nieodpowiednie:

  1. Jeśli zdeformowane oczek nie jest kompletna, to jest możliwe, aby uzyskać teksele w mapie, które oznaczało, aby być po drugiej stronie wypukłej mesh (ponieważ nie są one zasłonięte przez te bliżej kamery na właściwej stronie).
  2. Wydajność nie była tak wysoka, jak się spodziewałem, ponieważ na odkształcenie potrzebnych było 6 map.

Nie dlatego, że były one nierozwiązywalne, ale inne rozwiązanie, które obejmowało testowanie kolizji w jądrach działających na GPU, skutkowało wyższą jakością wyników i było znacznie prostsze, chociaż może nie być tak szybkie.

Nadal uważam, że ten problem pytań jest interesujący i byłbym zainteresowany wszelkimi odpowiedziami, ponieważ jestem pewien, że są sytuacje, w których byłby preferowany.

wprowadź opis zdjęcia tutaj

sebf
źródło
Czy możesz wstawić zdjęcie lub rysunek efektu, który chcesz osiągnąć? Łatwiej byłoby zrozumieć twój problem.
wip
Oddanie poniższego komentarza, obraz lub rysunek może bardzo pomóc. Istnieje wiele sposobów symulacji, w jaki sposób odzież otacza części ciała, a być może pomysł „odkształcacza” jest tylko jednym z kilku, które mogą się przydać.
sam hocevar
co jest złego w przenoszeniu całego kształtu?
Ali1S232,
Gajoo, Wyobraź sobie, że kształt owinięty wokół siatki, przesunięcie go w jednym kierunku spowodowałoby, że przecinałby on kształt tylko po drugiej stronie - choć w rzeczywistości robią to odkształcacze, tylko małe kawałki kształtu na raz.
sebf
SamHocevar, to pytanie dotyczyło tylko dopasowania - masz siatkę nieco mniejszą niż znak, który ma pasować, więc siatka jest odpowiednio dopasowywana. Implementacja pola głębi została wybrana ze względu na wydajność, odkształcacze zostały wybrane ze względu na to, że zbliża się możliwość zachowania cech.
sebf

Odpowiedzi:

2

Masz mapę głębokości, która, jak zakładam, jest po prostu odległością między wypukłą siatką A a neutralną zdeformowaną siatką B, i masz normalne powierzchnie siatki A.

To, czego brakuje, to wagi (lub grupy), w jaki sposób każdy wierzchołek siatki B wpływa na sąsiadów. Na przykład, kiedy środkowy wierzchołek zostanie przesunięty, powinien również przeciągnąć się wzdłuż sąsiednich wierzchołków o pewną wartość (procent), jeśli należą do tej samej grupy.

Jeśli masz grupę wierzchołków, które wpływają na siebie w 100%, wszystkie one zostaną wypchnięte jak najdalej z twojej mapy głębokości, tak jakby wszystkie były częścią nieugiętej konstrukcji stalowej, która porusza się jako jednostka, ustawiona na 50% tej struktury może zachowywać się bardziej jak grube arkusze gumy i 10% jak folia dopasowująca się do kształtu, ponieważ każdy wertyk ledwo wpływa na sąsiada (co masz teraz.

Oczywiście dzieje się trochę mieszania i łączenia wartości. Jak powiedział @Gajoo: „co jest złego w przenoszeniu całego kształtu?”

Patrick Hughes
źródło