Tôi cần triển khai gizmos dịch, chia tỷ lệ và xoay và tôi gặp sự cố với gizmo xoay. Về cơ bản, tôi không biết cách dịch chuyển động của chuột để xác định hướng xoay đối tượng.
Bằng cách xoay gizmo (widget) Tôi có nghĩa là một cái gì đó như dưới đây:
Đối với gizmos dịch và chia tỷ lệ, được biểu diễn dưới dạng 3 trục, tôi thực hiện như sau: Tôi tạo một vectơ về sự khác biệt giữa vị trí chuột trước và hiện tại trong không gian màn hình. Sau đó nhân vectơ này với nghịch đảo của ma trận xem và ma trận chiếu, điều này cho tôi một vectơ chuyển động của chuột trong không gian thế giới. Sau đó, tôi lấy sản phẩm chấm của vectơ trong không gian thế giới với trục đã chọn. Điều này cho phép tôi xác định xem chuyển động của chuột có phù hợp với trục hoặc ra khỏi trục không.
Nhưng tôi không thể làm điều tương tự cho gizmo xoay. Gizmo xoay được biểu diễn dưới dạng 3 vòng tròn, mỗi vòng tròn biểu thị một vòng quay quanh một trục. Khi một vòng tròn được nhấp, tôi cần tìm một số cách dịch chuyển động chuột để xác định hướng xoay đối tượng xung quanh trục đã chọn. Tôi không biết làm thế nào để làm điều này. Xin vui lòng giúp đỡ.
Điều quan trọng cần lưu ý là tôi đang sử dụng tính năng chọn màu và không chiếu tia để xác định nơi gizmo được nhấp. Điều này có nghĩa là tôi không có điểm mà tia tới trúng gizmo trong không gian thế giới để bắt đầu. Tôi đề cập đến điều này bởi vì tôi đã xem các ví dụ sử dụng raycasting như libgizmo và tôi không nghĩ mình có thể làm điều tương tự.
Cảm ơn trước sự giúp đỡ nào.