Jakie są metody reprezentowania torów kolejowych?


21

Jakiś czas temu zajrzałem do małego projektu, ale nie posunąłem się za daleko. Chciałbym stworzyć mały program, który pozwala użytkownikowi narysować trasę pociągu, a następnie pozwala „pociągowi” podążać wspomnianym torem na płaszczyźnie 2D. Chciałbym, aby utwór był dość swobodny i dawał gładką linię. Bawiłem się sześciennymi wypustkami i miałem przyzwoite wyniki, ale miałem mnóstwo problemów z pociągiem, aby podążał za splajnem. Miałem też wiele problemów z tworzeniem wielu torów i przełączaniem pociągu z jednego toru na drugi.

Czy ktoś ma porady, artykuły lub kod źródłowy, który może mi pomóc coś wymyślić? Dzięki!


3
Byłoby pomocne, gdybyś opisał, jakie masz problemy.
Rachel Blum,

1
Chciałbym zobaczyć demo twojej gry.
ashes999

Odpowiedzi:


10

Rysując ścieżki lub drogi, zawsze chcę zacząć od splajnów. Jednak kiedy ostatni raz walczyłem z splajnami (jak wspomina Rachel Blum , płynny ruch na splajnie jest trudny zarówno ze względu na parametryzację, jak i odległości), ktoś zasugerował mi, że wiele prawdziwych dróg używa okrągłych łuków zamiast splajnów. Stała krzywizny sprawia, że jest łatwy do obliczenia i odległości ruch ze stałą prędkością wzdłuż nich. Dodatkowo wyglądają dobrze.

Zacząłem grać na drogach na przemian z okrągłymi łukami i liniami prostymi. Jest podobny do podejścia Willa , ale łuki kołowe mają zmienny promień. Byłem całkiem zadowolony z tego podejścia, ale nie udało mi się nic z tym zrobić. Wypróbuj to demo (Flash): kontrolki po lewej stronie służą do wypustów, a kontrolki po prawej - do łuku kołowego (użyj suwaka, aby kontrolować długość, a uchwyt przeciągania, aby kontrolować kąt). Wykonaj bardzo ciasny zakręt, przeciągając koniec drogi, aby zobaczyć, o ile ładniej wygląda łuk kołowy.

Alternatywnie, jeśli chcesz grać siatkami (sugerowanymi przez Iaina ), spróbuj rysować od krawędzi do krawędzi zamiast od kwadratu do kwadratu. Oto demo (aplet Java).



7

Korzystanie z odpowiednich splajnów pustelnika może prowadzić do ciasnych zakrętów i wyglądać raczej jak brak pociągu:

za pomocą splajnów pustelniczych

Miałem o wiele bardziej przyjemne wyniki z traktowania ścieżki jako linii prostych łączących koła w stawach:

wprowadź opis zdjęcia tutaj

Sztuczka polega na obliczeniu stycznych wewnętrznych i zewnętrznych sąsiednich kręgów stawu i wypracowaniu uzwojenia każdego stawu, aby przejść po jego prawej stronie.

I, zgodnie z logiką układania torów, unikaj skrzyżowań ścieżek lub zamień je w skrzyżowania :)

Oto film przedstawiający to podejście: http://www.youtube.com/watch?v=PAVksn4btKU


6

Możesz spróbować pozwolić użytkownikowi na tworzenie utworów przy użyciu spiral Cornu . W sieci nie ma prawie żadnej literatury na ten temat, ponieważ splajny są de facto sposobem przedstawiania krzywych w oprogramowaniu. Niemniej jednak są to sposoby na załatanie rzeczywistych torów kolejowych. Raph Levien wykonał wiele pracy, popularyzując je .


2

Możesz wypróbować podejście oparte na siatce, w którym każdy kwadrat może łączyć się z jednym lub więcej innymi kwadratami. Możesz wtedy mieć kawałki, które pokrywają wiele kwadratów, aby stworzyć gładsze krzywe. Zasadniczo modułowy, jak zestaw pociągów.


1
Próbowałem czegoś podobnego do podejścia opartego na siatce. Zasadniczo stworzyłem utwory, aby można je było klikać razem, aby dać nieco więcej swobody niż proste siatki. Myślę, że bardzo podobna koncepcja. Działało dobrze, ale rysowanie ścieżek przez wybranie odpowiedniego kawałka za każdym razem było do bani.
hokiecsgrad

2

Próbowałem różnych technik wdrażania torów kolejowych i odkryłem, że odcinki kół i linii prostych dają najlepszy efekt i najłatwiejszą matematykę do prowadzenia pociągu.

Niestety sprawiło to, że układanie torów było dość skomplikowane i niezbyt intuicyjne, ponieważ niewielkie ruchy punktów kontrolnych spowodują, że trasa zmieni się w zupełnie innym kierunku.

Matematyka decydowania o sposobie układania toru staje się dość trudna, podobnie jak dodawanie kolejnych punktów kontrolnych.

Mam krótkie demo na http://www.dailymotion.com/video/xgl2kp_openrailz-tech-demo-3_videogames .


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.