2010-03-02 10 views
5

Jestem w trakcie opracowywania silnika wizualizacji dla firmy, dla której pracuję. Tworzymy naklejki na zewnątrz samolotu. W związku z tym chcielibyśmy móc wizualizować nasze naklejki na samolotach, które obsługujemy.Fizycznie realistyczne naklejki

Problem jest następujący: w rzeczywistości, gdybym nakładał kalkomanię na zewnątrz samolotu, płacę za wybór pozycji kotwicy (powiedzmy pośrodku lewej strony kadłuba), a następnie ćwicz. stamtąd, pozwalając, aby kalkomania owinęła się wokół ciała samolotu zgodnie z jego przeznaczeniem. Teraz oczywiście mapujemy "obraz" 2d na trójwymiarową powierzchnię, więc będzie trochę zniekształceń, jak owija się wokół skóry samolotu, ale jest to oczekiwane i uwzględnione w oryginalnym projekcie.

Utknąłem jednak próbując odtworzyć to w 3d. Próbowałem następujących metod:

Mapowanie UV - rozpakowanie modelu tak skomplikowanego, jak to, co mamy, będzie niezwykle trudne i wydaje się nieco przesadzone. Strona samolotu zbliża się do płaskiej, więc wydaje się, że prostsza metoda "projekcji naklejonej" zadziałałaby lepiej

Mapowanie sześcianu - To zbliża się, naprawdę bardzo blisko, ponieważ kalkomania wisi na twarzach po stronie samolotu, w pewnym momencie twarze na górze modelu zaczną mapować na szczyt mapy kostki ... a następnie dostaniemy cięcie .....

Jakieś pomysły? Jaki jest najlepszy sposób, aby to osiągnąć, nie jestem ustawiony na OpenGL vs DirectX w tym momencie, więc odpowiedź z którejkolwiek z nich działałaby dobrze.

+0

Oto doskonały artykuł napisany o koncepcjach za tym: http://blog.wolfire.com/2009/06/how-to-project-decals/ – Ricket

Odpowiedz

5

Może brakuje mi czegoś oczywistego .. ale nie możesz po prostu użyć projective texture mapping?.

Oczywiście wadą jest, potencjalnie, nadmierne wypaczenie, ponieważ kąt między projektem a powierzchnią normalną zbliża się do 90 stopni.

Poza tym dlaczego UV unwrapping jest tak złym planem? Pod warunkiem, że teksturowanie modelu nie jest wypaczone, byłoby to całkiem proste rozwiązanie. Firma Microsoft udostępnia bardzo pomocne narzędzie do rozpakowywania plików here.

+1

Właściwie to dość dużo, co skończyło iść z. W Blenderze udało mi się to prototypować i działa świetnie. Prawda, że ​​na wierzchu modelu jest jakiś wypaczenia, ale mam zamiar zmatowić każdą stronę modelu osobno. Problem z rozpakowywaniem UV polega na tym, że bardzo trudno jest go dopasować dokładnie do naklejek "prawdziwego świata". Gdy umieścisz kalkomanię na modelu, nie bierzesz noża i nie ścinasz go, aby pasował do szwów UV ... lub przynajmniej nie powinieneś. W każdym razie wygląda na to, że powyższy przykład zadziała świetnie. –

1

Polecam używanie cylindrical texture map. Pod warunkiem, że nie próbujesz mapować przez krawędź (np. Na skrzydło itp.), Powinno to działać bardzo dobrze. Jeśli chodzi o kalkomanię na kadłubie, powinno to działać idealnie i być bardzo łatwe do wdrożenia.

-1

Potrzebuję co najmniej 15 znaków, a Ptex to tylko 4. Ale to wszystko, co musisz wiedzieć.

1

To, czego potrzebujesz, to współrzędne UV pasujące do odległości geodezyjnych. Odległość geodezyjna to w zasadzie odległość na powierzchni w przeciwieństwie do odległości euklidesowej, która jest najkrótszą odległością między dwoma punktami (przechodzenie przez model, jeśli musi). Globalne rozwiązanie do tworzenia mapy geodezyjnej jest dość skomplikowane. Jednak lokalnie może być łatwiej ...

Ponieważ nakładasz kalkomanię na powierzchnię, która jest bardziej lub mniej płaska lub co najmniej lekko zakrzywiona, bez naprawdę dużych dźwigów i wycięć, możesz zastosować proste rozwiązanie. Nie jestem pewien, czy to działa poprawnie, ale sam już pomyślałeś o rozwiązaniu.

Możesz po prostu wziąć wierzchołek siatki i A * lub maszerować od tego wierzchołka do całego pobliskiego wierzchołka, licząc odległość geodezyjną i obliczając w ten sposób UV. To nie będzie całkowicie dokładne, ale może być wystarczająco dobre w twoim przypadku.

Istnieją również bardziej niezawodne sposoby robienia tego, jak spłaszczanie za pomocą wielowymiarowego skalowania. A jeśli twoja topologia powierzchni jest mniej więcej podobna do płaszczyzny, zadziała bardzo dobrze.

http://en.wikipedia.org/wiki/Multidimensional_scaling

Powiązane problemy