Tổ chức dữliệu

Một phần của tài liệu Nghiên cứu và xây dựng thử nghiệm với 3d engine (Trang 81 - 82)

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.8.Tổ chức dữliệu

Vấn đề đầu tiín lă ta phải tổ chức dữ liệu cho khung xương lăm sao để ta có thể tâch rời câc phần của cơ thể ví dụ như phần thđn, phần đầu ra thănh câc phần độc lập nhau? Việc phđn tâch giúp ta có thể điều khiển từng thănh phần riíng biệt vă đặc hiệt ta có thể thay đổi hình dạng cho nhđn vật. Chúng ta có thể gắn câc đầu khâc nhau văo trong cùng một thđn hình để tạo ra câc nhđn vật khâc nhau. Vă lăm sao ta có thể gắn thím câc phần khâc văo trong cấu trúc khung xương? Ví dụ như khi nhđn vật cầm một khẩu súng thì lăm sao ta có thể gắn khẩu súng năy văo tay nhđn vật vă chuyển động của khẩu súng khớp với chuyển động của tay.

Để giải quyết được vấn đề năy ta sẽ cho câc nút trong cấu trúc cđy của khung xương đế từa từ một cấu trúc dữ liệu đặc biệt chỉ chứa câc dữ liệu biến đổi. Việc tổ chức dữ liệu năy tuowng tự như khâi niệm Scene Graph được dùng rất nhiều trong việc quản lý Game. Một nút biến đổi (transgorrm node) sẽ lưu câc thông tin sau:

• Tín

• Nút cha của nó

• Vị trí vă góc quay ban đầu.

• Vị trí vă góc quay trong mối quan hệ với nút cha.

• Vị trí, góc quay vă ma trận biến đổi so với thế giới ( vị trí vă góc quay thật sự trong cảnh 3D).

Việc biến đổi của câc khớp xương chính lă sự biến đổi của câc nút biến đổi, bđy giờ ta có thể tạo ra câc cấu trúc khung xương riíng cho phần thđn, phần đầu. Sau đó ta sẽ gắn đầu căo thđn bằng câch ta thực hiện viện gân nút đầu tiín của đầu lă nút con của đốt xương cổ của phần thđn.

Tương tự như vậy, nếu ta muốn cho nhđn vật cầm một cđy súng thì ta cũng tạo ra một cấu trúc khung xương cho cđy súng. Sau đó ta thực hiện việc thiết lập nút cha của cđy súng lă một khớp xương ở tay, bđy giờ biến đổi của cđy súng sẽ phụ thuộc văo biến đổi của khớp xương tay.

Rõ răng việc tổ chức sữ liệu như vậy giúp ta giải quyết được nhiều vấn đề vă giúp ra quản lý câc đối tưọng dễ dăng vă thống nhất. Một câch tổng quât, ta có thể tạo một vđy kế thừa kết nối tất cả câc đối tượng có cấu

trúc khung xương. Việc tìm kiếm, cập nhật vă hiển thị sẽ đều thực hiện trín cđy chung năy. Đđy cũng chính lă ý tuowngr vă câch thức thực hiện của một Scene Graph.

Vấn đề tiếp theo lă lăm sao ta có thể thực hiện việc cập nhật vă truy xuất câc khớp trong khung xương nhanh chón vă phù hợp với việc tổ chức dữ liệu trín tập tin md5

Dựa văo đặc điểm tập tin md5 lưu câc khớp trong một khung xương theo một trình tự tăng dần của câc khớp sương ta có thể có câch tổ chức dữ liệu tuơng ứng. Nếu ta tổ chức câc khớp trong khung xương lă câc cấu trúc trong đó có câc rcon trỏ chỉ đến câc nút con thì đđy lă câch tổ chức sât với khâi niệm của cấu trúc xương. Tuy nhiín việc tổ chức như vậy thì cứ mỗi lần cập nhật hoặc tìm kiếm một khớp xương theo tín hoặc theo chỉ số định danh ta cần phải duyệt cđy theo đệ quy. Do thao tâc tìm kiếm vă duyệt như vậy dùng với tầm suất rất lớn sẽ lăm cho chi phí tăng nhanh để khắc phục vấn đề năy ta đơn giản sẽ tổ chức câc khớp của khung xương thănh một mảng. Khi đó việc tìm kiếm một khớp xương theo chỉ số ta sẽ thực hiện truy xuất thẳng đến phần tử có chỉ số tương ưng trong mảng. Như vậy, với một cải tiến nhỏ ta đê giảm được đi rất nhiều chi phí trong việc tìm kiếm.

Một phần của tài liệu Nghiên cứu và xây dựng thử nghiệm với 3d engine (Trang 81 - 82)