Symulator/MaSzyna/Obiekty proceduralne

Z Rainsted
Skocz do: nawigacji, wyszukiwania

Jeśli sceneria nie ma obiektów proceduralnych, to wszystko jest wymodelowane w postaci trójkątów o wierzchołkach określonych wprost. Tak zdefiniowane trójkąty zajmują dużo miejsca, a dokonywanie zmian w scenerii jest uciążliwe, gdyż modyfikacja choćby jednego trójkąta pociąga zmianę wszystkich związanych z nim trójkątów (np. sąsiednich).

Aby uprościć tworzenie scenerii i umożliwić łatwiejszą jej modyfikację, używa się obiektów proceduralnych. Obiekt proceduralny nie jest wstawiony jako siatka trójkątów w konkretnym miejscu, ale jako struktura wyższego poziomu, na podstawie której następnie tworzona jest konkretna siatka trójkątów.

Include

Podstawowym narzędziem modeli proceduralnych jest instrukcja include, która umożliwia podstawienie określonych wartości pod zdefiniowane parametry, umieszczone w innym pliku (INC).

W ten sposób np. tworzone są trójkąty poprzeczki bramki sieci trakcyjnej. Odpowiedni plik INC zawiera szablon tych trójkątów, a parametry określają współrzędne XYZ jednego końca, kąt obrotu oraz długość tej poprzeczki. Dzięki temu jeden szablon może budować bramki o różnych rozmiarach, umieszczone w różnych miejscach scenerii.

Oczywiście ma to zastosowanie jedynie przy użyciu plików tekstowych, których wadą jest dłuższy czas wczytywania, a także możliwość występowania błędów składni.

Modele

Kolejnym rodzajem obiektów proceduralnych są modele o stałych siatkach, ale z możliwością ich ustawienia w różnych miejscach scenerii. Każdy z egzemplarzy używa tej samej siatki, ale może mieć inną teksturę i być animowany niezależnie od pozostałych.

Wadą modeli jest mniej efektywne wyświetlanie, niż dla pojedynczej siatki, jaką można by uzyskać po połączeniu ich. Najczęściej modele używa się w połączeniu z include, dzięki czemu plik INC może zdefiniować dodatkowe własności, jak np. zasady dynamicznej zmiany świateł na semaforze.

Tory, drogi, rzeki

Są to obiekty podłużne, których kształt i położenie określa się wyłącznie za pomocą parametrów. Potrzebne siatki trójkątów są tworzone dynamicznie na podstawie parametrów i przechowywane w pamięci (karcie graficznej) tak długo, jak są potrzebne. Gdy przestają być potrzebne, mogą zostać usunięte, zwalniając w ten sposób zasoby.

Przekrój poprzeczny obiektów podłużnych jest ściśle określony i nie można na niego wpływać (póki co). Maksymalna długość obiektu jest ograniczona do 500m ze względów praktycznych (wyliczanie zasięgu widoczności). Dodatkowo parametrycznie podane obiekty są jednocześnie używane jako trajektorie ruchu pojazdów.

Przykładowo, droga będąca odcinkiem prostym i nie mająca pobocza, będzie rysowana jako dwa trójkąty. Jeśli dodamy pobocze albo chodnik, dojdzie dodatkowe 8 trójkątów. Z kolei jeśli odcinek będzie łukiem (krzywą Beziera), to zostanie podzielony na segmenty długości 5m (a nawet mniejsze, jeśli promień łuku będzie mniejszy od 250m).

Twórca scenerii w ogóle nie musi się tym przejmować, jak łuk zostanie przekształcony na siatkę trójkątów. A nawet można uzależnić dokładność tworzonej siatki (długość segmentu) od wydajności sprzętu, w ogóle bez ingerencji autora scenerii. Dzięki temu na bardziej wydajnym sprzęcie sceneria będzie wyglądała lepiej, gdyż będzie miała więcej trójkątów, a na słabszym będzie można ilość trójkątów ograniczyć.

Sieć trakcyjna

Podaje się współrzędne końców drutów pojedynczego przęsła oraz pewne wytyczne do ich rysowania. Symulator sam tworzy odpowiednie linie. Dodatkowo obiekty te są używane do ustalania pozycji odbieraków prądu i mogą być używane do ustalania napięcia zasilającego.

Dla uzyskania lepszego efektu teoretycznie możliwe jest również tworzenie dla drutów siatek trójkątów. Można to zrobić na poziomie Symulatora, bez potrzeby modyfikowania scenerii.