Ogólnie Bullet ma taki sam układ współrzędnych globalnych (world space) jak OpenGL. Implementuję obsługę btRaycastVehicle i zauważyłem, że typ btRaycastVehicle ma następującą funkcję:
virtual void btRaycastVehicle::setCoordinateSystem(int rightIndex, int upIndex, int forwardIndex);
Jak ta funkcja działa ?
Domyślnie obiekt btRaycastVehicle ma następujące parametry:
- forward vector: [0, 1, 0]
- forward axis: 1
- right axis: 0
- up axis: 2
Czy to oznacza, że oś
y i jest zamieniona z osią
z w stosunku do globalnego układku współrzędnych Bulleta i OpenGL ?
Po zawołaniu funkcji:
raycastVehicle.setCoordinateSystem(0,1,2);
pojazd zwraca następujące parametry:
- forward vector: [0, 0, 1]
- forward axis: 2
- right axis: 0
- up axis: 1
co jest bardziej sensowne. Nie rozumiem dlaczego domyślne wartości układu współrzędnych pojazdu są inne i jak to interpretować.