1. Trang chủ
  2. » Luận Văn - Báo Cáo

Ứng dụng mô hình chuyển động hình nhân 3D vào tương tác người máy và E-learning

92 551 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 92
Dung lượng 1,7 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Với ñề tài “Ứng dụng mô hình chuyển ñộng hình nhân 3D vào tương tác người máy và E-learning”, tôi mong muốn xây dựng nên một chương trình mô phỏng việc biểu diễn ngôn ngữ ký hiệu phục vụ

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

ĐÀO MINH THƯ

Ứng dụng mô hình chuyển động hình nhân 3D vào tương tác người máy và E-learning

luËn v¨n th¹c sÜ CÔNG NGHỆ THÔNG TIN

Hµ néi - 2005

Trang 2

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

ĐÀO MINH THƯ

Ứng dụng mô hình chuyển động hình nhân 3D vào tương tác người máy và E-learning

luËn v¨n th¹c sÜ CÔNG NGHỆ THÔNG TIN

Người hướng dẫn khoa học: TS Bùi Thế Duy

Trang 3

Mở ñầu

Năm 1955, khi mở cửa lần ñầu công viên Disney ở California (Mỹ), công ty Disney ñã thiết kế một mô hình công viên 3 chiều dùng cho chiến dịch quảng cáo và ñiều này ñã ñem lại một hiệu quả không ngờ Chiến dịch quảng cáo ñã thành công rực

rỡ và kết quả là du khách ñổ ñến Disney Land ngày càng nhiều (theo New York Times, 2001)

Năm 2000, trò chơi Final Fantasy ñã gây nên một cơn sốt trong giới chơi game

ở Việt Nam và thế giới Những mô hình nhân vật 3 chiều ñược trau chuốt tới từng sợi tóc, nếp áo, làn da; sự chân thực trong mỗi chuyển ñộng, màu sắc ñã hoàn toàn hút hồn các game thủ Ngoài sự hấp dẫn về ý tưởng của trò chơi, yếu tố "ñẹp và sống ñộng" trong các mô hình 3D của Final Fantasy là một trong những nguyên nhân khiến trò chơi này trở thành một trong những game hấp dẫn nhất [44]

Hai ví dụ trên ñã cho thấy sự thu hút của các mô hình 3 chiều Các ứng dụng máy tính sử dụng mô hình 3 chiều xuất hiện ngày càng nhiều và tỏ rõ lợi thế: sinh ñộng, chân thực và hiệu quả Xu hướng nghiên cứu xây dựng các hệ thống tương tác người máy tại nhiều trường ñại học và phòng thí nghiệm bắt ñầu từ những thập kỷ 90 Một số công trình nghiên cứu phục vụ cho hệ thống tương tác người máy ñã ñược nêu trong phần phụ lục 1

Ở Việt Nam, công nghệ 3D chủ yếu ñược dùng trong quảng cáo và kiến trúc, việc ñưa 3D vào sâu hơn trong các lĩnh vực khác như giáo dục, y tế… còn rất hiếm Cụ thể trong luận văn này tôi muốn ñề cập ñến việc nghiên cứu và ứng dụng các hình nhân 3D vào thực tế mà một trong những ứng dụng có thể kể ñến là việc biểu diễn ngôn ngữ

ký hiệu phục vụ người khiếm thính

Hiện nay, những chương trình, dự án nhằm cải thiện và nâng cao chất lượng Giáo dục hòa nhập trẻ khiếm thính và các dịch vụ phục vụ cho người khiếm thính người khiếm thính ở Việt Nam ñang phát triển khá mạnh [47]

Trang 4

Với ñề tài “Ứng dụng mô hình chuyển ñộng hình nhân 3D vào tương tác người máy và E-learning”, tôi mong muốn xây dựng nên một chương trình mô phỏng việc biểu diễn ngôn ngữ ký hiệu phục vụ cho người khiếm thính trong lĩnh vực giao tiếp truyền thông, thêm vào ñó hoàn toàn có thể sử dụng chương trình trong các ứng dụng E-learning khác dành cho người bình thường Chương trình ñược xây dựng theo phương pháp ñánh vần: một từ gồm nhiều chữ cái, mỗi chữ cái ñược mô tả bởi một ký hiệu do tay thực hiện, như vậy mỗi từ sẽ là một tập hợp các ký hiệu thể hiện bằng tay Người khiếm thính sẽ ñánh vần theo ký hiệu ñể biết ñược từ gì ñược “nói” lên Ví dụ khi muốn nói “Xin chào”, người nói sẽ biểu diễn 7 ký hiệu theo thứ tự tương ứng với các chữ cái “x” “i” “n” “c” “h” “a” “o” Phương pháp này tuy có nhược ñiểm là tốc ñộ chuyển ñổi chậm nhưng lại có lợi thế là tham số ñầu vào không nhiều, có thể tạo ra các

từ tùy ý mà không cần dùng bộ từ ñiển

Kết cấu của luận văn gồm 4 chương:

Chương 1 : Giới thiệu về H-anim bao gồm: khái niệm, các thành phần cần có theo quy ñịnh của một hình nhân theo chuẩn H-anim, phân cấp trong khung xương của một hình nhân và cách ñặt tên cho từng khớp theo chuẩn, các ñiểm ñặc biệt trên cơ thể người và cách thức xây dựng mô hình 3D

Chương 2 : Giới thiệu về một số ngôn ngữ lập trình 3D hiện nay

Chương 3 : Trình bày về ngôn ngữ lập trình ñồ họa 3D (VRML và Java3D) sử dụng

ñể xây dựng chương trình

Chương 4 : Thực hiện bài toán Giới thiệu về ngôn ngữ dấu hiệu và các chuẩn hiện thời Xây dựng chương trình FamiliarHand biểu diễn ngôn ngữ ký hiệu theo ñiều khiển bằng ngôn ngữ lập trình Java3D

Phần Kết luận ñánh giá các công việc ñã làm và hướng phát triển tiếp theo

Trang 5

Chương 1 - H-ANIM 1.1 Khái ni m H-anim

Cùng với sự tăng trưởng của lĩnh vực ñồ họa 3D trong những thập kỷ vừa qua, nhiều phần mềm làm nhiệm vụ thiết kế mô hình 3D và kiến tạo các hoạt ñộng phỏng sinh học của các mô hình ñó ñã và ñang nổi lên hết sức ñáng chú ý Một số hệ thống ñã ñược xây dựng nhằm mục ñích tự hiệu chỉnh những cử ñộng của mô hình người trong thế giới ảo Vấn ñề khó khăn nẩy sinh trong quá trình sử dụng nhiều gói phần mềm và

hệ thống dạng này là việc trao ñổi thông tin Thiếu một hệ thống khung chuẩn trong truyền thông thường bó buộc các nhà xây dựng animation và các studio hiệu chỉnh cử ñộng phải phát triển những giải pháp riêng mang tính ñộc quyền nhằm làm mịn các bước chuyển tiếp giữa hệ thống và phần mềm mà họ ñang dùng

ISO (International Standard Organization) ñịnh rõ khái niệm H-Anim, là một hình dung mang tính khái quát về việc mô hình hóa các hình nhân 3D ISO cũng mô tả một cách thức chuẩn ñể biểu diễn các hình nhân này, theo ñó, cho phép dùng một công

