Xin vui lòng, tha thứ cho tôi, nhưng tôi cần sự giúp đỡ và tôi đã bị mắc kẹt trong vài tuần nay, tôi không tiến bộ và ở mọi nơi tôi đến và tôi thấy một câu trả lời khác, mọi thứ tôi thử đều không hoạt động. Tôi đã có đủ lời khuyên và lời khuyên, bây giờ tôi thực sự chỉ cần ai đó cho tôi câu trả lời để tôi làm việc ngược từ đó vì tôi không thể hiểu điều này.
Điều khiến chủ đề này trở nên khó hiểu nhất là cách mọi người sử dụng một tập hợp các quy ước hoặc quy tắc khác nhau và câu trả lời của họ dựa trên các quy ước của riêng họ mà không xác định chúng là gì.
Vì vậy, đây là tập hợp các quy ước mà tôi đã hình thành dựa trên những gì có vẻ phổ biến và hợp lý nhất:
- Quy tắc bàn tay phải cho trục.
- Tích cực Y lên, Tích cực Z hướng về phía người xem, Tích cực X ở bên phải.
- Hàng ma trận chính, hoán vị khi gửi đến shader.
- Cao độ: xoay quanh trục X
- Yaw: xoay quanh trục y
- Cuộn: xoay quanh trục z
- Thứ tự xoay: Roll, Pitch, Yaw (điều này có đúng không? Ai đó có thể kiểm tra tôi về điều này không?)
- Các giá trị xoay dương, nhìn xuống từ đầu dương của một trục, dẫn đến xoay theo chiều kim đồng hồ.
- Hướng mặc định cho xoay 0 trên tất cả các trục là một vectơ chỉ xuống âm Y.
.. đưa ra những quy ước đó (bằng mọi cách có thể sửa cho tôi nếu chúng sai!), làm thế nào để thực hiện:
- Viết hàm LookAt? (lookAt (vị trí vectơ, tiêu điểm của vectơ, vectơ lên))
- Tính ma trận quay. (xoay (x, y, z))
Tôi đã cố gắng tự trả lời hai câu hỏi này ít nhất trong 3 tuần qua, tôi đã viết lại chức năng Ma trận Xoay vòng & Xoay vòng của mình ít nhất 30 lần, tôi đã thử nghiệm hàng tá phương pháp và đọc qua tài liệu tôi đã thấy Hàng trăm trang web và đọc nhiều câu hỏi đã trả lời, sao chép mã của người khác và cho đến nay tôi chưa làm gì, mọi thứ đều tạo ra kết quả sai. Một số trong đó đã tạo ra một số đầu ra kỳ quái vui nhộn thậm chí không gần với xoay chính xác.
Tôi đã làm việc về điều này mỗi đêm, ngoại trừ đêm qua vì tôi quá thất vọng với thất bại lặp đi lặp lại đến mức tôi phải dừng lại và nghỉ ngơi.
Xin vui lòng, chỉ cho tôi biết phương pháp chính xác là gì để tôi có thể làm việc ngược từ đó và tìm ra cách nó hoạt động, tôi chỉ không nhận được câu trả lời đúng và điều này làm tôi phát điên lên một chút!
Tôi đang viết bằng Java nhưng tôi sẽ lấy mã được viết bằng bất kỳ ngôn ngữ nào, hầu hết mã kết xuất 3D của tôi thực sự hoạt động khá tuyệt vời, đó chỉ là những phép toán mà tôi không thể hiểu được.
CẬP NHẬT: GIẢI QUYẾT
Cảm ơn sự giúp đỡ của bạn! Bây giờ tôi có một chức năng LookAt hoạt động mà tôi thực sự hiểu và tôi không thể hạnh phúc hơn (nếu ai đó muốn xem nó bằng mọi cách hãy hỏi).
Tôi đã thử lại trong việc tạo ma trận xoay dựa trên các biến pitch / yaw / roll và nó dường như thất bại, nhưng tôi đã quyết định bỏ qua việc cố gắng sử dụng các góc euler cho máy ảnh tự do vì nó có vẻ không phù hợp với thay vào đó, tôi sẽ tạo ra một lớp bậc bốn, có thể gặp may mắn hơn khi đi theo con đường đó, nếu không tôi sẽ sử dụng cao độ / ngáp làm tọa độ hình cầu và dựa vào hàm LookAt hoạt động mới để xoay.
Nếu bất cứ ai khác đang đối mặt với một vấn đề tương tự và muốn hỏi tôi câu hỏi, hãy thoải mái.
Ít nhất tôi không bị mắc kẹt nữa, cảm ơn vì sự giúp đỡ!