Khái niệm cơ bản pha trộn hoạt hình


23

Nói rằng tôi có một khuôn khổ với các nhân vật có thể chạy và đi bộ và tất nhiên, đứng yên.

Tôi có đúng không khi nghĩ rằng pha trộn hoạt hình là quá trình chuyển đổi suôn sẻ giữa những thứ này bằng cách tạo ra hình ảnh động khi chạy?

Nếu vậy, lý thuyết cơ bản về cách thức hoạt động của nó là gì và tôi sẽ thực hiện nó như thế nào?


1
Tôi tin rằng đó chỉ là phép nội suy tuyến tính giữa mỗi xương từ khung cuối cùng của hoạt hình này sang khung đầu tiên của khung hình kia.
annonymously

Hoặc nội suy tuyến tính với smoothstep, nếu bạn muốn trung bình có trọng số (:
Gustavo Maciel

@ Gustavo-Gtoknu bạn có thể giải thích thêm về những gì bạn vừa nói không?
SirYakalot

bạn thực hiện phép nội suy tuyến tính theo alpha của cả hai khung được trộn, trên nghịch đảo của khung kia. cả về chức năng của thời gian. Bạn có thể làm mịn hoặc sử dụng mức trung bình có trọng số trong phép nội suy để có hiệu ứng khác.
Gustavo Maciel

Câu trả lời:


18

Pha trộn hoạt hình nhân vật là tổng quát hơn và có thể được sử dụng cho:

  • Tính toán chuyển tiếp mượt mà giữa 2 clip;
  • Tạo hình ảnh động hoàn toàn mới từ những cái hiện có (có khả năng nhiều hơn 2 cùng một lúc);
  • Đạt được các hành vi giống như IK;
  • v.v.

Ý tưởng cơ bản là đối với hai bộ xương giống hệt nhau với các clip hoạt hình khác nhau, với mỗi vòng quay chung, bạn tính toán giữa các giá trị. Clip hoạt hình được đại diện với xoay. Vì vậy, nội suy tuyến tính không phải là những gì bạn nên sử dụng nếu bạn muốn kết quả chính xác (ngay cả khi bạn đang sử dụng các góc Euler). Bạn có thể sử dụng slerp chẳng hạn nhưng tồn tại các giải pháp phức tạp hơn.

Đây là một vấn đề phức tạp với các giải pháp phức tạp. Về cơ bản, nếu bạn có hai clip hoạt hình A và B:

  • Nếu A và B hoàn toàn khác nhau (pha trộn nhảy và bơi), thì rất có thể bạn sẽ có kết quả lạ / hài hước;
  • Nếu A và B giống nhau (hai clip hoạt hình đi bộ), thì trước tiên, bạn phải đồng bộ hóa chúng để trộn chúng khi cả hai chân trái nằm trên mặt đất chẳng hạn.
  • v.v.

Nếu bạn quan tâm, tôi khuyên bạn nên bắt đầu bằng cách đọc bài viết này để bạn có thể hiểu rõ hơn những khó khăn là gì: http://graphics.cs.wisc.edu/Papers/2003/KG03/regCurves.pdf

Nó không phải là cập nhật nhất, nhưng nó rất dễ đọc.

Tôi hi vọng cái này giúp được. Trân trọng.


5

Trước hết, tôi giả sử bạn đang nói về hoạt hình xương (đặc biệt là đồ họa 3D) vì hoạt hình pha trộn khá nhiều chỉ áp dụng cho hoạt hình xương. Nếu bạn đang nói về hoạt hình dựa trên sprite 2D (bạn không chỉ định trong câu hỏi của mình) thì bạn có thể quên khá nhiều về pha trộn hoạt hình.

Với cách đó ...

Tôi có đúng không khi nghĩ rằng pha trộn hoạt hình là quá trình chuyển đổi suôn sẻ giữa những thứ này bằng cách tạo ra hình ảnh động khi chạy?

Đó là khá nhiều ý nghĩa của thuật ngữ này, vâng. Tuy nhiên, cụm từ "tạo hình ảnh động" là một chút sai lệch; điều đó mang đến cho tâm trí hoạt hình thủ tục và đó không chính xác là những gì bạn đang làm.

"Trộn hoạt hình" là khi bạn chuyển đổi giữa hai clip hoạt hình bằng cách sử dụng một chút cả hai hoạt ảnh với trọng số của một clip tăng lên trong khi trọng số của clip khác giảm xuống. Điều này hoạt động tốt nhất với hoạt hình khung xương, do đó độ xoay của mỗi khớp được đặt thành điểm giữa giữa hoạt hình của khớp đó trong hai clip hoạt hình khác nhau, với trọng số của mỗi clip thay đổi theo thời gian. Đó là, bạn tính toán vòng quay của từng khớp như:

rotCombined = weightA*rotA + weightB*rotB

Bây giờ, trong khi pha trộn hoạt hình hoạt động tốt nhất với hoạt hình khung xương, bạn cũng có thể thực hiện điều đó với hoạt hình đỉnh (ví dụ: MD2). Đây là một ghi chú lịch sử vì ít công cụ trò chơi hiện đại sử dụng hoạt hình đỉnh, nhưng bạn có thể đặt các vị trí đỉnh theo cùng một cách, như một trọng số giữa vị trí đỉnh trong hai hình động khác nhau. Điều này có thể dẫn đến một số phép nội suy trông kỳ lạ (ví dụ: các phần của lưới bị sập hoặc quay ra ngoài) nếu hai hình động quá khác nhau, trong khi hoạt hình khung xương đảm bảo rằng các phần khác nhau của lưới vẫn giữ nguyên.


Khi bạn nói rằng bạn không thể làm điều này với đồ họa 2D, bạn có nghĩa là hoạt hình dựa trên sprite? Tôi đang cố gắng tìm hiểu cách pha trộn một số hoạt hình 2D được tạo trong mecanim dựa trên vị trí và xoay của các bộ phận cơ thể riêng lẻ, nhưng tôi không hiểu tại sao điều đó không thể xảy ra chỉ vì chúng là 2D.
mallardz

Bởi vì không có cách nào để tạo khung hình mới trong hoạt hình sprite. Trong hoạt hình 3D, các hình ảnh riêng lẻ không được tạo trước thời hạn.
jhocking

Tôi hiểu rồi, nhưng hoạt hình 2D không nhất thiết phải dựa trên việc thay đổi toàn bộ sprite. Bạn có thể soạn một đối tượng ra khỏi nhiều họa tiết và tạo hiệu ứng xoay và vị trí của chúng, v.v. Tôi đã cố gắng tìm ra cách để làm điều này khi tôi đọc câu trả lời của bạn, và dòng đầu tiên của bạn làm tôi buồn :(! dễ dàng thực hiện trong Unity và tôi tưởng tượng không khó hơn pha trộn 3D cho những người tự chế tạo động cơ.
mallardz

1
ah vâng, ý tôi là hoạt hình dựa trên sprite, tôi sẽ chỉnh sửa câu trả lời của mình
jhocking
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.