CHƯƠNG VI: HỆ THỐNG DIỄN HOẠT 6.1 Giới thiệu về hệ thống diễn hoạt
6.14. Câc vấn đề cơ bản trong diễn hoạt
Câc loại diễn hoạt
Có hai loại diễn hoạt chính củ câc đối tượng lă diễn hoạt khung xương vă diễn hoạt nội suy. Diễn hoạt khung xương tức lă câc sự chuyển động dựa trín cấu trúc khung xương vă thực hiện diễn hoạt dựa văl câc khung hình lăm khoâ. Diễn hoạt nội suy lă việc thực hiện diễn hoạt bằn phĩp nội suy giữa chuyển động ngay trước vă ngay sau nó. Trong ccs Game ngăy nay hầu hết để lưu câc mô hình bằng cấu trúc khung xương vă kế hợpcả hai loạidiễn hoạt để tạo ra một chuyển động đẹp mắt/
Vấn đề thời gian trong diễn hoạt
Câc Game thực hiện trong một hệ thống thời gian thực. Thời gian lă yếu tố quan trọng cần chú ý khi xđy dựng Game. Như ta biết trong một chương trình Game thực chất ta có một vòng lặp vô tận,tạimỗi vòng lặp ta thực hiện quâ trình hiển thị tương ứng với thời gian đó. Trong hệ thống diễn hoạt thì kết quả cuối cùng lă phải ó một chuyển động mượt mă vă không bị giật do đs phải đảm bảo đựoc số khung hình trong một giđy cao hay lă thời gian giữa câc vòng lặp chính phải ngắn.
Một điều quan trọng trong yếu tố thời gian lă ta phải lăm sao cho hệ thống diễn hoạt của ta hoạt động giống nhau trínnhững mây tính có tốc độ xử lý khâc nhau. Ví dụ trín một mây tốc độ 2ghz vă trín một mây tốc độ 500mhz thì trín mây 2ghz chuyển động sẽ mịn hơn trín mây 500mhz nhưng
gian như nhau. Để giải quyết t sẽ thực hiện bằng câch tính khung hình hiện tại bằng nội suy giữa câc khung hình trước vă sau nó.
Câc khung nhìn trong chuyển động
Mộtchuyển động của mô hình lă một dêy câc biến đổi củamô hình đó theo thời gian. Ta khônh thể lưu toăn bộ câc biến đổi bởi vỉ lăm như vậy sẽ rất lêng phí bộ nhớ mă thay văo đó ta lưu sự biến đổi bởi vì lăm như vậy sẽ rất lêng phí bộ nhớ mă thay văo đó ta lưu sự biến đổi của mô hình tại một số mốc năo đó.ví dụ như ta lưu sự biến đổi của đối tượng cứ sau văi mili giđy chẳng han. Câc khung hình chính năy có thể lưu câch nhau những khoảng thời giankhâcnhau hoặc đềunhau đều được. Dưới đđy lă một vídụ
vềchuyểnđộngcủa vật thể theo key frame với khoảng câch giữa câc key frame lă 40 mili giđy.
Như vđy để thực hiện diễn hoạt thì khi chương trình yíu cầu cập nhật thì dựa văo thờigian trôi qua truyền văo ta sẽ tính được frame năo cần hiển thị vă sẽ hiển thị key frame đó lín. Nhưng rõ răng chỉ dựa văo câc key frame để hiển thị hình ảnh sẽ không mượt mă do sự biến đôi giữa câc khung hình lă khâ lớn. Để khắc phục việcnăy ta cần kết hợp thím biến đổi nội suy văo.
Kết hợp biến đổi nội suy giữa câc khung nhìn:
Để thực hiện đựoc chuyển động nội suy giữa câc key frame ta phải xâc định được thời gian đê trải qua trong chuyển động. Cứ mỗi lần chương trình yíu cầu ta cập nhật vă truyền văo đối số lă thời gian đê trôi qua thì ta tính toân được thời điímtrong chuyển động vì ta có thời gian tổng cộng của
chuyển động vă tính được thời gian từ khi chuyển động. Tiếp đó têe xâc định được key frame ngay trước vă ngay sau nó. Giả sử ta có được t1 lă thời gian thực hiện key frame n vă t2 lă thời gian của key frame n+1. Ta tính được hằng số tỉ lệ: s=(t-t1)/(t2-t1) với t lă thời gian hiện thời. Nhờ hệ sốnăy ta dễ hăng nội suy ra biến đổ hiện tại dựa văo key frame n vă n+1:
Khung hình lúc t=khung hình lúc t1+s*(khung hình lúc t2-khung hình lúc t1)
Sự biến đổi như vậy có2 ưu điểm:
Chuyển động sẽ mượt mă, đẹp văthực hơn.
Chuyển động sẽ diễn ra giống nhau trín những mây có tốc độ CPU khâc nhau.