O Spline słów kilka... | ||||||
Może to nie do końca będzie poradnik, ale opis poszczególnych wpisów powinien być przydatny
![]() Spline definiuje się tak, żeby punkt 0 był na środku żeby oś splina była osią drogi, czyli lewy chodnik będzie np. pomiędzy -10 a -5, a prawy pomiędzy 5 a 10. M&R określili pewne normy dla wysokości chodników i ulic: - ulica - 10 cm (0.100), - chodnik - 25 cm (0.250), - obniżony krawężnik przy przejściach dla pieszych - 15 cm (0.150), Height Profiles (nie wiem od czego dokładnie jest, być może AI jakoś wykorzystuje te wpisy). W tej sekcji chodzi o ogólne wypisanie jakie części splina są na jakiej wysokości, np. od -10 do -5 chodnik na wys. 25 cm, od -5 do 5 droga na wys 10cm i od 5 do 10 chodnik na 25 cm. Kod: [heightprofile] Textures - zawiera definicję tekstur, które zostaną wykorzystane na splinie, każda tekstura ma swój numer, liczenie zaczyna się od 0. Kod: [texture] Graphical Lanes - określa nałożenie wcześniej zdefiniowanych tekstur. Definiuje się tutaj wektory, które na podstawie wpisanych parametrów rozciągają teksturę na splinie. Patrząc na przekrój poprzeczny splina można zauważyć, że tekstura pojawi się po lewej stronie tego wektora, tzn. że jeśli zaczniemy definiowanie od mniejszej wartości (np. - 10 do -5) to tekstura wyświetli się na górze, jeżeli jednak definicja będzie od -5 do -10 to tekstura będzie widoczna od dołu. Kod: [profile] Paths - wpisy ścieżek dla AI. Rodzaje scieżek: 0 - dla samochodów 1 - dla pieszych 2 - kolejowa Kierunki poruszania się po ścieżce: 0 - w kierunku rozkładania splina 1 - przeciwny 2 - oba kierunki (stosowane np. dla ściezek ludzi) Kod: [path] Przykład gotowego splina (Seeburger Str.) Kod: File created with StreetCreator v1.000 PS. Jeśli to co napisałem odpowiada - proszę o przeniesienie do odpowiedniego działu ![]() / Poradnik został opracowany w odpowiedzi na pytanie: http://strefa-omsi.pl/Watek-wydzielono-S...822#pid822 /
Podrzucę jeszcze patent na dwustronny krawężnik.
Najczęściej krawężnik jest widoczny tylko od strony jezdni, ale w niektórych sytuacjach przydałaby się widoczność krawężnika także z drugiej strony. Można zrobić to tak: Kod: [profile] Pierwsza część profilu wyświetla tekstury od strony jezdni, natomiast odwrotność dwóch środkowych pozycji w drugim profilu umożliwia wyświetlenie krawężnika z drugiej strony. Analogicznie można to zastosować dla jezdni albo chodników. Wówczas ze splinów możemy stworzyć np. most/wiadukt.
Pomyślałem że szkoda aby moje wypociny się marnowały, więc przeklejam je tutaj, a że jestem ich autorem to wolno mi
![]() ------------------------------ W tym miejscu, chcę przedstawić poradnik, jak zbudować własny spline i omówię wszystkie sekcje jakie znajdują się w pliku .sli. UWAGA! Nie wzorujcie się na SDK, a konkretnie na pliku Inofficial_SDK_Omsi_0.1.02.pdf, bo chyba od tamtego czasu zmieniła się trochę struktura spline. Do dzieła. Najlepiej się omawia na przykładzie, a więc na tapetę idzie jeden z prostszych segmentów czyli str_2spur_11m_SeeburgerStr1.sli. Plik można edytować w notatniku. Struktura każdego spline składa się z 4 sekcji: Height Profiles, Textures, Graphical Lanes i Paths. Do poprawnego zrozumienia wartości używanych w pliku trzeba to zobrazować plikiem: ![]() Ważne: wszystkie wartości są wyrażone w metrach. Do tego trzeba sobie rozrysować przyszły spline na kartce, bo jak widać, jest on symetryczny!. Zatem koordynatą środka X jest zawsze 0, a resztę drogi rozkładamy na boki. W powyższym przypadku chodnik przypada w sekcjach -10.5 do -5.5 oraz 5.5 do 10.5. Droga natomiast to obszar pomiędzy punktami -5.5 do 5.5 (na osi X - jest to ważne). Wszystkie sekcje swoje wpisy opiera na kierunku od lewej do prawej. Nie sprawdzałem czy zaburzenie tej kolejności coś psuje (na pewno czytelność). Po takim wstępie omówię po kolei sekcje: Kod: --------------------------- Z angielskiego: profil wysokości. Jak widać są trzy wpisy w sekcji. Pierwsza odpowiedzialna jest za lewy chodnik. Wg. wzoru: Kod: [heightprofile] 0.250 - jest to wysokość chodnika (tak to zostało przyjęte) Drugi wpis w sekcji mówi nam, że od punktu -5.5 do 5.5 (czyli razem 11 metrów szerokości) będziemy mieli drogę na wysokości 0.1 (standardowa wysokość drogi w OMSI). Trzeci wpis to prawy chodnik, stworzony analogicznie do lewego. Zasada jest prosta: im więcej przewidujemy różnic wysokości w spline, tym więcej wpisów musi być w sekcji. Każdy odcinek musi być opisany w profilu wysokości!. Np. spline z chodnika, asfaltu, pasu zieleni, asfaltu i chodnika musi posiadać 5 wpisów w sekcji jeśli chcemy, aby chodnik i pas zieleni był wyżej niż asfalt. Sekcja textures: Kod: --------------------------- Każda z użytych tekstur musi być wpisana w tej sekcji. Tekstury są "numerowane", tzn. że w przyszłej sekcji definicje tekstur są liczone od góry i od 0, w tym przypadku wpis str_side1.bmp będzie miał numer 0 a str_asphdrk_1line.bmp będzie miał numer 1 i tak dalej (w przypadku większej ilości tekstur. Pliki wypisane w tej sekcji muszą znajdować się w katalogu "textures" (oczywiście powinny posiadać też swój plik .cfg). Sekcja następna (najtrudniejsza) to Graphical Lanes: Kod: --------------------------- Left sidewalk: <---- to jest ignorowany wpis w tej sekcji, służy za komentarz. [profile] 0 <---- odnosi się do numeru tekstury z sekcji "textures". Zgodnie z przykładem jest to tekstura str_side1.bmp, czyli chodnik. Teraz definiujemy położenie tekstury: Do łatwiejszego omówienia przyda się kolejny obrazek przykładowej tekstury: ![]() Kod: [profilepnt] Aby "zakończyć" kładzenie tekstury, należy zdefiniować jej drugi brzeg: Kod: [profilepnt] W teorii zakończyliśmy definicję chodnika. Ale chcielibyśmy, aby był ładny krawężnik, zamiast "powietrza pod chodnikiem". Zatem nic prostszego, definiujemy kolejną podsekcję wykorzystując różnicę wysokości: Kod: [profile] I już! Ponieważ jesteśmy w punkcie -5.5 zabieramy się za drogę, więc definiujemy kolejne sekcje: Kod: Lane: <--- pomijalny komentarz I mamy załatwioną drogę. Został nam chodnik, a ponieważ idziemy od lewej, jako pierwszy musimy ułożyć krawężnik: Kod: [profile] I tyle. O czym należy bezwględnie pamiętać? O właściwej strukturze, czyli najpierw definiujemy fragment teksturą ([profile]) a następnie dwoma punktami ([profilepnt]). I na koniec definiujemy patche, czyli ruch na naszym spline, bo na razie jest martwy: Kod: --------------------------- Definicja ścieżki nie jest trudna. Oto opis: Kod: [path] Patche należy tak modyfikować, aby nasze spline mogły się połączyć już z istniejącymi. A na deser, dowód że to działa. Mój pierwszy spline ![]() ![]()
| ||||||
Użytkownicy przeglądający ten wątek: |
1 gości |