Chương 2: KỸ THUẬT ĐIỀU KHIỂN TƯƠNG TÁC-CONTROL NHÂN VẬT
2.5. Kỹ thuật tạo điều khiển Inverse Kinematic cho nhân vật
2.5.2. Kỹ thuật điều khiên nhân vật tương tác sử dụng IK
Trong đồ họa máy tính, động học nghịch đảo là quá trình toán học tính toán các tham số khớp biến đổi cần thiết để đặt phần cuối của chuỗi động học, chẳng hạn như bộ điều khiển bộ xương của nhân vật chuyển động, ở một vị trí và hướng nhất định so với đầu chuỗi. Với các tham số chung, vị trí và hướng của đầu chuỗi, như bàn tay của nhân vật, thường có thể được tính toán trực tiếp bằng cách sử dụng nhiều ứng dụng của công thức lượng giác, một quá trình được gọi là động học chuyển tiếp. Tuy nhiên, hoạt động ngược lại, nói chung, khó khăn hơn nhiều.
Bộ xương của nhân vật chuyển động:
Chuyển động xương là một kỹ thuật trong hoạt hình máy tính, trong đó một nhân vật (hoặc đối tượng khớp nối khác) được thể hiện thành hai phần: biểu diễn bề mặt được sử dụng để vẽ nhân vật (được gọi là lưới hoặc da) và một tập
41
hợp các bộ phận liên kết với nhau theo thứ bậc (được gọi là xương và tạo thành bộ xương hoặc giàn khoan), một phần ứng ảo được sử dụng để tạo chuyển động ( pose và keyframe) lưới. Mặc dù kỹ thuật này thường được sử dụng để tạo hoạt hình cho con người và các nhân vật hữu cơ khác, nhưng nó chỉ phục vụ để làm cho quá trình chuyển động trực quan hơn và kỹ thuật tương tự có thể được sử dụng để kiểm soát sự biến dạng của bất kỳ vật thể nào như cửa, thìa, tòa nhà hoặc thiên hà. Khi đối tượng hoạt hình tổng quát hơn, ví dụ, một nhân vật hình người, tập hợp "xương" có thể không phân cấp hoặc liên kết với nhau, mà chỉ đơn giản là đại diện cho một mô tả cấp cao hơn về chuyển động của phần lưới mà nó đang ảnh hưởng.
Kỹ thuật này được giới thiệu năm 1988 bởi Nadia Magnenat Thalmann, Richard Laperrière và Daniel Thalmann. Kỹ thuật này được sử dụng trong hầu hết các hệ thống hoạt hình, nơi giao diện người dùng được đơn giản hóa cho phép các nhà làm phim hoạt hình điều khiển các thuật toán thường phức tạp và một lượng lớn hình học; Đáng chú ý nhất là thông qua động học nghịch đảo và các kỹ thuật "định hướng mục tiêu" khác. Tuy nhiên, về nguyên tắc, mục đích của kỹ thuật này không bao giờ là bắt chước giải phẫu thực sự hoặc các quá trình vật lý, mà chỉ để kiểm soát sự biến dạng của dữ liệu lưới [44,45].
Hình 2.38. Dáng bàn tay
Bones" (màu xanh lá cây) được sử dụng để tạo dáng một bàn tay. Trong thực tế, bản thân "xương" thường bị ẩn và thay thế bằng các vật thể thân thiện với người dùng hơn hoặc đơn giản là chuyển đổi vô hình. Trong ví dụ này từ dự án mã nguồn mở Blender, các "tay cầm" này (màu xanh lam) đã được thu nhỏ lại để uốn cong các ngón tay. Xương vẫn đang kiểm soát biến dạng, nhưng người làm phim hoạt hình chỉ nhìn thấy "tay cầm".
Động học nghịch đảo cũng được sử dụng để khôi phục chuyển động của một vật thể trên thế giới từ một số dữ liệu khác, chẳng hạn như phim về những chuyển động đó hoặc phim về thế giới được nhìn thấy bởi một máy ảnh tự tạo ra những chuyển động đó. Điều này xảy ra, ví dụ, trong đó các chuyển động được quay của một diễn viên con người sẽ được sao chép bởi một nhân vật hoạt hình.
42
Chụp chuyển động là quá trình ghi lại chuyển động của vật thể hoặc người. Nó được sử dụng trong quân sự, giải trí, thể thao, ứng dụng y tế và để xác nhận thị giác máy tính. Trong làm phim và phát triển trò chơi điện tử, nó đề cập đến việc ghi lại hành động của các diễn viên con người và sử dụng thông tin đó để tạo hoạt ảnh cho các mô hình nhân vật kỹ thuật số trong hoạt hình máy tính 2D hoặc 3D. Khi nó bao gồm khuôn mặt và ngón tay hoặc ghi lại những biểu cảm tinh tế, nó thường được gọi là chụp hiệu suất. Trong nhiều lĩnh vực, chụp chuyển động đôi khi được gọi là theo dõi chuyển động, nhưng trong làm phim và trò chơi, theo dõi chuyển động thường đề cập nhiều hơn đến chuyển động phù hợp.
Trong các phiên chụp chuyển động, chuyển động của một hoặc nhiều diễn viên được lấy mẫu nhiều lần mỗi giây. Trong khi các kỹ thuật ban đầu sử dụng hình ảnh từ nhiều máy ảnh để tính toán vị trí 3D,[9] thường thì mục đích của chụp chuyển động là chỉ ghi lại chuyển động của diễn viên chứ không phải hình thức trực quan của họ. Dữ liệu hoạt hình này được ánh xạ tới mô hình 3D để mô hình thực hiện các hành động tương tự như diễn viên. Quá trình này có thể tương phản với kỹ thuật quay vòng cũ hơn.
Hình 2.39. Ghi lại chuyển động của hai tay phải của nghệ sĩ piano chơi cùng một bản nhạc (chuyển động chậm, không có âm thanh).
Hình 2.40. Hai lần lặp lại của một chuỗi đi bộ được ghi lại bằng cách sử dụng chụp chuyển động
Chuyển động của máy ảnh cũng có thể được ghi lại chuyển động để một máy ảnh ảo trong cảnh sẽ xoay, nghiêng hoặc dolly xung quanh sân khấu do người điều khiển máy quay điều khiển trong khi diễn viên đang biểu diễn. Đồng
43
thời, hệ thống chụp chuyển động có thể ghi lại máy ảnh và đạo cụ cũng như diễn xuất của diễn viên. Điều này cho phép các nhân vật, hình ảnh và bộ do máy tính tạo ra có cùng góc nhìn với hình ảnh video từ máy ảnh. Một máy tính xử lý dữ liệu và hiển thị các chuyển động của diễn viên, cung cấp các vị trí máy ảnh mong muốn về các đối tượng trong bộ. Thu thập hồi tố dữ liệu chuyển động của camera từ cảnh quay đã chụp được gọi là di chuyển trận đấu hoặc theo dõi camera.
Chuyển động của một chuỗi động học, cho dù đó là robot hay nhân vật hoạt hình, được mô hình hóa bởi các phương trình động học của chuỗi. Các phương trình này xác định cấu hình của chuỗi theo các tham số chung của nó. Động học chuyển tiếp sử dụng các tham số chung để tính toán cấu hình của chuỗi và động học nghịch đảo đảo ngược tính toán này để xác định các tham số khớp đạt được cấu hình mong muốn.
Phân tích động học:
Hình 2.41. Mô hình nhân vật
Một mô hình bộ xương người như một chuỗi động học cho phép định vị bằng cách sử dụng động học nghịch đảo. Phân tích động học là một trong những bước đầu tiên trong thiết kế của hầu hết các robot công nghiệp. Phân tích động học cho phép nhà thiết kế có được thông tin về vị trí của từng thành phần trong hệ thống cơ khí. Thông tin này là cần thiết cho phân tích động tiếp theo cùng với các đường dẫn điều khiển.
Các phương trình động học có thể được sử dụng để xác định các phương trình vòng lặp của một hệ thống khớp nối phức tạp. Các phương trình vòng lặp này là các ràng buộc phi tuyến tính đối tham số cấu hình của hệ thống. Các tham số độc lập trong các phương trình này được gọi là mức độ tự do của hệ thống.
44
Động học nghịch đảo và hoạt hình 3D:
Động học nghịch đảo rất quan trọng đối với lập trình nhân vật 3D trong thế giới, như bàn chân hạ cánh vững chắc trên đỉnh địa hình. Một nhân vật chuyển động được mô phỏng với một bộ xương gồm các phân đoạn cứng nhắc được kết nối với các khớp, được gọi là chuỗi động học. Các phương trình động học của hình xác định mối quan hệ giữa các góc khớp của hình và tư thế hoặc cấu hình của nó. Bài toán hoạt hình động học phía trước sử dụng các phương trình động học để xác định tư thế cho các góc khớp. Bài toán động học nghịch đảo tính toán các góc khớp cho một tư thế mong muốn của hình.
Các nhà thiết kế mô hình nhân vật dựa trên máy tính thường dễ dàng xác định cấu hình không gian của một cụm hoặc hình bằng các bộ phận chuyển động, hoặc cánh tay và chân, thay vì thao tác trực tiếp các góc khớp. Do đó, động học nghịch đảo được sử dụng trong các hệ thống thiết kế hỗ trợ máy tính để tạo hoạt ảnh cho các cụm lắp ráp dựa trên máy tính để định vị các hình và nhân vật.
Việc lắp ráp được mô hình hóa như các liên kết cứng nhắc được kết nối bởi các khớp được xác định, hoặc các ràng buộc hình học. Chuyển động của một phần tử đòi hỏi phải tính toán các góc khớp cho các phần tử khác để duy trì các ràng buộc khớp. Động học nghịch đảo cho phép một nhân vật di chuyển bàn tay của mô hình người 3D đến vị trí và hướng mong muốn và có một thuật toán chọn các góc thích hợp của khớp cổ tay, khuỷu tay và vai. Thực hiện thành công hoạt hình máy tính thường cũng đòi hỏi hình di chuyển trong giới hạn nhân hóa hợp lý.
Các giải pháp phân tích cho động học nghịch đảo:
Bài toán động học nghịch đảo được sử dụng cho thực hiện mô phỏng di chuyển nhân vật chuyển động trong không gian 3D (với 3 bậc tự do vị trí và 3 bậc tự do quay). Nếu bậc tự do của nhân vật vượt quá bậc tự do của bộ phận tác động cuối, chẳng hạn nhân vật có 7 khớp quay, thì tồn tại vô số nghiệm cho bài toán IK và không tồn tại nghiệm giải tích. Có thể sửa một khớp và giải phân tích cho các khớp khác, nhưng có lẽ một giải pháp tốt hơn được đưa ra bằng các phương pháp số (phần tiếp theo), thay vào đó có thể tối ưu hóa một giải pháp với các tùy chọn bổ sung.
Một giải pháp giải tích cho một vấn đề động học ngược là một biểu thức dạng đóng lấy vị trí của bộ phận tác động cuối làm đầu vào và cho các vị trí khớp làm đầu ra, 𝑞 = 𝑓(𝑥). Các bộ giải động học nghịch đảo phân tích có thể nhanh hơn đáng kể so với các bộ giải số và cung cấp nhiều hơn một nghiệm, nhưng chỉ có một số nghiệm hữu hạn, đối với một tư thế tác nhân cuối nhất định.
45
Nhiều sản phẩm phần mềm khác nhau có thể giải quyết những vấn đề này một cách nhanh chóng và hiệu quả bằng cách sử dụng các thuật toán khác nhau. Một vấn đề với các bộ giải này là chúng không nhất thiết phải đưa ra các giải pháp cục bộ giữa hai cấu hình liền kề, điều này có thể gây ra sự mất ổn định nếu cần có các giải pháp lặp cho động học nghịch đảo, chẳng hạn như nếu IK được giải quyết bên trong một vòng điều khiển tốc độ cao.
Các giải pháp số cho các vấn đề IK:
Có nhiều phương pháp mô hình hóa và giải các bài toán động học ngược. Phương pháp linh hoạt nhất trong số các phương pháp này thường dựa vào tối ưu hóa lặp để tìm ra giải pháp gần đúng, do khó đảo ngược phương trình động học thuận và khả năng có không gian nghiệm trống. Ý tưởng cốt lõi đằng sau một số phương pháp này là mô hình hóa phương trình động học thuận bằng cách sử dụng khai triển chuỗi Taylor, phương pháp này có thể đơn giản hơn để đảo ngược và giải quyết so với hệ thống ban đầu.
Kỹ thuật nghịch đảo Jacobian:
Kỹ thuật nghịch đảo Jacobian là một cách đơn giản nhưng hiệu quả để thực hiện động học nghịch đảo. Các biến này có thể là các góc, độ dài hoặc các giá trị thực tùy ý khác. Nếu hệ thống IK tồn tại trong không gian 3D, chức năng vị trí có thể được xem như một ánh xạ. P(x) ∶ ℝ → ℝ Cho phép 𝑝 = 𝑝(𝑥 ) đưa ra vị trí ban đầu của hệ thống, và
𝑝 = 𝑝(𝑥 + ∆𝑥)
là vị trí mục tiêu của hệ thống. Kỹ thuật nghịch đảo Jacobian lặp đi lặp lại tính toán ước tính của ∆𝑥 giảm thiểu lỗi được đưa ra bởi.
‖𝑝(𝑥 + ∆𝑥 ) − 𝑝 ‖.
Cho nhỏ ∆𝑥 -vectơ, việc mở rộng chuỗi của hàm vị trí mang lại 𝑝(𝑥 ) ≈ 𝑝(𝑥 ) + 𝐽 (𝑥 )∆𝑥,
Ở đâu 𝐽 (𝑥 ) là ma trận Jacobian (3 × m) của hàm vị trí tại. 𝑥
Lưu ý rằng mục nhập thứ (i, k) của ma trận Jacobian có thể được xấp xỉ bằng số:
𝜕𝑝
𝜕𝑥 ≈𝑝 𝑥 , + ℎ − 𝑝 (𝑥 ) ℎ
46
Ở đâu 𝑝 (𝑥)đưa ra thành phần thứ i của hàm vị trí, 𝑥 , + ℎ chỉ đơn giản là 𝑥 với một đồng bằng nhỏ được thêm vào thành phần thứ k của nó và ℎ là một giá trị dương nhỏ hợp lý.
Lấy nghịch đảo giả Moore–Penrose của Jacobian (có thể tính toán được bằng cách sử dụng phân tách giá trị đơn lẻ ) và sắp xếp lại các số hạng dẫn đến
∆𝑥 ≈ 𝐽 (𝑥 )∆𝑝,
Ở đâu. ∆𝑝 = 𝑝(𝑥 + ∆𝑥) − 𝑝(𝑥 ).
Áp dụng phương pháp Jacobian nghịch đảo một lần sẽ dẫn đến ước tính rất sơ bộ về giá trị mong muốn ∆𝑥 - vectơ. Một tìm kiếm dòng nên được sử dụng để mở rộng quy mô này ∆𝑥 đến một giá trị chấp nhận được. ước tính cho ∆𝑥 có thể được cải thiện thông qua thuật toán sau (được gọi là phương pháp Newton–
Raphson ):
∆𝑥 = 𝐽 (𝑥 )∆𝑝
Một khi một số ∆𝑥 -vector đã khiến lỗi giảm xuống gần bằng 0, thuật toán sẽ chấm dứt. Các phương pháp hiện có dựa trên ma trận Hessian của hệ thống đã được báo cáo để hội tụ mong muốn ∆𝑥 Tuy nhiên, các giá trị sử dụng ít lần lặp hơn, trong một số trường hợp, nhiều tài nguyên tính toán hơn.