cụ (có thể của nhà cung cấp A) ñể xây dựng nên mô hình hình nhân 3 chiều, sau ñó lại dùng công cụ khác (có thể của nhà cung cấp B) ñể ñiểu khiển các cử ñộng của hình nhân này

Mục tiêu mà H-Anim hướng tới là:

• Khả năng tương thích: Các ñặc tính của một hình nhân H-Anim sẽ phải ñược diễn ñạt thành công ở bất cứ bộ duyệt cơ bản nào

• Tính mềm dẻo linh hoạt: Không có giới hạn trong vấn ñề quy ñịnh xem kiểu ứng dụng nào sẽ ñược phép dùng các hình nhân H-Anim

• Tính ñơn giản: Loại bỏ các hình nhân ra khỏi ứng dụng một cách dễ dàng khi không cần thiết hoặc bổ sung thêm hình nhân mới khi cần

Với 3 mục tiêu trên, cần phải ñịnh rõ các chi tiết kỹ thuật ñể có thể truy nhập vào biểu

ñồ phân cấp các khớp trực tiếp của hình nhân cũng như các ñỉnh của khối hình học có

Trang 6

nhiệm vụ cấu thành nên các ñoạn cơ thể một mô hình người theo một cách thức cho phép nhằm tạo nên các hình nhân có khả năng thực hiện các cử ñộng [15].

Trang 7

Hình 1: Các thành phần của một H-Anim

Trang 8

1.2.1 Humanoid

Là gốc của mô hình H-Anim, ñối tượng này cho biết cơ chế gắn kết tất cả các thành phần của hình nhân Cụ thể hơn, Humanoid là một container chứa ñựng các thành phần ñịnh nghĩa nên hệ khung xương, hình khối và các giới hạn của mô hình hình nhân H-Anim Các thành phần này bao gồm các ñối tượng Joint, Segment, Site và Displacer, chúng ñịnh rõ phần lớn các chi tiết của mô hình hình nhân H-Anim Ngoài ra nó còn mang thông tin về tác giả, bản quyền và những hạn chế thường gặp của mô hình Sau ñây là ví dụ mô tả lớp ñối tượng Humanoid dùng cú phápcủa VRML V2.0 utf8

