Cách phổ biến của hoạt hình 'chuyển động' cho hoạt hình chu kỳ đi bộ


13

Tôi vừa mới đăng bài này lên diễn đàn của các nghệ sĩ Blender trước khi nhận ra rằng tôi có thể sẽ nhận được phản hồi tốt hơn từ khán giả cụ thể hơn về phát triển trò chơi, vì vậy xin lỗi vì đã đăng chéo! Đó là vì những lý do đúng đắn :)

Tôi là một lập trình viên đang cố gắng tạo hiệu ứng cho một nhân vật đang đi bộ cho một dự án trò chơi, sử dụng Ogre. Tôi đã thực hiện một chu trình đi bộ rất đơn giản trong Blender và xuất nó sang Ogre, và nó chơi rất tốt. Tốt thôi, ý tôi là nó hoạt động, nhưng trượt chân khủng khiếp. Điều này là do tôi chỉ hoạt hình đi bộ tại chỗ (tại điểm gốc) trong Blender, và tất nhiên tôi không biết "tốc độ đi bộ" tương ứng với cái gì, vì vậy khi tôi di chuyển nhân vật trong trò chơi thì chuyển động không ' t nhất thiết phải phù hợp với chuyển động của bàn chân trong hình ảnh động.

Vì vậy, câu hỏi của tôi là: cách tiếp cận bình thường cho loại điều này là gì? Trong công việc, chúng tôi sử dụng Maya và các nhà làm phim hoạt hình tạo ra một nút 'moveTrans' đặc biệt đại diện cho "vị trí" của nhân vật (hoặc nhà xuất khẩu tạo ra nó cho họ từ chuyển động của nút gốc), sau đó trò chơi có thể đọc được để biết nhân vật hoạt hình di chuyển nhanh như thế nào. Vì vậy, trong tệp Maya, nhân vật sẽ đi về phía trước trong một chu kỳ và nút thêm này sẽ đi theo họ bằng đôi chân của họ. Tôi chưa thấy bất cứ điều gì như thế này ở vùng đất nguồn mở và chắc chắn không có điều khoản nào cho điều đó trong kịch bản của nhà xuất khẩu Ogre. Bạn thường làm gì để làm điều này?


1
Đây là một cuộc thảo luận với một số giải thích tuyệt vời về khái niệm này: blog.wolfire.com/2011/08/ Kẻ
Ben Hymers

Câu trả lời:


10

Có hai cách để thực hiện: chuyển động gốc hoặc "trong mã".

Với chuyển động gốc, về cơ bản bạn có chính xác những gì bạn đang đề xuất với nút "moveTrans". Bạn sử dụng chuyển động của vật thể đó để xác định tốc độ phát lại các chu kỳ đi bộ nhanh như thế nào. Bạn có thể thực hiện tra cứu ngược các loại để tìm ra rằng nếu bạn muốn ở vị trí X, bạn cần phải ở vị trí nào. Nhưng lợi thế thực sự của chuyển động gốc là để có được hình ảnh động thực sự chân thực, bạn cần tính đến thực tế là chuyển động không phải là một đường dẫn tuyến tính thực sự. Người thật di chuyển với tốc độ thay đổi theo thời gian, hoặc có thể họ đang xáo trộn sang trái và phải một chút, hoặc bất cứ điều gì.

Mixamo đã làm một ví dụ tốt với điều khiển chuyển động gốc bằng Unity. Có một video về nó ở đây: http://vimeo.com/12052874

Bây giờ chuyển động gốc không có nhược điểm của nó. Nó có thể trở nên khó khăn với những việc như cố gắng làm cho hoạt hình "đi bộ" hoạt động trên cầu thang (lý tưởng nhất là bạn có một hoạt hình leo cầu thang / thang riêng biệt và thực hiện tất cả các chuyển động cho hoạt hình đó). Tôi cũng không thực sự chắc chắn làm thế nào IK thực sự chơi nó, nếu có.

