Symulator/MaSzyna

Z Rainsted
Skocz do: nawigacji, wyszukiwania

Informacje ogólne i użytkowe - patrz eu07.pl.

Pierwsza wersja Symulatora powstała w 2001 roku, jako poniekąd wersja 3D Mechanika EN57. Patrząc na obecny kod, grafika 3D jest oparta w dużej mierze na tutorialach Ne-He. Poprzez lata rozwoju powstał autorski silnik graficzny, przystosowany do potrzeb symulacji.

Budowa scenerii

Patrz Scenery.doc.

Sterowanie pojazdami

Patrz RFC-commands.

Modyfikacje EU07.EXE

W grudniu 2010 zacząłem przeglądać kod źródłowy. W efekcie publikowane były kolejne wersje EXE. Prace są organizowane w etapy, z których każdy ma jakiś cel przewodni. Poniżej wymienione są bardziej znaczące zmiany, w celu zapoznania się ze szczegółową listą należy otworzyć stronę konkretnej wydanej wersji.

Etap pierwszy — efekty graficzne

Celem tego etapu prac było uruchomienie łatwych do uzyskania efektów graficznych. Powstała dzięki temu wersja 71.

Etap drugi — zwiększona wydajność

W tym etapie prac skupiłem się na poprawianiu błędów i zwiększeniu wydajności. Dodatkowym celem było przygotowanie do uruchomienia zmiany jasności światła w trakcie symulacji.

Wersja 113

  • Usunięta nadmiarowa animacja obiektów - błąd "od zawsze"
  • Dodana animacja translate - nigdy nie działała, chociaż zapowiedziana
  • Poprawiona obsługa kąta kamery - można ją skierować na pojazd
  • Poprawione kąty FreeSpotLight - był błędnie liczony kąt świecenia
  • Wyłączenie niewidocznych sektorów - zwiększenie wydajności
  • Optymalizacja wyświetlania modelu - zwiększenie wydajności
  • Trójkąty na poziomie kwadratu kilometrowego - zwiększenie wydajności

Wersja 120

  • Próg zadziałania smugi - lepsze uzależnienie od składowych RGB
  • Automatyczne zapalanie świateł w modelach - podobnie jak smuga, mogą się zapalać same
  • Naprawiony ghostview - możliwość uruchomienia scenerii bez pojazdu
  • Zmienne świecenie submodeli - świecenie uzależnione od jasności światła

Etap trzeci — usprawnienia

Dalsze poprawki błędów oraz usprawnienia. Wprowadzone automatyczne animacje modeli oraz wyświetlanie VBO. Wersja przygotowana do Paczki Całościowej 2010 (145).

  • Poprawione wyświetlanie drutów - rysowane jako ostatnie, żeby nie tworzyły obwódek
  • Skalowanie tekstur TGA - do możliwości karty graficznej
  • Wpływ rotate na modele - dodatkowe dwie osie obrotu
  • Obsługa zegarów dworcowych - automatyczne animacje zależne od czasu
  • Obracanie modeli do kamery - nowa animacja
  • Wyświetlanie z użyciem VBO - dotychczas było tylko Display Lists
  • Łączenie trójkątów w kwadracie kilometrowym - zwiększenie wydajności

Etap czwarty — nocne niebo

Kolejne poprawki i usprawnienia. Dzięki zastosowanym zmianom mogłem stworzyć model nocnego nieba, który wygląda dużo lepiej, niż nakrapiana przypadkowo tekstura. Wydana została wersja 162.

  • Antyaliasing (multisampling) - poprawa jakości obrazu
  • Animacja światła w ciągu doby - pozorny ruch Słońca
  • Animacja sky dla submodelu - można zrobić animowane nocne niebo z gwiazdami
  • Obiekt Type: Stars w T3D - czyli można zrobić model gwiazd w postaci świecących punktów

Etap piąty — szybsze wczytywanie

Ten etap prac miał na celu zwiększenie prędkości wczytywania (poprzez zastosowanie wersji binarnej modeli) oraz naprawienie błędów, które prowadziły do rozrywania składów (też "odwieczny" błąd).