PROTO Humanoid [

exposedField SFVec3f center 0 0 0 exposedField MFNode humanoidBody [ ] exposedField MFString info [ ] exposedField MFNode joints [ ] exposedField SFString name ""

exposedField SFRotation rotation 0 0 1 0 exposedField SFVec3f scale 1 1 1 exposedField SFRotation scaleOrientation 0 0 1 0 exposedField MFNode segments [ ] exposedField MFNode sites [ ] exposedField SFVec3f translation 0 0 0 exposedField SFString version "1.1"

exposedField MFNode viewpoints [ ] field SFVec3f bboxCenter 0 0 0 field SFVec3f bboxSize -1 -1 -1

Trang 9

Lưu ý rằng “exposedField” là các trường mà scrip có thể truy nhập ñược ñể ñọc

dữ liệu, còn “field” thì không

1.2.2 Joint

Là ñối tượng mô tả khớp nối của mô hình H-Anim Các ñối tượng Joint ñược

tổ chức thành cấu trúc phân cấp mô tả mối liên hệ cha-con mang tính thừa kế của các khớp trong hệ khung xương Joint cũng chính là các container mang thông tin xác ñịnh tên và thuộc tính của mỗi khớp trong hệ khung xương Ví dụ mô tả lớp ñối tượng Joint dùng cú pháp của VRML V2.0 utf8 như sau:

PROTO Joint [

exposedField SFVec3f center 0 0 0

exposedField MFNode children []

exposedField SFRotation limitOrientation 0 0 1 0 exposedField MFFloat llimit []

exposedField SFString name ""

exposedField SFRotation rotation 0 0 1 0 exposedField SFVec3f scale 1 1 1 exposedField SFRotation scaleOrientation 0 0 1 0 exposedField MFFloat stiffness [1 1 1]

exposedField SFVec3f translation 0 0 0 exposedField MFFloat ulimit []

Trang 10

PROTO Segment [

eventIn MFNode addChildren

eventIn MFNode removeChildren exposedField SFVec3f centerOfMass 0 0 0 exposedField MFNode children []

exposedField SFNode coord NULL exposedField MFNode displacers []

exposedField SFString name ""

exposedField SFFloat mass 0 exposedField SFVec3f momentsOfInertia 1 1 1 field SFVec3f bboxCenter 0 0 0 field SFVec3f bboxSize -1 -1 -1 ]

1.2.4 Site

Mỗi Segment có thể có một số nút Site ðối tượng này ñịnh nghĩa một số vị trí ñặc biệt có liên quan ñến Segment

ðối tượng Site ñược sử dụng nhằm 3 mục ñích:

• ðịnh nghĩa ñiểm kết nối cho các ñối tượng phụ như quần áo và trang sức

• ðịnh nghĩa vị trí cho camera ảo trong khung tham chiếu của một ñối tượng Segment

• ðịnh nghĩa vị trí “end-effector” dùng trong các hệ thống IK (inverse kinematic) [xem giải thích trong phụ lục 2]

Ví dụ mô tả lớp ñối tượng Site dùng cú pháp của VRML V2.0 utf8 như sau:

PROTO Site [

Trang 11

exposedField SFVec3f center 0 0 0

exposedField MFNode children []

exposedField SFString name ""

exposedField SFRotation rotation 0 0 1 0

exposedField SFVec3f scale 1 1 1

exposedField SFRotation scaleOrientation 0 0 1 0

exposedField SFVec3f translation 0 0 0

]

1.2.5 Displacer

Hình dạng của từng ñối tượng mạng lưới có thể biến ñổi tùy theo yêu cầu của ứng dụng Ở mức cơ bản nhất, sự biến ñổi này chính là thao tác sửa ñổi dữ liệu lưu trong trường field của ñối tượng mạng lưới Trong trường hợp các mô hình khớp nối (articulated avatar) thì ñối tượng mạng lưới thuộc ñối tượng Segment Trong trường hợp các mô hình lưới không phẳng (deformable mesh avatar) thì ñối tượng mạng lưới ñược xác ñịnh trong trường skin của ñối tượng Humanoid Chi tiết này rất ñáng chú ý vì nó xác ñịnh các nhóm ñỉnh trong một mạng lưới Ví dụ: trình ứng dụng có thể cần nhận biết những ñỉnh nào thuộc phần ñầu bao gồm cả lông mày bên trái Các thông tin này ñược lưu trong nút Displacer

Dữ liệu lưu trong Displacer ñược coi như một “gợi ý chỉ dẫn” trong trường hợp ta cần dịch chuyển mỗi ñỉnh trong mạng lưới Với mô hình khớp nối thì ñối tượng Displacer ñược lưu trong trường displacer của ñối tượng Segment Còn ñối với

mô hình lưới không phẳng thì ñối tượng Displacer ñược lưu trong trường displacer của ñối tượng Joint Các thông tin gọi là ñộ dịch chuyển (displacements) này, ñược xác ñịnh trong phạm vi của ñối tượng Joint và biến ñổi theo phạm vi của Humanoid Sau ñó bộ render sẽ căn cứ vào chúng ñể áp vào mạng lưới khi render

mô hình lưới thành mô hình 3 chiều thực sự

Trang 12

ðối tượng Displacer có 3 mức Ở mức ñộ cơ bản nhất, nó ñơn giản chỉ dùng

ñể nhận biết các ñỉnh tương ứng với một ñặc trưng ñặc biệt nào ñó trên mạng lưới Ở mức hai, nó biểu thị một hoạt ñộng cơ bắp ñặc biệt nào ñó mà hoạt ñộng này lại biến ñổi các ñỉnh theo các hướng khác nhau Ở mức ñộ thứ ba, Displacer biểu thị cấu hình hoàn chỉnh của các ñỉnh trong mạng lưới Ví dụ, trường hợp một mô hình 3 chiểu biểu thị khuôn mặt thì mỗi ñối tượng Displacer sẽ biểu thị gương mặt với một sắc thái nào

ñó (vui, rất vui, buồn, rất buồn, cười mỉm, cười to, bất hạnh, giận dữ…)

Mỗi ñối tượng Displacer xác ñịnh một sơ ñồ các vị trí gọi là “ñích hình vị” (morph target), nó ñược dùng ñể biến ñổi thuộc tính ñộ dịch chuyển của mô hình Mức

ñộ co dãn của ñộ dịch chuyển trong mỗi ñối tượng Displacer có thể ñược truyền như

là một tham số từ bên ngoài

Các ñối tượng Displacer ñược sử dụng với mục ñích chủ yếu là ñiều khiển các hình thái của khuôn mặt, tuy nhiên ta cũng có thể sử dụng chúng cho các phần cơ thể khác nhau của hình nhân Ví dụ, dùng ñiều khiển việc cánh tay sẽ thay ñổi hình dáng như thế nào khi cánh tay gập lại, mô phỏng việc các bắp thịt sẽ căng lên ra sao…

Ví dụ mô tả lớp ñối tượng Site dùng cú pháp của VRML V2.0 utf8 như sau: Displacer {

coordIndex [ 7, 12, 24, 18 ] displacements [ 0 0.0025 0, 0 0.005 0, 0 0.0025 0, 0 0.001 0 ] name “l_eyebrow_raiser_action”

}

1.3 Cây phân cp khung x !ng

Cũng giống như một cơ thể người, hình nhân 3D cũng có bộ khung xương ðây

là cơ sở ñể tiến hành mô phỏng các chuyển ñộng của hình nhân 3D Khung xương

Trang 13

Hình 2: Mô hình người và cây khung xương

1.3.1 Mức phân cấp (LOA - Level Of Articulation)

Các mô hình H-Anim có thể cử ñộng ñược là nhờ thao tác biến ñổi thông số transform của các khớp, các thông số này ñược ghi trong ñối tượng Displacer Tính chân thực trong chuyển ñộng của mô hình 3D phụ thuộc rất lớn vào số lượng các khớp

và các ñoạn chi Số lượng khớp và ñoạn chi càng nhiều, mô hình càng tinh vi và chuyển ñộng càng mềm mại, chân thực ISO quy ñịnh rằng một mô hình H-Anim phải

có ít nhất là một Joint gốc có tên là HumanoidRoot Tất nhiên, trong thực tế số lượng Joint luôn nhiều hơn một Khái niệm mức phân cấp - LOA (Level Of Articulation) dùng ñể chỉ số lượng Joint ñược ñịnh nghĩa trong một mô hình hình nhân Mô hình hình nhân có từ 14 Joint trở lên ñược gọi là “mức phân cấp thấp”, mô hình hình nhân có từ 72 Joint trở lên ñược gọi là “mức phân cấp cao” Mỗi cây phân cấp khung xương chỉ chứa duy nhất một ñối tượng Joint có tên HumanoidRoot, ñây là mức thấp nhất trong cây phân cấp ISO quy ñịnh có tất cả 4 mức phân cấp ðể

dễ hình dung các bạn có thể xem các hình minh họa dưới ñây, chúng là kết quả của các file VRML v2.0 ñược coding theo từng LOA

Trang 14

- LOA mức 0 chỉ hỗ trợ một ñối tượng Joint là HumanoidRoot

Hình 3: LOA mức 0

- LOA mức 1 hỗ trợ cây phân cấp mức thấp

Trang 15

- LOA mức 2 hỗ trợ hệ xương có xương sống ñược ñơn giản hóa

Hình 5: LOA mức 2

- LOA mức 3 hỗ trợ cây phân cấp ñầy ñủ của một H-Anim

Hình 6: LOA mức 3

Trang 16

1.3.2 ISO ñặt tên cho các ñối tượng Joint

Bây giờ ta thử tìm hiểu về sơ qua về cấu tạo cơ thể người ñể ñề xuất cây phân cấp khung xương thích hợp cho hình nhân 3D mô phỏng khung xương người Hệ xương trong cơ thể người gồm các khúc xương (cẳng tay, bàn tay và bàn chân) nối với các khớp (như khuỷu tay, cổ tay và mắt cá chân) Khi các khớp xoay sẽ kéo theo các xương chuyển ñộng, và kéo theo sự chuyển ñộng của cơ thể tùy theo phạm vi ảnh hưởng của khớp xương Ví dụ khi ta xoay cổ tay thì các ngón tay sẽ chuyển ñộng nhưng các bộ phận khác trên cơ thể thì không Khi ta co ñầu gối trái thì chỉ kéo theo cẳng chân trái, ñùi trái, bàn chân trái và các ngón chân trên bàn chân trái chuyển ñộng, còn các bộ phận khác vẫn ñứng yên Bộ khung của một mô hình H-Anim ñược xây dựng như một dãy các ñối tượng Joint lồng nhau, liên kết giữa các ñối tượng Joint là các ñối tượng Segment ISO ñịnh nghĩa tên của các ñối tượng Joint như sau:

Các ñối tượng Joint của thân l_hip l_knee l_ankle l_subtalar l_midtarsal l_metatarsal r_hip r_knee r_ankle r_subtalar r_midtarsal r_metatarsal

l_sternociavicular l_acromioclavicular l_shouder l_elbow l_wrist

r_sternociavicular r_acromioclavicular r_shouder r_elbow r_wrist

sacroiliac (pelvis) skullbase HumanoidRoot

Trang 17

Các ñối tượng Joint của bàn tay l_pinky0 l_pinky1 l_pinky2 l_pinky3 r_pinky0 r_pinky1 r_pinky2 r_pinky3 l_ring0 l_ring1 l_ring2 l_ring3 r_ring0 r_ring1 r_ring2 r_ring3 l_middle0 l_middle1 l_middle2 l_middle3 r_middle0 r_middle1 r_middle2 r_middle3 l_index0 l_ index1 l_index2 l_index3 r_index0 r_index1 r_index2 r_index3 l_thumb1 l_thumb2 l_thumb3

r_thumb1 r_thumb2 r_thumb3

Các ñối tượng Joint của khuôn mặt l_eyeball_joint l_eyeball_joint l_eyebrow_joint l_eyebrow_joint l_eyelid_joint l_eyelid_joint temporomandibular

Dựa vào các tên gọi trên, ISO quy ñịnh cặp ñối tượng Joint:Segment như sau:

Trang 19

| temporomadibular : jaw

l_sternoclavicular : l_clavicle

| l_acromioclavicular : l_scapula | l_shoulder : l_upperarm

| l_elbow : l_forearm

| l_wrist : l_hand

| l_thumb1 : l_thumb_metacarpal | l_thumb2 : l_thumb_proximal | l_thumb3 : l_thumb_distal | l_index0 : l_index_metacarpal | l_index1 : l_index_proximal | l_index2 : l_index_middle | l_index3 : l_index_distal

| l_middle0 : l_middle_matacarpal | l_middle1 : l_middle_proximal | l_middle2 : l_middle_middle | l_middle3 : lmiddle_distal | l_ring0 : l_ring_metacarpal | l_ring1 : l_ring_proximal

| l_ring2 l_ring_middle

| l_ring3 : l_ring_distal

| l_pinky0 : l_pinky_metacarpal | l_pinky1 : l_pinky_proximal | l_pinky2 : l_pinky_middle | l_pinky3 : l_pinky_distal r_sternoclavicular : r_clavicle

r_acromioclavicular : r_scapula r_shoulder : r_upperarm

r_elbow : r_forearm

r_wrist : r_hand

r_thumb1 : r_thumb_metacarpal r_thumb2 : r_thumb_proximal r_thumb3 : r_thumb_distal r_index0 : r_index_metacarpal r_index1 : r_index_proximal r_index2 : r_index_middle r_index3 : r_index_distal

Trang 21

Hình 7 : Các ñiểm ñặc trưng trên cơ thể người.

Trang 22

Số hiệu Tên Số hiệu Tên

Trang 23

Quy ñịnh của ISO là các dạng hình nhân sẽ ñược mô hình hóa ở thế ñứng, mặt hướng theo chiều Z+, tức là nhìn ñối diện với hướng nhìn thẳng của chúng ta Các trục của không gian 3 chiều ñược quy ñịnh như sau:

Hình 8: ISO quy ñịnh hệ trục tọa ñộ 3 chiều

Trang 24

Gốc tọa ñộ (0, 0, 0) ñược quy ñịnh ñặt ở nền, như vậy nó sẽ nằm ở giữa chân của hình nhân Như vậy, hai chân ñặt trên ñất sẽ cách quãng nhau bằng ñộ rộng của hông ðể dễ hình dung, ta giả thiết lòng bàn chân là phẳng, như vậy tọa ñộ theo trục Y của nó sẽ là 0

Hình 9: Mô hình 3D của hai hình nhân

Cánh tay sẽ duỗi thẳng và ñặt song song với thân hình với lòng bàn tay úp vào ñùi Tay coi như phẳng, trục của các khớp từ 1 ñến 3 của các ngón tay song song với trục Y và trục của ngón tay cái nghiêng một góc π/2 radian (90 ñộ) với trục Z+ Như vậy, hệ trục tọa ñộ mỗi khớp của ngón tay cái phải xoay lại ñể thẳng hàng với toàn bộ hình nhân

Trang 25

Hình 10 : Trục tọa ñộ của các ngón tay

Khuôn mặt ñược mô hình hóa với các lông mày giãn ra, môi khép lại và mắt mở

to

Hình 11 : Mô hình 3 chiều diễn tả khuôn mặt

Trang 26

Các hình nhân phải ñược xây dựng với tỷ lệ kích thước phù hợp với cơ thể con người trong thực tế

Tất cả các tọa ñộ của các phần thuộc một mô hình hình nhân ñều chia sẻ một gốc tọa ñộ chung, là gốc tọa ñộ của chính mô hình ñó (ñã quy ñịnh ở trên, nằm giữa hai bàn chân) ðiều này gây khó khăn cho các công cụ trình bày hoặc render nhưng bù lại lại rất dễ dàng cho việc sử dụng cơ chế di chuyển hình khối bất kỳ do các ngôn ngữ lập trình cung cấp ñể chuyển dịch hình khối ñược ñịnh nghĩa trong mỗi ñối tượng Segment ñến vị trí chính xác Việc áp dụng thao tác chuyển dịch này thay cho việc xây dựng lại các hình khối ở từng vị trí có thể có ảnh hưởng lớn tới việc thực hiện chương trình

Trang 27

Chương 2 - GIỚI THIỆU MỘT SỐ NGÔN NGỮ LẬP TRÌNH 3D 2.1 SAM

SAM (Solid Agents in Motion), là một ngôn ngữ lập trình 3D thị giác dành cho các hệ thống song song và animation Về mặt kỹ thuật, SAM là ngôn ngữ lập trình hướng trạng thái, ñồng bộ, song song SAM rất thích hợp trong việc mô hình hóa các trạng thái phản ứng Chương trình viết bằng ngôn ngữ SAM là một tập hợp các agent

mà trong ñó chúng giao tiếp với nhau thông qua việc trao ñổi các thông ñiệp.Trạng thái của agent ñược xác ñịnh bằng nghĩa của luật sản xuất với một ñiều kiện và một dãy các hành ñộng tương ứng với ñiều kiện ñó Các thành phần chính như agent, thông ñiệp và luật là các ñối tượng 3D Các thành phần con ñược mô tả bằng text thông qua các form Tương tự như công cụ "Tool Tip", mỗi khi người dùng di chuột ñến môt ñối tượng 3D thì các thông tin quan trọng về ñối tượng ñó sẽ ñược hiển thị lên Khởi ñầu của các agent, thông ñiệp và các luật ñều có một biểu diễn 3D mang tính tượng trưng như khối cầu, khối lập phương, khối trụ và khối hình chóp nón tùy thuộc vào từng ứng dụng cụ thể Các hoạt ñộng animation trong chương trình 3D ñược thực hiện bằng cách làm mịn các chuyển ñộng liên tiếp và xác ñịnh tỷ lệ giữa các ñối tượng Một mặt, ñiều này cho phép phân tich chi tiết từng thao tác cử ñộng, mặt khác, nó có một ưu ñiểm là người lập trình chỉ phải ñiều khiển một môi trường và một ngôn ngữ cho mọi ñặc tả, thực hiện

và hoạt ñộng (animation) của một chương trình thêm vào ñó, các biểu diễn 3D tùy ý

có thể ñược gán riêng rẽ cho các agent và các thông ñiệp ñể ñơn giản hóa những hình dung hoạt ñộng 3D phức tạp Người lập trình có thể chuyển ñổi giữa biểu diễn tượng trưng và biểu diễn cụ thể ngay cả khi ñang diễn ra sự chuyển ñộng [5]

Trang 28

Hình 12 : Biểu diễn tượng trưng (bên trái) và cụ thể (bên phải) các ựối tượng 3D

2.2 3D-Visulan

Trong các ngôn ngữ lập trình thể hiện bằng ký tự như C hay Lisp thông thường, người lập trình phải diễn tả thế giới 3D bằng các ký tự Vắ dụ một ựiểm trong không gian sẽ ựược mô tả như sau "glVertex(1.0, 1.0, 1.0)" để chuyển ựiểm này sang vị trắ khác, người lập trình sẽ phải viết các biểu thức nhằm biến ựổi các tọa ựộ của ựiểm ựó Kakuya Yamamoto, một giáo sư của trường ựại học Kyoto ựã xây dựng một ngôn ngữ lập trình 3D với cơ chế khác, trong ựó thế giới 3D ựược diễn tả bằng chắnh thế giới 3D chứ không phải bằng ký tự như các ngôn ngữ khác đó là 3D-Visulan đây là ngôn ngữ 3D ựầu tiên theo cơ chế luật viết lại (rewrite-rule-based language), trong ựó cả chương trình và dữ liệu ựược mô tả bằng các 3D-bitmap đây là một ựặc ựiểm mới mẻ giúp 3D-Visulan xây dựng nên các ứng dụng 3D như máy Turing hay trò chơi 3D Space-Invaders

Kakuya ựịnh nghĩa 3D-bitmap là "một tập các khối lập phương 3 chiều có các thuộc tắnh màu sắc" và thế giới là "thông tin ựược diễn ựạt bằng các 3D-bitmap" Trong 3D-Visulan, cả chương trình và dữ liệu ựược diễn tả bằng các 3D-bitmap và chúng ựược coi như một không gian tương tác giữa người lập trình và máy tắnh

Trang 29

Hình 13

Người lập trình có thể hiểu (theo dõi) ñược các trạng thái tính toán Việc lập trình ñược tiến hành trên bộ soạn thảo tích hợp 3D-bitmap có khả năng chạy các chương trình 3D ðể chuyển các tiến trình tính toán ñến cho máy tính, người lập trình kiến tạo một chương trình và dữ liệu khởi tạo bằng các 3D-bitmap Chúng sẽ ñược biên dịch khi chạy chương trình Tất cả các biến ñổi sẽ hiển thị trên màn hình (hình dưới ñây) Trạng thái tiếp theo trong quá trình tính toán sẽ chỉ ñược xác ñịnh bằng trạng thái hiện tại của 3D-bipmap và dữ liệu ñầu vào do người lập trình cung cấp [7]

2.3 VPython

Năm 1990, Guido van Rossum ñã xây dựng nên một ngôn ngữ lập trình hướng ñối tượng khá mạnh có tên là Python Lúc ñầu, bản thân ngôn ngữ này không hỗ trợ việc tạo ra các sản phẩm ñồ họa Thư viện ñồ họa TK chỉ dùng ñể xây dựng các mô hình ñồ họa 2D nhưng rất khó sử dụng Cho ñến tận năm 2000, David Scherer mới xây dựng môñun ñồ họa 3 chiều cho Python có tên là "Visual" có tính năng nổi bật là ñặc biệt dễ dùng ðây là một chương trình có khả năng xây dựng các ñối tượng 3D (hình cầu, lập phương, các ñường cong…) và ñịnh vị chúng trong không gian 3D Visual, chạy với tư cách là một luồng riêng biệt, tự ñộng cập nhật các khung cảnh 3D nhiều lần trong một giây nhằm phản ánh chính xác vị trí hiện tại của các ñối tượng 3D Người lập trình sẽ không phải cần phải quan tâm ñến vấn ñề quản lý công việc hiển thị mà tập trung vào khía cạnh tính toán của chương trình Người dùng sẽ duyệt khung cảnh 3D

Trang 30

bằng cách sử dụng chuột ñể zoom và quay trong khi chương trình ñang chạy Visual cũng hỗ trợ toàn bộ phần ñại số véc tơ

VPhython rất hữu ích khi trình diễn những mô phỏng hình dung về các hiện tượng kỳ thú của vật lý học Là sản phẩm mã mở và miễn phí và có chức năng xuất ra các mô hình 3D real-time Chúng rất dễ sử dụng kể cả với những người chưa có kinh nghiệm [18]

2.4 Direct3D

Direct3D là một API (Application Programming Interface) ñồ họa ở mức thấp cho phép người dùng render [phụ lục 2] thế giới 3D dùng các thiết bị hỗ trợ 3D Direct3D ñóng vai trò trung gian giữa ứng dụng và các thiết bị ñồ họa (phần cứng chuyên về 3D) Ví dụ, ñể ra lệnh cho thiết bị ñồ họa xóa màn hình, trình ứng dụng phải gọi phương thức IDirect3DDevice9::Clear của Direct3D Hình dưới ñây chỉ ra mối liên

hệ giữa trình ứng dụng, Direct3D và phần cứng

Hình14 : Mối liên hệ giữa trình ứng dụng, Direct3D và phần cứng

Direct3D ñịnh nghĩa tập các giao diện và các phương thức mà Direct3D ñưa ra cho người lập trình ứng dụng Những giao diện và phương thức này cho thấy một tập hợp ñầy ñủ các tính năng mà Direct3D hỗ trợ Chú ý rằng chỉ Direct3D hỗ trợ mà thôi chứ không có nghĩa là phần cứng (mà hiện giờ ñang cài Direct3D) hỗ trợ

Hình trên cho ta thấy, có một bước trung gian giữa Direct3D và thiết bị ñồ họa,

ñó là HAL (Hardware Abstraction Layer) Direct3D không thể tương tác trực tiếp với thiết bị ñồ họa Nguyên do là vì hiện nay trên thị trường có rất nhiều loại card khác

họa

Trang 31

thức khác nhau Bởi vậy, Direct3D yêu cầu các nhà sản xuất phần cứng phải cung cấp HAL HAL là tập các mã xác ñịnh loại thiết bị ñể từ ñó ñiều khiển thiết bị thực hiện các thao tác Bằng cách này, Direct3D tránh ñược việc phải nắm chi tiết từng loại thiết

bị một và như vậy nó ñộc lập với các thiết bị phần cứng [45] [46]

2.5 Cg

Cg-hay "C for graphics" (tạm dịch: C dành cho ñồ họa), là một ngôn ngữ bậc cao dành cho ñồ họa 3D do Nvidia và các trợ lý của Microsoft thiết kế, có nhiệm vụ cung cấp các giao diện ở bậc cao cho DirectX và OpenGL Nó tương thích 100% với DX9 Bản thân Cg ñược tạo ra từ hai thành phần chính: các ñặc tính về mặt kỹ thuật lập trình của ngôn ngữ và các bộ dịch Cg tương ứng Công bố của Nvidia bao gồm chi tiết về bộ dịch Cg, các chi tiết về kỹ thuật lập trình ngôn ngữ Cg, bộ duyệt Cg (dành cho việc tạo mẫu và dựng hình) và các công cụ xây dựng khác Cg ñược thiết kế với hy vọng giúp lập trình hiệu quả ở mức cao và dễ dùng cho các nhà xây dựng sản phẩm phần mềm Người lập trình có thể xây dựng các chương trình bằng Cg ñã ñược dịch sẵn trong các môi trường cụ thể hoặc biên dịch trong khi chạy ñể hoạt ñộng qua nhiều GPU có hỗ trợ DX8, OpenGL 1.4, các phiên bản trong tương lai của GPU và hai API cũng như khả năng chạy trên Windows, Linux, Mac OS X và Xbox

2.6 Java3D

Sun ñã mang ñến cho thế giới một ngôn ngữ lập trình tuyệt vời, ñó là Java Là một nhánh trong "thân cây" Java khổng lồ, Java3D, như tên gọi của nó, làm nhiệm vụ chuyên cung cấp các gói tin dùng cho việc lập trình các ứng dụng 3D Chi tiết về Java3D sẽ ñược trình bày kỹ trong phần 3 của luận văn này

Trang 32

Chương 3 - CÁC CÔNG CỤ SỬ DỤNG 3.1 Java3D

3.1.1 Tổng quan về Java3D

Java3D là ngôn ngữ lập trình ñồ họa do hãng Sun MicroSystem xây dựng, một thành viên trong dòng ngôn ngữ lập trình Java vốn ñã rất nổi tiếng của Sun Mục tiêu chính của nó là giúp hỗ trợ xây dựng các ứng dụng ñồ họa 3 chiều và các applet Ngôn ngữ này cung cấp cho người lập trình các cấu trúc ở mức cao trong việc xây dựng và ñiểu khiển các hình khối 3D, kiến tạo nên các cấu trúc dùng ñể render các hình khối 3D

ñó Trong thế giới ảo 3 chiều, các cấu trúc render là thành phần không thể thiếu và nó chính là tác nhân cung cấp cho bộ dịch của Java3D ñầy ñủ thông tin ñể render bản thân thế giới ảo ñó một cách hiệu quả nhất Java3D cũng mang ưu ñiểm lớn nhất của Java là

"ñộc lập platform", do ñó nó có ñược khả năng tương thích lớn ñối với nhiều platform Các chương trình xây dựng bằng Java3D cũng tương thích tuyệt vời với mạng Internet bởi vì các ứng dụng và các applet lập trình bằng Java3D API có thể truy nhập tới toàn

Trang 33

• Cung cấp một tập đa dạng các đặc tính trong việc kiến tạo các thế giới 3D; loại

bỏ các yếu tố khơng cần thiết hoặc các đặc điểm khơng rõ ràng nhằm hỗ trợ tối

đa cho lập trình viên

• Cung cấp mơ hình lập trình hướng đối tượng bậc cao cho phép các nhà thiết kế triển khai các ứng dụng phức tạp và các applet một cách nhanh chĩng

• Cung cấp các hỗ trợ tải (loader) thời gian thực Nĩ cho phép Java3D thích nghi với nhiều dạng file, ví dụ như dạng đặc biệt CAD, các dạng xen kẽ, VRML 1.0

và VRML 2.0

3.1.3 Mơ hình lập trình

Java3D là API hướng đối tượng Các ứng dụng xây dựng trên các thành phần đồ họa riêng rẽ, đĩ là các đối tượng đã được phân tách, sau đĩ liên kết chúng lại theo một cấu trúc hình cây gọi là scene graph Những ứng dụng này sẽ điểu khiển các thành phần đồ họa bằng cách dùng các bộ truy nhập đã được xây dựng sẵn cho từng đối tượng, các bộ biến đổi và phương thức kết nối giữa các nút trong cây scene graph Java3D khơng thể đốn trước hay hỗ trợ trực tiếp tất cả những gì mà một ứng dụng 3D cần đến Thay vào đĩ, các nhà thiết kế cho phép bổ sung các hỗ trợ thơng qua mã Java

Hệ thống CAD (computer-aided design) hoặc hệ thống animation sẽ định nghĩa các đối tượng Các ứng dụng Java3D sẽ nhận các đối tượng đĩ Như vậy, các nhà thiết kế mẫu

đồ họa cĩ thể dùng bất cứ một cơng cụ đồ họa nào, miễn là họ thấy tiện lợi, để tạo ra một mơ hình 3 chiều Mơ hình này sau đĩ sẽ được xuất ra file dữ liệu cĩ cấu trúc được Java3D hỗ trợ (tức là cĩ thể đọc đọc hiểu dữ liệu chứa trong file) Java3D sẽ đọc các thơng tin của file dữ liệu đĩ để cung cấp cho bộ render của nĩ Bộ render sẽ dựa trên các thơng tin này mà tái thiết lại mơ hình 3 chiều đã cĩ Ví dụ, trong luận văn này tơi dùng 3ds max là một cơng cụ rất mạnh trong thiết kế đồ họa để xây dựng mơ hình bàn tay người, sau đĩ xuất mơ hình này ra một file đuơi là VRML (một trong những dạng file mà Java3D hỗ trợ) Trong chương trình ứng dụng Java3D sẽ cĩ một phương thức

Trang 34

làm nhiệm vụ ñọc dữ liệu từ file VRML này ñể chuyển cho bộ render nhằm tái thiết lại

mô hình bàn tay trong cửa sổ chương trình của Java3D

3.1.3.1 Cấu trúc cây trong tổ chức ñối tượng của Java3D

Java3D ñịnh nghĩa các lớp cơ bản khác nhau ñể thiết kế và biến ñổi (từ gốc: manipulate – vận dụng bằng tay) một scene graph và ñiều khiển việc hiển thị cũng như render các hình 3D [6] Ta có thể mô tả toàn bộ cây cấu trúc ñối tượng của Java3D như sau:

javax.media.j3d

VirtualUniverse Locale

View PhysicalBody PhysicalEnvironment Screen3D

Canvas3D (extends awt.Canvas) SceneGraphObject

Node

Group Leaf NodeComponent

Various component objects Transform3D

javax.vecmath

Matrixclasses Tuple classes 3.1.3.2 Mô hình lập trình Scene Graph

Trang 35

graph chứa ựựng những mô tả hoàn chỉnh về một khung cảnh hay một thế giới ảo Nó mang các thông tin về dữ liệu hình khối (hình cầu, trụ, lập phương, lướiẦ), các thông tin về thuộc tắnh (ánh sáng, màu sắc, ựộ bóngẦ), thông tin về góc nhìn Các thông tin này sẽ ựược tổng hợp làm dữ liệu cho việc render chắnh khung cảnh ựó từ góc nhìn ựã ựược chỉ ra

Java3D API hoàn thiện các API ựồ họa ựã có bằng cách loại bỏ ựi nhiều yêu cầu tắnh toán hoặc các yêu cầu nhỏ khác trong lập trình mà các API trước ựó vẫn ựòi hỏi Như vậy, nó cho phép người lập trình tập trung vào ựiều khiển các ựối tượng hình học hơn là việc giải quyết cụ thể cái khung lưới tạo nên chúng, tập trung vào kết cấu giữa các ựối tượng hình học hơn là phải việc lập trình thao tác render ựể sao cho các hình khối này ựạt ựược hiệu quả như mong muốn [6]

3.1.3.3 Các phương thức render

Java3D cung cấp 3 phương thức render đó là: phương thức render trực tiếp (Immediate Mode), phương thức render lưu giữ (Retained Mode), phương thức render biên dịch-lưu giữ (Compiled-retained Mode) điều này cho phép người dùng thoải mái trong việc lựa chọn cách thực hiện một ứng dụng Java3D Hầu hết những người xây dựng ứng dụng Java3D ựều thắch những cải tiến về hai mặt tiện nghi và thực hiện mà các phương thức retained và compiled-retained mang lại [6] [13] [25]

3.1.3.3.1 Immediate Mode (IM)

Ở chế ựộ này, các ứng dụng có thể sử dụng hoặc không cấu trúc scene-graph của Java3D Người dùng sẽ có nhiều tùy chọn hơn nhưng ựi kèm với ưu ựiểm này là chi phắ khi chạy chương trình cao Trong chế ựộ này, Java3D không ựược cung cấp nhiều thông tin ở mức cao liên quan tới các ựối tượng ựồ họa hoặc mối liên hệ giữa chúng Do giản thiểu hóa các thông tin bao quát như vậy nên Java3D chỉ có thể hỗ trợ tắnh toán ở mức cục bộ từng ựối tượng thay cho người lập trình chứ không thể giúp hỗ trợ ở mức bao quát ựược

Trang 36

Có hai dạng Immediate Mode là phương thức render trực tiếp thuần tuý (Pure Immediate Mode-PIM) và phương thức render trực tiếp trộn (Mixed Immediate Mode-MIM)

PIM

Phương thức này dành cho các trình ứng dụng và các applet ñược lập trình với ý

ñồ không muốn Java3D tự ñộng render scene graph Những ứng dụng kiểu này thậm chí không muốn xây dựng cấu trúc scene graph ñể biểu diễn các dữ liệu ñồ họa Tuy nhiên, các ứng dụng này lại muốn sử dụng các thuộc tính của các ñối tượng Java3D ñể thiết ñặt các trạng thái ñồ họa và các khối hình 3 chiều do Java3D cung cấp sẵn, ñồng thời ñã render sẵn

Các ứng dụng PIM buộc phải xây dựng một tập hợp tối thiểu các ñối tượng Java3D trước khi tiến hành render Thêm vào ñó, với ñối tượng Canvas3D, ứng dụng tạo một ñối tượng View cùng với các ñối tượng PhysicalBody và PhisicalEnvironment liên quan, các thành phần scene graph như: Virtual University, Locale, BranchGroup, TransformGroup cùng các biến ñổi có liên quan và cuối cùng là ViewPlatform ñể xác ñịnh vị trí và hướng trong cái thế giới ảo ñó nhằm tạo ra khung nhìn Hình dưới ñây mô

tả cấu trúc ñó

Trang 37

Hình 15: Chế ñộ PIM (Pure Immediate Mode)

Java3D cung cấp nhiều chức năng tiện ích ñể xây dựng các cấu trúc thay thế cho các ứng dụng áp dụng chế ñộ PIM, làm người lập trình bớt phải quan tâm ñến phần phối cảnh Trong chế ñộ này, người dùng phải tự mình kết thúc quá trình render của Java3D thông qua phương thức stopRender() của lớp Canvas3D

Trang 38

3.1.3.3.3 Compiled-Retained Mode (CRM)

Phương thức này giống retained mode ở chỗ nó cũng yêu cầu trình ứng dụng phải xây dựng scene graph và xác ñịnh xem thành phần nào trong scene graph có thể thay ñổi trong suốt quá trình render Thêm vào ñó, trình ứng dụng có thể biên dịch toàn

bộ hay một phần các subgraph, là các thành phần cấu thành nên một scene graph hoàn chỉnh Java3D sẽ dịch các subgraph này và việc biểu diễn các subgraph ñã ñược biên dịch có thể không hoàn toàn tương ứng như cấu trúc cây nguyên gốc mà trình ứng dụng lập nên, tuy nhiên về mặt chức năng thì hoàn toàn tương ñồng CRM là phương thức thực hiện cấp cao nhất

3.1.3.4 Vấn ñề mở rộng các phương thức

Hầu hết các lớp Java3D chỉ ñưa ra các phương thức truy nhập và tính toán Các phương thức này lại chỉ dùng cho các trạng thái bên trong của ñối tượng Java3D khai báo hầu hết các phương thức ở dạng final Các trình ứng dụng có thể mở rộng thêm các lớp của Java3D và bổ sung thêm các phương thức mới Tuy nhiên các phương thức mới này không thể chồng lên các phương thức làm nhiệm vụ duyệt dần cấu trúc cây của scene graph

3.1.4 Cách thức thực hiện của Java3D

3.1.4.1 Thực hiện theo kiểu phân lớp

Một trong những yếu tố quan trọng quyết ñịnh tổng chi phí khi chạy một chương trình ứng dụng viết bằng Java3D là chi phí thời gian ñể render các hình khối 3 chiều mà người dùng nhìn thấy ở góc nhìn của mình (các hình khối bị lấp dưới các hình khác sẽ bị loại bỏ khi render ñể tăng tốc ñộ và tiết kiệm chi phí) Việc thực thi của Java3D khi ñược phân lớp ñã tận dụng triệt ñể những ưu ñiểm của các API mức dưới

Trang 39

thao tác render của Java3D sẽ ñược tăng tốc trên nhiều hệ thống có hỗ trợ các API mức thấp [13]

3.1.4.2 ðối với các thiết bị phần cứng

Java3D ñược thiết kế ñể phù hợp với nhiều nền tảng phần cứng và phần mềm khác nhau: từ các card PC game mức thấp, các bộ render mức dưới, các máy trạm ở mức trung bình cho ñến các bộ tạo ảnh hoạt ñộng ở mức cao

Các chương trình Java3D ñược kỳ vọng sẽ cho một tốc ñộ render ổn ñịnh trên hầu hết các PC hiện ñại, ñặc biệt là ñối với các card tăng tốc ñồ họa

Java3D ñã ñược thiết kế ñể có thể biến ñổi một cách mềm dẻo khi nền tảng phần cứng bên dưới tăng tốc vượt ngưỡng Trong tương lai, các bộ tăng tốc game 3D sẽ hỗ trợ cho những thế giới ảo phức tạp nhiều hơn những gì mà các máy tính ñắt tiền ñã làm trong những năm trước ñây Ý ñồ của các kiến trúc sư ngôn ngữ Java3D rất rõ ràng: Java3D sẽ ñược chuẩn bị sẵn ñể bắt kịp với sự tăng tốc của phần cứng

3.1.5 Cấu trúc của một trình ứng dụng viết bằng Java3D

3.1.5.1 Cấu trúc scenegraph

Hình dưới ñây sẽ cung cấp cho người ñọc một cái nhìn tổng quan nhất về cấu trúc scene graph của một trình ứng dụng Java3D

Trang 40

Hình 16: Scene Graph của một trình ứng dụng Java3D

ðầu tiên ta thấy xuất hiện một ñối tượng tối cao là VirtualUniverse Object Một ñối tượng VirtualUniverse ñịnh nghĩa một “vũ trụ ảo” Java3D cho phép tạo nhiều hơn một “vũ trụ ảo”một hệ thống tổng quát ở mức cao nhất mặc dù ña số các trình ứng dụng chỉ cần dùng một hệ thống Một ñối tượng Virtual Universe cung cấp một mặt nền cho các scene graph Tất cả các scene graph của Java3D phải kết nối với một ñối tượng Virtual Universe thì mới có thể hiển thị ñược

Dưới Virtual Universe là ñối tượng Locale Object ðối tượng này ñịnh nghĩa gốc gắn với mỗi graph con Một Virtual Universe có thể mang nhiều ñối tượng Locale Trong hình vẽ trên thì một ñối tượng Virtual Universe chỉ chứa một Locale duy nhất và ñược xác ñịnh là gắn vào gốc ở tọa ñộ (0.0, 0.0, 0.0)

Bản thân scene graph khởi ñầu với các nút Branch Group Mỗi BranchGroup cung cấp một gốc cho một graph con ñược gọi là các graph nhánh Chỉ có các ñối tượng BranchGroup mới kết nối tới ñược các ñối tượng Locale Trong hình trên ta thấy

có 2 graph nhánh và do vậy có 2 nút BranchGraph

Ngày đăng: 25/03/2015, 10:25

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Daniel Selman, “Java3D programing “ Sách, tạp chí
Tiêu đề: Java3D programing
Tác giả: Daniel Selman
[2] Henry A. Sowizral, David R Nadeau, (San Diego Supercomputer Center University of Canifornia at San Diego, “Introduction to Programming with Java3D” Sách, tạp chí
Tiêu đề: Introduction to Programming with Java3D
Tác giả: Henry A. Sowizral, David R Nadeau
Nhà XB: San Diego Supercomputer Center University of California at San Diego
[4] Barbara LeMaster, AAA paper, “Anthropological Linguistics and Deaf Language Policies in the U.S.A. and Ireland: Public Debates and our Possible Roles” Sách, tạp chí
Tiêu đề: Anthropological Linguistics and Deaf Language Policies in the U.S.A. and Ireland: Public Debates and our Possible Roles
[5] Christian Geiger, Wolfgang Mueller, Waldemar Rosenbach, C-LAB, Fuerstenallee11, 33102 Paderborn, Germany, “SAM - An Animated 3D Programming Language” Sách, tạp chí
Tiêu đề: SAM - An Animated 3D Programming Language
[6] Sun Microsystem Inc, “Java 3DTM Programming: A Technical Overview” Sách, tạp chí
Tiêu đề: Java 3DTM Programming: A Technical Overview
[7] Kakuya Yamamoto, Pacific Workshop on Distributed Multimedia Systems (DMS96), pp.199-206, (1996), “3D-Visulan: A 3D Programming Language for 3D Applications” Sách, tạp chí
Tiêu đề: 3D-Visulan: A 3D Programming Language for 3D Applications
Tác giả: Kakuya Yamamoto
Nhà XB: Pacific Workshop on Distributed Multimedia Systems (DMS96)
Năm: 1996
[8] Nadia Magnenat Thalmann, MIRALab, University of Geneva, Daniel Thalmann, Computer Graphics Lab, EPFL, “Computer Animation in Future Technologies” Sách, tạp chí
Tiêu đề: Computer Animation in Future Technologies
[9] Johns Hopkins Department of Computer Science, “Computer Animation” Sách, tạp chí
Tiêu đề: Computer Animation
Tác giả: Johns Hopkins Department of Computer Science
[10] Bruce Eckel, “Thinking in Java” Sách, tạp chí
Tiêu đề: Thinking in Java
Tác giả: Bruce Eckel
[11] Kelly L.Murdock, “3ds max 4 Bible” Sách, tạp chí
Tiêu đề: 3ds max 4 Bible
Tác giả: Kelly L. Murdock
19104-6389, “ SIMULATING HUMANS: COMPUTER GRAPHICS, ANIMATION, AND CONTROL” Sách, tạp chí
Tiêu đề: SIMULATING HUMANS: COMPUTER GRAPHICS, ANIMATION, AND CONTROL
[13] Sun Microsytem Inc, “Getting Started with the Java 3D API” Sách, tạp chí
Tiêu đề: Getting Started with the Java 3D API
Tác giả: Sun Microsytem Inc
[14] The Duy Bui, Ph.D Thesis, “Creating emotions and facial expressions for embodied agents” Sách, tạp chí
Tiêu đề: Creating emotions and facial expressions for embodied agents
[47] Lưu Triều Nguyên, “discreet 3ds max” Sách, tạp chí
Tiêu đề: discreet 3ds max
Tác giả: Lưu Triều Nguyên
[48] Lưu Triều Nguyên, “Sử dụng 3ds max thiết kế hoạt hình nhân vật” Sách, tạp chí
Tiêu đề: Sử dụng 3ds max thiết kế hoạt hình nhân vật
Tác giả: Lưu Triều Nguyên
[50] Dự ỏn “Giỏo dục hũa nhập trẻ khiếm thớnh”, “Ký hiệu của người ủiếc Việt Nam”. p://www.newv Sách, tạp chí
Tiêu đề: Giỏo dục hũa nhập trẻ khiếm thớnh
Tác giả: Ký hiệu của người ủiếc Việt Nam
[3] Greg Hopkins, 2001, “The Joy of Java 3D “ Khác
[12] Norman I. Badler, Cary B. Phillips1, Bonnie L. Webber, Department of Computer and Information Science, University of Pennsylvania, Philadelphia, PA Khác

HÌNH ẢNH LIÊN QUAN

Hình 1: Các thành phần của một H-Anim - Ứng dụng mô hình chuyển động hình nhân 3D vào tương tác người máy và E-learning
Hình 1 Các thành phần của một H-Anim (Trang 7)
Hình 2: Mô hình người và cây khung xương - Ứng dụng mô hình chuyển động hình nhân 3D vào tương tác người máy và E-learning
Hình 2 Mô hình người và cây khung xương (Trang 13)
Hình 3: LOA mức 0 - Ứng dụng mô hình chuyển động hình nhân 3D vào tương tác người máy và E-learning
Hình 3 LOA mức 0 (Trang 14)
Hình 4: LOA mức 1 - Ứng dụng mô hình chuyển động hình nhân 3D vào tương tác người máy và E-learning
Hình 4 LOA mức 1 (Trang 14)
Hình 5: LOA mức 2 - Ứng dụng mô hình chuyển động hình nhân 3D vào tương tác người máy và E-learning
Hình 5 LOA mức 2 (Trang 15)
Hình 6: LOA mức 3 - Ứng dụng mô hình chuyển động hình nhân 3D vào tương tác người máy và E-learning
Hình 6 LOA mức 3 (Trang 15)
Hỡnh 7 : Cỏc ủiểm ủặc trưng trờn cơ thể người. - Ứng dụng mô hình chuyển động hình nhân 3D vào tương tác người máy và E-learning
nh 7 : Cỏc ủiểm ủặc trưng trờn cơ thể người (Trang 21)
Hình 9: Mô hình 3D của hai hình nhân - Ứng dụng mô hình chuyển động hình nhân 3D vào tương tác người máy và E-learning
Hình 9 Mô hình 3D của hai hình nhân (Trang 24)
Hỡnh 10 : Trục tọa ủộ của cỏc ngún tay - Ứng dụng mô hình chuyển động hình nhân 3D vào tương tác người máy và E-learning
nh 10 : Trục tọa ủộ của cỏc ngún tay (Trang 25)
Hình 11 : Mô hình 3 chiều diễn tả khuôn mặt - Ứng dụng mô hình chuyển động hình nhân 3D vào tương tác người máy và E-learning
Hình 11 Mô hình 3 chiều diễn tả khuôn mặt (Trang 25)
Hỡnh 12 :  Biểu diễn tượng trưng (bờn trỏi) và cụ thể (bờn phải) cỏc ủối tượng 3D - Ứng dụng mô hình chuyển động hình nhân 3D vào tương tác người máy và E-learning
nh 12 : Biểu diễn tượng trưng (bờn trỏi) và cụ thể (bờn phải) cỏc ủối tượng 3D (Trang 28)
Hỡnh 15: Chế ủộ PIM (Pure Immediate Mode) - Ứng dụng mô hình chuyển động hình nhân 3D vào tương tác người máy và E-learning
nh 15: Chế ủộ PIM (Pure Immediate Mode) (Trang 37)
Hình 16:  Scene Graph của một trình ứng dụng Java3D - Ứng dụng mô hình chuyển động hình nhân 3D vào tương tác người máy và E-learning
Hình 16 Scene Graph của một trình ứng dụng Java3D (Trang 40)
Hình 17: Khung xương bàn tay người - Ứng dụng mô hình chuyển động hình nhân 3D vào tương tác người máy và E-learning
Hình 17 Khung xương bàn tay người (Trang 50)
Hình 18: Minh họa các loại khớp xương tay - Ứng dụng mô hình chuyển động hình nhân 3D vào tương tác người máy và E-learning
Hình 18 Minh họa các loại khớp xương tay (Trang 53)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w