2013-06-15 32 views
5

Tôi đã triển khai Trình tải MD5 với phần mềm skinning. Bind đặt ra trong md5 là cuối cùng, vị trí tuyệt đối và luân chuyển, bạn chỉ cần làm tính toán cho trọng lượng mà là phụ thuộc doanh.OpenGL: Hoạt hình của xương, Tại sao tôi cần đảo ngược khi sử dụng GPU khi làm việc với GPU?

Tôi đã cố gắng triển khai skinning GPU nhưng tôi bị kẹt tại một điểm. Vì các tọa độ này là cuối cùng, tại sao tôi không thể chuyển đổi các vectơ và quaternions 3D của tôi thành ma trận và chỉ tải nó lên trình đổ bóng? Như tôi đã đọc ở đây: http://3dgep.com/?p=1356, tôi cần nhân bộ xương của mình với nghịch đảo của tư thế liên kết. Nhưng tôi không hiểu phần này bởi vì tôi luôn nghĩ rằng điều duy nhất tôi cần làm là tải lên các ma trận cuối cùng lên GPU và tính toán phần còn lại ở đó (tổng trọng lượng vv ..)

Bạn có thể giải thích cho tôi hành vi của tư thế ràng buộc nghịch đảo?

Trả lời

5

Thành thật mà nói, bài viết có một chút để hoàn thành công việc. Có vẻ như các ma trận bắt buộc ràng buộc được sử dụng để chuyển đổi các đỉnh tới các hệ tọa độ cục bộ của xương.

Điều này là cần thiết, bởi vì các biến đổi của xương là cục bộ (liên quan đến khớp nối của chúng). Vì vậy, để tạo hiệu ứng cho một đỉnh, bạn phải biến đổi nó thành hệ tọa độ cục bộ của xương, tính toán các biến đổi cục bộ của xương và biến đổi nó trở lại hệ thống thế giới.

+0

Trong thời gian đó, tôi nghĩ tôi hiểu ý tưởng đằng sau. Chúng tôi đã tải lên các đỉnh của tư thế ràng buộc, tất cả tôi cần phải chuyển đổi chúng và theo bộ xương hiện tại. Vì tất cả các đỉnh của tôi đã ở trong không gian thế giới, tôi cần chuyển đổi ma trận tuyệt đối của bộ xương mới thành không gian chung bởi vì tôi cần bù đắp, sau đó nhân kết quả với các đỉnh của tôi, cuối cùng nhân với ma trận modelview. – deniz

10

Như tác giả ban đầu của bài viết đó, tôi sẽ cố gắng giải thích những gì nhân với các ràng buộc nghịch pose làm:

Các "nghịch đảo bind pose" cơ bản "Undoes" bất kỳ sự thay đổi đó đã được áp dụng cho mô hình của bạn trong tư thế ràng buộc của nó. Hãy xem nó như thế này: Nếu bạn áp dụng ma trận nhận dạng cho mọi khớp trong mô hình thì bạn sẽ nhận được mô hình của bạn trong tư thế liên kết (bạn có thể thử điều này bằng cách gửi khung xương chứa đầy ma trận nhận dạng. những gì kết quả là các ràng buộc đặt ra, sau đó bạn đang làm điều đó đúng).

Nếu bạn áp dụng ma trận đặt ra ràng buộc (không đổi) cho mọi khớp trong mô hình thì bạn sẽ nhận được spaghetti vì bạn sẽ áp dụng đặt liên kết hai lần!

Vì vậy, để sửa mô hình spaghetti, bạn chỉ cần nhân các phép biến đổi kết quả kết quả với liên kết nghịch đảo đặt ra để "hoàn tác" phép biến đổi đã được áp dụng cho mô hình của bạn.

Tôi hy vọng điều này sẽ xóa nó một chút ...

+1

+1, hình dung mô hình của tôi là spaghetti khiến tôi cười. –