Wersja 212

  • Mijanie pojazdów - dotychczas samochody puszczone naprzeciw siebie zawsze się zderzały
  • Zlikwidowany problem "NULL track" - zwykle wyjechanie poza istniejące tory psuło program
  • Poprawione sprzęgi wirtualne - czyli już się nie będą rozrywać składy
  • Zmienione pauzowanie i działanie programu w tle - można robić coś innego, czekając na podanie semafora
  • Modele wczytywane z plików binarnych
  • Sygnalizacja rozprucia rozjazdu
  • Sygnalizacja zajętości/zwolnienia grupy torów
  • Przygotowanie do użycia 4 wymiennych tekstur - na razie nie ma jak ich podać
  • Wstawianie odwrotne pojazdów - nie trzeba już tworzyć prawych i lewych modeli
  • Zatrzymywanie AI na W4 - czyli obsługa przystanków na trasie i rozkładu
  • Renderowanie chodników - kolejne ułatwienie w rysowaniu dróg

Wersja 231

  • Poprawione globalne eventlaunchery
  • Otwieranie drzwi EZT na przystankach
  • Przekazywanie komend do AI przez nazwę toru

Etap szósty — AI w C++

Celem tego etapu było przepisanie AI z Pascala do C++ i ogólne poprawienie zachowania AI. W wersji 291 wdało się zrealizować między innymi:

  • Możliwość przejścia do innego pojazdu
  • Doczepianie AI do składu
  • Ładowanie i rozładunek wagonów
  • Przyspieszenie startu scenerii

Na koniec roku 2011 powstał film demonstrujący aktualne możliwości Edytora scenerii realistycznych oraz jazdy AI zgodnie z rozkładem (na trasie Głogów - Wrocław): http://www.youtube.com/watch?v=Spynt9yFq6U

Etap siódmy — nowe możliwości

Prace przygotowawcze do Paczki Całościowej 2011 (wydana wersja 325) i nowe możliwości:

  • Usuwanie zbędnych pojazdów ze scenerii
  • Optymalizacja plików tekstur TGA
  • Zapis terenu w pliku binarnym (E3D)
  • Ustawianie parametrów symulatora z poziomu pliku scenerii
  • Poprawa wizualizacji przechyłki (oś obrotu na szynie)

Etap ósmy — tabelka ograniczeń dla AI

W ósmym etapie AI zostało rozbudowane o tabelkę prędkości obowiązujących na poszczególnych odcinkach. Poprawione też zostały błędy wykryte od poprzedniej wersji. Najpierw wydana została wersja 355. W kolejnej wersji 372 dopracowane zostało zatrzymywanie na pochyleniu oraz zmiana czoła, dodana też jest możliwość wysyłania komendy do AI z dowolnej komórki pamięci podłączonej do toru (tzn. z sygnalizatora). W wersji 390 uwzględnione zostały propozycje użytkowników, jak lusterka jako dodatkowe widoki ("nebulowe") i zapalanie światła w kabinie. Ostatecznie etap zakończył się na wersji 394, po czym wyszła jeszcze wersja wersja 408 z poprawionymi drobnymi błędami.

Etap dziewiąty — integracja

Etap dziewiąty objął:

  • integrację z SPKS, czyli lepszą obsługę hamulców (autorem SPKS jest youBy)
  • integrację z Megapackiem, czyli dodatkowe możliwości, zagubione po 2007 roku
  • reorganizację obsługi sieci trakcyjnej i animacji pantografów
  • uruchomienie dwustronnego zasilania sekcji sieci trakcyjnej

Najpierw do testów została udostępniona wstępna wersja 414, a niecały rok później znacznie ulepszona wersja 424. Po poprawieniu wielu błędów ostatecznie etap zakończył się na wersji 435.

Etap dziesiąty — ???

Jeszcze nie wiadomo, dokąd zaprowadzi. W planach jest uporządkowanie działania kabin poprzez tabelaryzację kontrolek i przełączników, co uelastyczni ich funkcjonalność i umożliwi programowanie za pomocą skryptów. Najbardziej przydatnym językiem do programowania kabin wydaje się być Ladder Diagram (w skrócie LD albo LAD, znany ze sterowników PLC), który ma postać zbliżoną do schematu obwodów elektrycznych.

Modele i obiekty

Oprócz zmian w EXE, przygotowałem też nowe standardy i modele.

Profil podsypki 0.6 0.9 0.9

