Ma trận xoay sai định hướng LibGDX


7

Tôi đang gặp vấn đề với xoay vòng ma trận trong libgdx. Tôi xoay nó bằng phương thức matrix.rotate (trục Vector3, góc nổi) nhưng xoay vòng xảy ra theo hướng mô hình và tôi cần nó xảy ra theo hướng thế giới.

Ví dụ:

trên phương thức tạo ():

matrix.rotate (Vector3 mới (0,0,1), 45);

nhập mô tả hình ảnh ở đây

Điều đó là ok, nhưng sau:

trên phương thức render ():

matrix.rotate (Vector3 mới (0,1,0), 1);

nhập mô tả hình ảnh ở đây

Tôi cần nó xoay theo trục thế giới.


Chuyển đổi trục quay từ tọa độ mô hình sang tọa độ thế giới.
Dashto

Câu trả lời:


0

Trước tiên, bạn cần chuyển đổi trục thế giới sang hệ tọa độ của mô hình. Bạn có thể làm điều này bằng cách áp dụng ma trận biến đổi hiện tại của mô hình cho vectơ trục thông qua phép nhân; như vậy

matrix.rotate(axis.mul(matrix), angle);

0

Bạn cần chuyển đổi vectơ xoay không gian thế giới sang mô hình không gian trước khi áp dụng xoay. Các vectơ được biến đổi với chuyển vị nghịch đảo của ma trận, tức là v '= transpose (nghịch đảo (M)) * v

Bởi vì các mô hình thường xác định mô hình-> ma trận thế giới, bạn cần đảo ngược điều này để có được thế giới-> ma trận mô hình. Vì vậy, bạn cần tính toán v '= transpose (nghịch đảo (nghịch đảo (model_to_world))) * v = transpose (model_to_view) * v trước khi áp dụng xoay vòng. Cũng lưu ý rằng thành phần w của vectơ phải là 0

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.