Biến đổi thứ tự nhân ma trận


21

Tôi đang gặp khó khăn khi cố gắng tìm ra thứ tự nhân chính xác cho một ma trận biến đổi cuối cùng. Tôi luôn luôn có được chuyển động lạ hoặc hình học bị bóp méo. Mô hình hiện tại của tôi được giải thích dưới đây:

Đối với một nút, thứ tự nhân của tôi là:

L = S * R * T

Ở đâu

L = ma trận biến đổi cục bộ

S = ma trận tỷ lệ cục bộ

R = ma trận xoay cục bộ

T = ma trận dịch cục bộ

Đối với chuyển đổi thế giới của một nút:

W = PW * L

Ở đâu

W = ma trận biến đổi thế giới

PW = ma trận biến đổi thế giới cha mẹ

L = ma trận biến đổi cục bộ được tính ở trên

Khi kết xuất, với mỗi nút tôi tính ma trận:

MV = Inv (C) * Tây Bắc

Ở đâu

MV = ma trận biến đổi khung nhìn mô hình cho một nút cụ thể

Inv (C) = ma trận biến đổi camera nghịch đảo

NW = ma trận biến đổi thế giới của nút được tính ở trên.

Cuối cùng, trong shader tôi có biến đổi rơi:

TVP = PRP * MV * VP

Ở đâu

TVP = vị trí đỉnh biến đổi cuối cùng

PRP = ma trận phối cảnh

MV = ma trận biến đổi thế giới của nút được tính ở trên

VP = vị trí đỉnh chưa được dịch.

Với mô hình hiện tại, các nút con có xoay cục bộ, xoay lạ khi chuyển đổi máy ảnh. Tôi đã sai ở đâu với thứ tự nhân?

Câu trả lời:


37

Bất kỳ sự kết hợp của thứ tự S*R*Tcho một ma trận biến đổi hợp lệ. Tuy nhiên, điều khá phổ biến là đầu tiên chia tỷ lệ đối tượng, sau đó xoay nó, sau đó dịch nó:

L = T * R * S

Nếu bạn không làm theo thứ tự đó, thì tỷ lệ không đồng đều sẽ bị ảnh hưởng bởi vòng quay trước đó, làm cho đối tượng của bạn trông bị lệch. Và vòng quay sẽ bị ảnh hưởng bởi bản dịch, làm cho vị trí cuối cùng của đối tượng của bạn rất khác so với giá trị của bản dịch sẽ khiến bạn mong đợi.


Bạn có thể giải thích điều này nhiều hơn một chút? Từ những gì tôi đã quen, việc xoay không thể bị ảnh hưởng bởi bản dịch vì đó là sự khác biệt về hướng giữa hai khung, không phụ thuộc vào vị trí. Thay vào đó, một bản dịch có thể bị ảnh hưởng bởi một vòng quay xảy ra trước nó, vì nó sẽ dịch trên trục xoay mới được xác định. Trong L = TRS, bản dịch xảy ra đầu tiên, do đó nó không bị ảnh hưởng bởi các vectơ mới được tạo bởi phép quay.
người dùng-2147482637

4
Sự nhầm lẫn xuất phát từ việc bạn đang nói về các phép biến đổi cục bộ (trong đó khung vẫn được liên kết với đối tượng), trong khi các phép biến đổi được mô tả ở đây xảy ra trong không gian thế giới (nơi chỉ có một khung tham chiếu cố định, thế giới). Về mặt khái niệm, cách bạn nhìn nhận mọi thứ là hợp lệ và nó tương đương với việc áp dụng các phép biến đổi theo thứ tự ngược lại.
sam hocevar
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.