Pracuję z XNA nad grą 3D i staram się stworzyć odpowiednie i przyjemne środowisko. Właściwie wykonałem samouczek, aby utworzyć teren z mapy wysokości. Aby go teksturować, po prostu nakładam na niego teksturę trawy i układam ją kilkakrotnie.
Ale chcę mieć naprawdę realistyczne teksturowanie, ale także generować je automatycznie (na przykład, jeśli chcę użyć szumu Perlina do wygenerowania terenu, a następnie jego tekstury).
Nauczyłem się już o wieloteksturowaniu, ładowaniu pliku mapy w różnych kolorach dla różnych tekstur, ale nie sądzę, że jest to naprawdę wydajne, na przykład w przypadku klifów lub bardzo stromych obszarów źle oklei teksturę, ponieważ jest to widok z Top. (Poza tym nie wiem, jak narysuję przy tym drogi lub ścieżki gruntu.)
Szukam wydajnego rozwiązania do realistycznego mapowania tekstury terenu generowanego proceduralnie.
Odpowiedzi:
Wydaje mi się, że nie zajmujesz się mapami mieszania ani rozpryskiwaniem tekstur (ponieważ jest to niezależne od mapowania UV). Ponieważ specjalnie poprosiłeś o zminimalizowanie zniekształceń spowodowanych mapowaniem, możesz zapoznać się z sekcją 1.5 tego artykułu o klejnotach GPU:
https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch01.html
Może to działać nawet na proceduralnie generowanym terenie. Koncepcja ta znana jest również jako „teksturowanie trójplanarne” .
PÓŹNA EDYCJA: Przetestowałem tę technikę w moim rendererze terenu, nie wykorzystując do obliczeń żadnych wstępnie obliczonych ultrafioletów. Wszystko, co musisz zrobić, to obliczyć 3 zestawy promieni UV dla 3 różnych płaszczyzn projekcji (XY, YZ i ZX). Można to osiągnąć za pomocą prostych fragmentów modułu cieniującego wierzchołków i fragmentów:
VShader:
FShader:
źródło
Możesz zdefiniować zestaw tekstur (trawa, brud, skała) i użyć ich. Powiedzmy, że używając tych trzech warstw (kamień na dole, brud na górze i trawa na szczycie), możesz zdefiniować trzy kanały alfa, aby określić, jak duża jest widoczność każdej tekstury. Zacznij od prostej mapy hałasu dla kanałów alfa i być może weź pod uwagę nachylenie terenu. Im bardziej nachylenie, tym więcej skały będzie świecić. Jest to technika zwana „rozpryskiwaniem tekstur”, o ile pamiętam. Oto kilka linków, które pomogą Ci zacząć. Zaawansowane teksturowanie (gamasutra)
TextureSplatting (charlesbloom, ten, w którym zaczynałem pracę z tym tematem)
Powinieneś być w stanie uzyskać dobre wyniki raczej szybki, bardzo satysfakcjonujący temat
źródło