Witaj na Forum! Zapraszamy do rejestracji lub zalogowania. Stwórz konto  


[OMSI 1 & 2]  Boundingbox - obwiednia

#1
(Ten post był ostatnio modyfikowany: 22.02.2015, 13:45 przez skawek.)

Tym razem bardzo krótkie wyjaśnienie kwestii dotyczącej obwiedni pojazdu (ang. "boundingbox").

Otóż obwiednia jest niezbędna do odpowiednich wyliczeń dla danych geometrycznych pojazdu, a przede wszystkim - symulacji kolizji. Tworzy ona niejako prostopadłościan wokół modelu, którego ściany stanowią "granice" wykrywania kolizji.

Deklarację obwiedni można znaleźć pod słowem kluczowym:
Kod:
[boundingbox]
znajdującym się w pliku .bus lub .ovh pojazdu.

Aby odpowiednio ustawić obwiednię musimy znać przede wszystkim:
- szerokość pojazdu bez lusterek - podawaną w metrach
- długość pojazdu - także podawaną w metrach
- wysokość pojazdu - w tej samej jednostce jak wyżej

Znając powyższe, możemy zabierać się za wklepywanie odpowiednich wartości pod wcześniej wymienione słowo kluczowe. Powinny się tam znaleźć odpowiednio dane o:
- szerokości pojazdu
- długości pojazdu
- wysokości pojazdu
- przesunięciu punktu centralnego obwiedni od punktu środkowego pojazdu (niem. Nullpunkt, czyli punkt 0,0,0 w pliku 3D pojazdu) po osi X (a więc tej od szerokości) w metrach
- przesunięciu punktu centralnego obwiedni od punktu środkowego pojazdu po osi Y (od długości) w metrach
- przesunięciu punktu centralnego obwiedni od punktu środkowego pojazdu po osi Z (od wysokości) w metrach

Jeśli ktoś nadal nie rozumie trzech ostatnich myślników - wyjaśniam. Obwiednia jest tworzona wokół pewnego punktu, którą przetłumaczyłem sobie jako "punkt centralny obwiedni". Skoro operujemy w 3D, mamy trzy współrzędne tego punktu: X, Y i Z. Od niego "rozwijane" są odległości podawane wcześniej. Czyli ustawiając szerokość w pierwszym myślniku na 2 metry a w czwartym myślniku przesunięcie 0 - mamy taką sytuację:
   
Kolizja po tej osi zostanie wykryta, gdy jakiś obiekt znajdzie się w pasie między współrzędnymi -1 a 1 na osi X biorąc pod uwagę wartości z programu 3D.

Jeśli natomiast w czwartym myślniku podamy przesunięcie -0.5:
   
Tutaj kolizja po tej osi zostanie wykryta, gdy jakiś obiekt znajdzie się w pasie między współrzędnymi -1,5 a 0,5 na osi X biorąc pod uwagę wartości z programu 3D.

Adekwatna sytuacja ma się dla pozostałych osi.

Przy ustawieniu trzech ostatnich myślników na 0 - punkt centralny obwiedni = punktowi 0,0,0 w układzie współrzędnych w programie 3D.
O ile przestawianie punktu centralnego dla szerokości akurat większego sensu zazwyczaj nie ma, o tyle, żeby uwzględnić wystający przedni zderzak, zwykle wartość przesunięcia dla długości (piąty myślnik) nieco odbiega od wartości 0. Pewnikiem jest, że w 99% przypadków wymagane jest ustawienie odpowiedniego przesunięcia po osi Z, czyli dla wysokości, żeby obwiednia nie wtapiała się niepotrzebnie w ziemię oraz żeby niski autobus zmieścił się w np. tunelu bądź pod innymi obiektami.

Gotowy wpis obwiedni wygląda na przykład tak:
Kod:
[boundingbox]
2.5
11.46
3.76
0
-0.01
2.29

Niepoprawne ustawienie wartości może skutkować dziwnymi i śmiesznymi kolizjami podczas jazdy. Często winę za tzw "niewidzialne ściany" zrzuca się na twórców map, tymczasem nie wszystkie pojazdy mają odpowiednio ustawioną obwiednię i przez to wywoływane są nierealistyczne kolizje z elementami scenerii.

Poradnik został napisany wyłącznie dla Forum http://strefa-omsi.pl i nie może być rozpowszechniany we fragmentach lub w całości na innych stronach bez zezwolenia głównego Autora.
♪ "Nie pytaj mnie, wiem tyle co i ty" ♪

Zanim cokolwiek napiszesz, przeczytaj koniecznie REGULAMIN
Jeśli masz problem techniczny, zapoznaj się z ZASADAMI DZIAŁÓW TECHNICZNYCH
Jeśli chcesz podzielić się dodatkiem, zapoznaj się z REGULAMINEM DZIAŁU POBIERALNIA

 Podziękowania za post: sebag23(+1) , Buser(+1)
Odpowiedz




Użytkownicy przeglądający ten wątek:
2 gości