Od początku był używany profil 0.2 0.5 1.1. Oznacza to, że podsypka miała wysokość 20cm, na zewnątrz szyn było pół metra poziomego, a pochylenie miało ponad metr szerokości. Przy rozstawie szyn 1.435m, górna powierzchnia podsypki miała 2.435m, podczas gdy same podkłady mają długość 2.6m, czyli powinny wystawać.

Po przeanalizowaniu dostępnych materiałów doszedłem do wniosku, że idealny profil podsypki powinien mieć wymiary 0.667 1.0 1.0. Ponieważ można uznać, że "książkowa" wersja w krótkim czasie się deformuje, przyjąłem mniejsze rozmiary 0.6 0.9 0.9. Pomiary w terenie potwierdziły, że taki profil lepiej odpowiada rzeczywistości.

Wstępnie przygotowałem jedną teksturę na wzór, a także prowizoryczne modele podsypek dla rozjazdów zwyczajnych 27.138m, 33.230m oraz rozjazdu krzyżowego.

Na podstawie profilu 0.6 0.9 0.9 można tworzyć profile pochodne, np. na 0.667 1.0 1.0 oraz 0.3 0.9 0.9 będzie pasować ta sama tekstura. Jedynie trzeba będzie wykonać osobne modele podsypek dla rozjazdów.

Model nocnego nieba

Model nocnego nieba został opracowany w oparciu o dostępne w Internecie współrzędne gwiazd oraz dopasowanie kolorów RGB do poszczególnych typów widmowych.

Mapowanie dróg

Wprowadzone przeze mnie mapowanie dróg sprawia, że drogi o zmieniającej się szerokości będą wyglądać lepiej. Mapowanie nawierzchni jest proporcjonalne do jej powierzchni, wcześniej tekstura była rozciągana w poprzek, czyli dla trapezowatych dróg zmieniała by się szerokość linii.

Po udanych eksperymentach z mapowaniem nawierzchni wprowadziłem proporcjonalne mapowanie chodników. Dzięki temu płytki chodnikowe nie są zdeformowane, a chodnik jest ułożony równolegle do jezdni i posiada wyraźny krawężnik.

Scenerie

Aktualnie za pomocą edytora Rainsted powstaje kilka scenerii realistycznych. Między innymi:

Oprócz nich, przerabiane są scenerie fikcyjne, w celu podniesienia ich realności i zgodności z przepisami.

Pulpity sterujące i kontrolki

Pulpit Mariusza

W 2010 roku wykonałem przeróbkę pulpitu Mariusza1970. Główną zmianą było uruchomienie nastawnika z wyczuwalnymi pozycjami. Zrealizowałem to za pomocą piasty rowerowej oraz mosiężnej tarczki z nacięciami. Odczyt ruchu nastawnika wykonywany jest układem optycznym z komputerowej myszki kulkowej, do tego został dostosowany program w mikrokontrolerze 2051. Ze względu na użycie kierownicy od samochodu Żuk (o znacznych rozmiarach), przyciski i przełączniki na pulpicie musiały zostać inaczej rozmieszczone niż oryginalnie.

Pulpit został zaprezentowany publicznie w Toruniu, przy okazji cyklicznych imprez Spotkania przy Toruńskiej Makiecie Modułowej, jak również w 2011 roku w Bydgoszczy (Noc Muzeów, Dni Techniki Kolejowej, 160-lecie kolei w Bydgoszczy).

Pulpit4.jpg

Planowane są dalsze przeróbki pulpitu: dodanie kolejnych kontrolek sterowanych przez symulator, zmiana rozkładu nacięć na tarczce (podwójny kąt dla pozycji bezoporowych EU07).

Czuwak i SHP

Po ostatnich zmianach w EU07.EXE (wersja 145) powstało kilka rozwiązań podłączenia lampek czuwaka i SHP, sterowanych kontrolkami klawiatury. Od strony sprzętowej nie brałem w tym udziału.

Filmy prezentujące działanie lampek CA/SHP:

PoKeys55

W przygotowaniu jest sterowanie symulacją z pulpitu za pomocą urządzenia PoKeys55 (USB). Od wersji 355 EU07.EXE możliwe jest wysterowanie 11 kontrolek przez symulator. W nowszych wersjach dodany jest odczyt wejść analogowych (jako stan zaworów hamulca) oraz sterowanie woltomierzami, amperomierzami i manometrami za pomocą wyjść PWM. Nie uczestniczę w części sprzętowej.