Bây giờ thực hiện nó "trong mã" dễ dàng hơn nhiều từ phía lập trình của mọi thứ. Những gì tôi đề nghị làm trước tiên là đảm bảo tất cả các đơn vị của bạn đều nhất quán. Ví dụ: 1 đơn vị trong Maya và trò chơi của bạn là 1 mét. Sau đó, bạn có được các nghệ sĩ của bạn để làm sinh động một nhân vật đi bộ (hoàn thành với chuyển động về phía trước). Sử dụng điều đó để tìm ra tốc độ của hình ảnh động và xuất hình ảnh động mà không có vận tốc chuyển tiếp. Sử dụng để tìm ra tốc độ phát lại hoạt hình nhanh như thế nào. Vì vậy, nếu hoạt hình đi bộ ở tốc độ 1x là 5 m / s và bạn muốn người chơi chạy ở tốc độ 7 m / s, bạn chỉ cần phát lại ở tốc độ 7/5 = 1,4x. Nếu mô hình của bạn được tăng hoặc giảm tỷ lệ nhân tốc độ phát lại hoạt hình theo tỷ lệ nghịch của tỷ lệ. Một anh chàng cao nửa chiều sẽ phải đi bộ nhanh gấp đôi để di chuyển cùng tốc độ với một anh chàng có tỷ lệ 1x.


Tôi không thấy Root Motion Computer từ Mixamo, tôi cũng không nghe thấy nó được gọi như vậy, cảm ơn vì đã liên kết và giải thích! Vì vậy, về cơ bản, như tôi nghĩ, hoặc làm động nó một cách rõ ràng hoặc tự động tạo ra nó, và trong thời gian xây dựng hoặc trong thời gian chạy. Tôi đoán tôi sẽ phải tự viết mã này trong tập lệnh xuất khẩu. Một điều tôi bây giờ rất bối rối là chuyển động thay đổi trong suốt một chu kỳ - làm thế nào bạn có thể điều khiển nó từ trò chơi? "Di chuyển với tốc độ 5m / s" bây giờ có nghĩa là một thứ khác ... Và thay đổi hướng sẽ là cơn ác mộng đối với AI! Có lẽ tốt nhất là sử dụng chuyển động agerage?
Ben Hymers

Chạy ra khỏi nhân vật; Tôi sẽ đợi một chút trước khi đánh dấu điều này là chấp nhận để có thêm ý kiến. Cảm ơn câu trả lời của bạn!
Ben Hymers

Đối với chuyển động gốc, bạn không kiểm soát tốc độ của người chơi trực tiếp. Bạn chỉ có quyền kiểm soát việc phát lại tốc độ hoạt hình và sau đó bạn để hoạt ảnh được kiểm soát trực tiếp giá trị z chuyển tiếp. Ví dụ 5m / s tôi đã đưa ra là cho cách giải quyết trượt chân truyền thống, đó là cố gắng khớp tốc độ phát lại với tốc độ bạn di chuyển và giả sử tốc độ không đổi.
Tetrad

Là một lập trình viên trò chơi, điều đó nghe có vẻ như là một cơn ác mộng hoàn toàn :) Đặt các nhà hoạt hình kiểm soát một thứ quan trọng như tốc độ di chuyển của bất cứ thứ gì hoạt hình? Không, cám ơn! Tôi rất thích trích xuất thông tin để tôi có thể đảo ngược nó và đặt tốc độ phát hoạt hình dựa trên tốc độ di chuyển, thay vì ngược lại. Đó là lý do tại sao chuyển động phi tuyến làm tôi bối rối, và có lẽ đó là một lý do tốt để làm điều đó theo cách khác.
Ben Hymers

Gah, nguyền rủa Stack Exchange vì đã đưa ra nhận xét về việc cố gắng bắt đầu một dòng mới ... Tôi đã định nói, ngay cả khi bạn để hoạt hình điều khiển chuyển động, nó vẫn sẽ là một vấn đề đối với các nhân vật AI. Điều gì sẽ xảy ra nếu họ đang cố gắng đi đến một điểm nhưng hoạt hình chuyển động của họ chần chừ từ bên này sang bên kia (giả sử, đó là một hoạt hình loạng choạng say rượu)? Làm thế nào họ có thể biết hướng nào để đối mặt?
Ben Hymers
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.