Thứ tự đúng để nhân các ma trận tỷ lệ, xoay và dịch cho một ma trận thế giới phù hợp là gì?


62

Giả sử DirectX là nền tảng, nếu điều đó quan trọng. (Khá chắc chắn là không)

Giả sử tôi có một ma trận tỷ lệ, xoay và dịch phù hợp, tôi sẽ nhân chúng theo thứ tự nào để tạo ra một ma trận thế giới phù hợp và tại sao?

Theo "thích hợp", ý tôi là "Tôi có thể ném chúng thẳng vào DirectX và lấy khung 3D được sử dụng phổ biến nhất".


6
Dưới đây là giải thích về "xoay rồi dịch" (quay) so với "dịch rồi xoay" (quay quanh)
bobobobo

liên kết là tốt, nhưng với một lỗi nhỏ. nó nên có hiệu lực lăn và không quay, vì sử dụng quả cầu có xu hướng di chuyển ra khỏi vị trí của nó (còn lại trên trục) bằng cách dịch.
đăng

Câu trả lời:


77

Thông thường nó là quy mô, sau đó luân chuyển và dịch cuối cùng. Với ký hiệu ma trận (nghĩa là T cho ma trận dịch, R cho ma trận xoay và S cho ma trận tỷ lệ) sẽ là:

T * R * S

Tuy nhiên, nếu bạn muốn xoay một đối tượng xung quanh một điểm nhất định, thì đó là tỷ lệ, dịch điểm, xoay và dịch cuối cùng đối tượng.

Tại sao: Đầu tiên bạn muốn chia tỷ lệ đối tượng để các bản dịch hoạt động chính xác. Sau đó, bạn xoay các trục để quá trình dịch diễn ra trên các trục được điều chỉnh. Cuối cùng, bạn dịch đối tượng đến vị trí của nó.

Trong OpenGL, bạn có thể sử dụng gluLookAt để có được chuyển đổi camera đầy đủ trong một cuộc gọi. Có khả năng một cuộc gọi tương tự cho DirectX.


11
Và hãy nhớ, nếu bạn muốn chuyển đổi xung quanh trung tâm, thì trước tiên bạn phải dịch để bù trung tâm thành nguồn gốc, sau đó làm như user392858 đã nêu, sau đó dịch lại từ gốc với số tiền tương tự. Nói chung, điều này chỉ cần thiết trong 2D, trong đó bạn có một số sprite có phần trên cùng bên trái ở gốc.
Kỹ sư

Tuyệt quá. :) Bây giờ tôi chỉ cần tìm ra lý do tại sao mô hình của tôi bây giờ đảo ngược trong chế độ xem ngang và cần sản phẩm chấm trên ánh sáng định hướng đảo ngược trong chế độ xem dọc. Nó không được sử dụng để làm điều đó, sau đó tôi đã sửa một số phép toán ...
Narf the Mouse

Chỉ cần để nó được lưu ý, tôi ghét dấu hiệu tiêu cực đặt sai. Dù sao, cảm ơn, và bạn có thể xem xét câu hỏi này được thực hiện với. :)
Chuột chuột

Không có vấn đề, luôn luôn vui lòng giúp đỡ.
Raphael R.

2
@Matthias Theo như tôi biết, điều đó phụ thuộc vào cách bạn nhân với vectơ mà bạn muốn biến đổi. Nếu bạn nhân M * v thì có, câu trả lời đã đảo ngược thứ tự.
bialpio

-4

xoay và dịch tỷ lệ là trình tự để thực hiện thao tác


-5

Tôi tin rằng đó là Xoay vòng dịch thuật và quay số


2
Điều này không cung cấp bất kỳ lời giải thích nhiều hơn các câu trả lời hiện có.
DMGregory
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.