Với dễ tái "Ứng dụng mô bình chuyển dộ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 đựng nên một chương trình mô phỏng, việc biểu điển ngôn ngữ ký hiệu phục
Trang 1ĐẠI HỌC QUỐC GIÁ HÀ NỘI TRUONG DAI HỌC CÔNG NGHỆ
ĐẢO MINH TH”
Ứng đụng mô hình chuyên động hình nhân 3D
vảo Lương tác người máy vả E-learning
LUẬN VĂN THẠC SĨ CÔN
Trang 2ĐẠI HỌC QUỐC GIÁ HÀ NỘI TRUONG DAI HỌC CÔNG NGHỆ
ĐẢO MINH TH”
Ứng đụng mô hình chuyên động hình nhân 3D
vảo Lương tác người máy vả E-learning
LUAN VAN THAC SI CONG NGHE THONG TLN
Người hudng din khoa học: TS Bùi Thế Duy
HÀ NỘI - 205
Trang 3
Mớ đầu
Năm 1955, khi mở cửa lần đảu công viên Disney ở Califomia (Mỹ), sông ty Tiiney đã thiết kế một mô hiưửt 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 địch quảng cáo đã thành công rực
rữ và kết quả là du khách đỗ đến Disney Tand ngay 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 tran 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 Einal 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 hip din nhất [⁄141
Hai ví dụ trên da cho thay sự thu hút của các mô hình 3 chiên 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ả X6u hướng nghiên cứu xây đụng các hệ thông tương tác
người tmáy lại rhiễn trường đại học và phòng thủ nghiệm bất đầu từ những thấp kỹ 96 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 dã dược nêu trong phân phụ lục 1
Ở Việt Nam, công nghệ 3D chú yêu dược dùng trong quảng cdo và kiến trúc, việc đua 31) 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 để dậ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ế dến là việc biểu điễn ngôn ngữ
ky hiệu phục vụ người khiếm thính
Hiện nay, những chương trình, đự á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 dich 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 dễ tái "Ứng dụng mô bình chuyển dộ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 đựng nên một chương trình mô phỏng,
việc biểu điển ngôn ngữ ký hiệu phục vụ cho người khiếm thính trong lĩnh vực giáo tiếp truyền thông, thêm vào đỏ hoàn toàn có thể sứ dựng chương trinh trong các img
dụng E-learning khác đành cho người binh thường Chương trình được xây đụng theo
rốt chữ cát được mô lã bởi một ký
phương pháp đánh vàn: một lừ gồm nhiều chữ cái,
tiệu đo 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 “tới” lên Ví dụ khi muốn nói “Xin chao”, người nói sẽ biểu điển 7 ký hiệu theo thứ tự tương ủng với
” “h” “a” “o”, Phuong pháp nảy tuy có nhược điểm là tốc độ
các chữ cái “x” “1” “w
chuyển đổi châm nhưng lại có ki thể là tham số đầu vào không nhiều, có thẻ tạo ra các
từ tay ý 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ẻ LI-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 LI-anim, phân cấp trong khung xương của một Tỉ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 313
Chương 2 : Giới thiệu về một số ngôn ngữ lập trinh 3D hiện may
Chương 3 : Trinh bày vẻ ngôn ngữ lập trình dỗ 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 liệu và các chuẩn hiện thời Xây dựng chương trình EamiliarHand biểu diễn ngôn ngữ ký hiệu theo điều khiển
bang 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á lrưởng, phát triển tiếp theo
Trang 5Chươ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 hoe của các ruở hình đó đã và đang nổi lên hết sức đáng chú ý Một số hệ thông đã dược xảy dựng uhim mve dich tự hiểu chỉnh những cử dộ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ử đụng nhiều gói phần mềm và
hệ thống dang 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 va phân mềm mà họ đang dùng
I8O (nerrational Standerd Orgamization) dịnh rõ khải ruệm H-Annn, la một
inh 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ả
wt cach thức chuâi biểu diễn
ở hình nhân mày, theo đỏ, cho phép đừng một công,
cụ (có thể của nhà cung cấp A) dễ xây dựng nên mỗ hình hình nhân 3 chiều, sau đó lại ding céng cu khác (có thế của nhà cung cấp B) dé diéu khiến các cử động của hình
nhân này
Me tigu ma L-Anim hướng tới là:
« Kha ndng trong thick: Cae dic tính của một hình nhân H-Anhn sẽ phải duge
dién dat thanh công ở bắt cứ bộ duyệt cơ bản nảo
* Tink mềm đè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 đủng các hình nhân H-Anim
© Tinh đơn giãn: Loại bỗ các hình nhân ra khôi ứng đụng một cách đễ dang khi không cần thiết hoặc bổ sung thêm hình nhân 1uới khi cân
Với 3 mục tiêu trên, cân phái định rõ các chỉ 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áo đỉnh của khôi hình học có
Trang 6nhiệ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]
1.2 Các thành phần của một H-Anim
Đồi tượng I-Anim bao gêm 5 thành phần [29]:
Humanoid
Joint Segment
Site
Displacer
Trang 7s@ BB Seament + Cample sites *
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-Aaim, đối tượng này cho biết cơ chế gắn kết tắt cả các thành phan của hình nhân Cụ thể hon, Humanoid 14 mét container chúa dựng các thành phan dink nghia nén hệ khung xương, hình khối và các giới hạn của mô hình Tỉnh nhân H-Aiim Các thành phẩu nảy bao gồm các đối lượng Joint, Segment, Site và Displacer, chúng định rõ phan lớn các chỉ tiết của mô hinh hình nhân TT- Anim Ngoai ra né cẻn mang thông tỉn vẻ tác giã, bản quyển va những hạn chế thường,
pắp của mô hình Sau đây là ví dụ mô tả lớp đổi tượng Humanoid dùng củ pháp của
VRML V2.0 utf8
PROTO Fhumanoid [
exposediel4 exposedField exposedField exposedField exposedField exposediield exposedfiel4 exposcdField exposedliel4 exposedField exposediield exposedField exposedField ficld
field
SEVec3f MENode MFStnng MENode SEString SkRotation SFVeo3f SFRotation MENode MENode SEVeo3f SFString MENode SFVcc3†
scale
scaleOricntation,
segments sites
translation
version
viewpoints
bboxCenter bbax Size
000
1 H1
1
0010 1II
Trang 9Lum y ring “exposedField” là các trưởng mả sơrip cỏ thể truy nhập dược dễ dọc
dit liga, con “field” thì không
1.2.2 Joint
Tả đối tượng mê iä khép nổi của mô hình II-Anim Các đối tượng Joint duoc
tổ chức thành câu trúc phân cấp mô lã xôi liên hệ cha-con mang tính thừa kế của các
khớp trang hệ khung xương JGint 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 Vi du mé tả lớp đối tượng,
Joint ding ca phap cia VRML V2.0 utf8 nhu sau:
PROTO Joint [
exposedFiekl SFRolalion lnntiOnenatlion 0010
exposedFicld MFFloat Jiimit H
œxposcdField MFFloat stiftness 1111]
cé tay, cing chân nổi giữa khớp đầu gồi vả khớp cẻ chân Ví dụ mô tá lớp đối tượng
Segmentt dùng cú pháp của VRMIL V2.0 uf8 như sau
Trang 10PROTO Segment [
eventin MENode addChildren eventIn MENode — removeChikhen
exposedl‘ield Si Vec3f centerOfMass 000
exposedField MFNode children ũ
œxposedField SFNodc coord NULL
exposedField MENode — displacers ũ exposedField SFSuing rưme "
exposedFicld SFFloat mass ọ
exposedlield SI'Veo3f momentsOflnertia 111 field SFVeco3l' bboxCenter 000 field S¥Vec3f bboxSize -1-1-1
]
1.2.4 Site
Méi Segment co thể có một số nút Site Déi trong này định nghĩa một số vị
trí đặc biệt có liên quan dén Segment
Đôi tượng Site được sử dụng nhằm 3 mục đích
© _ Dinh nghĩa điểm kết nổi cho cáo đối tượng phụ như quân áo vả trang sức
* Dinh nghia vi tri cho camera áo trong khung tham chiếu của một đổi tượng
Segment
« Đinh ngÌữa vị tri “end-effector” ding trong eac hd théng TK Gnverse kinematic)
|xem giải thích trong phụ lục 2|
Ví dụ mỏ tã lớp đối Lượng Site dùng củ pháp của VRMI, V3.0 ul 8 phu sau:
PROTO Site [
Trang 11exposedField S¥Vec3f ceuter 000
exposedField MENode children 0 exposedField SFSuing name mm
exposedl‘ield SiRotation rotation 0010 exposedField SEVeo3f scale ill exposedField SFRolation scaleOnentation 0010
exposedField SFVec3f translation 000
]
1.2.5 Displacer
Llinh dang cua timg đổi tượng mạng lưới có thể biến đổi tủy theo yêu cầu của
Từng dụng Ở mức sơ bản nhất, sự biến đổi này chính là thao tác sửa đổi đữ liệu lưu trong trường field cửa đổi tượng mạng lưới Irong trường hợp các mô hình khớp nói (articulated avatar) thi đổi tượng mạng lưởi thudc déi tuong Segment ‘rong trưởng hợp các mỏ hình ludi khéng phang (deformable mesh avatar) thi déi tugng mang luới được xác dịnh trong trường skin của dải tượng Humanoid Chỉ tiết này rất đáng chủ ý vi nó xác định các nhóm đỉnh trong một mạng lưới Vỉ dụ: trình img
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 luu trong mút Displacer
Dữ liệu lưu trong, Displacer dược coi như một “gợi ý chỉ dẫn” trong trường,
“hợp ta cần dịch chuyển mốt đí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 dối tượng Segmierit Cờn dỏi với
mô hình lưởi không phẳng thì đối tượng Displacer được lưu trong trường displacer
ctia déi tuong Joint Cac thông tin gọi la dé dich chuyén (displacements) nay, durgc
xac dink trong phạm vi của đổi lượng lOinE và biển đổi theo phạm vì của
Humanoid Sau đó bệ render sẽ căn cứ vào chúng đễ áp vào mạng hưới khi render
xô hình lưới thành mô hình 3 chiều thực sự
Trang 121-10
Đối tượng Displacer có 3 mức Ở mức độ cơ bản nhất, nó đơn giãn chi dimg
để 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 Indi nứ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 dỗi các đình theo các hướng khác nhau Ở mức dộ thứ ba, DisplaCer biểu thị cấu hình hoàn chữnh của các đình trong rạ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
dó (vui, rất vui, buồn, rất buôn, cười mm, 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é duge dimg dé bién đổi thuộc tính độ địch chuyển của mô hình Mức
độ có dân cũ độ đị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áo đối tượng Displacer đuợc sử dụng với mục đích chủ yếu là điều khiển các tỉnh thái của khuôn rấ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í đụ, đừng điều khiến việc cánh tay sẽ thay đổi hinh đáng, uhu 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 dỗi tượng Site dùng cú pháp của VRML V2.0 utf8 như sau:
Displacer {
eoordlndex | 7, 12, 24, 18 | displacements [ 0 0.0025 0,0 0.005 0,0 0.0025 0,0 0001 0]
name “1 eyebrow raiser action”
}
1.3 Cây phân cấp khung xương
Cũng giống như một cơ thể người, hình nhân 3D sững có bộ khung xương Đây
là cơ sở dễ tiến hành mö phống các chuyển động của hình nhân 3J2 Khung xương trong một mô hình 3 chiều chỉnh là tập hợp dang cây của các đối tượng Joint của mô
inh do
Trang 13£EA-—11
—— me _
\ ,
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 ctia các khớp, các thông số nảy được ghi trong đổi tượng Displacer Tinh 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 chỉ: 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ó it 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) ding để 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 tro 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 Đẻ
đễ hình dung các bạn có thể xem các hình mình họa dưới đây, chúng là kết quả của các file VRML v2.0 duoc coding theo timg LOA
Trang 16
1-14
1.3.2 ISO đặt tên cho các dối tượng Joint
Bay 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 khmg 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é tay theo phạt vì ả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 dộng,
hư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
cang chân trái, dủ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 LI-Amm được xây
dựng như một đây các đối tượng, J0int lỏng nhau, liên kết giữa các đối tượng Joint la
các đối tượng Segment SỐ đính nghĩa tên của các đối tueng Joint nhu sau
Các đối tượng Joint của thân
Lhip T knee Tankle [subtalar 1_midtarsal | _metatarsal
r hip r knee ankle 1 subtalar r_midtarsal |r metatarsal vl5 vH vB về vil vis
v12 val vô vụ v8 vữ
vt6 vi vụ vB về vũ
ve? ve ved ve4 ve3 ve3
1 stomociavieular |] aeromioclavieular |] ghouder lolbow | wrst
+ stemociavieular |z_aoroioelavieular |r shouder r glbow r wrist
sacroiliac (pelvis) | skullbase LtumancidRoot
Trang 17Các đỗi tượng Joint cia ban tay
VpinkyO [1 pinky] [1 pinky2 1 pinky3 rpmky0 |r phhyl [r phmhy2 r pmky3
Các đối tượng Joint của khuôn mặt
1 eycbnll jomi 1 gyeball jøinl
1 eyebrow jomt — l eyebrow joimt Leyelid_joint L eyelid jout temporomandibular
Trang 19temporomadibular : jaw 1_stemoclavicular : |_clavicle
1 thumb3 : 1 thumb distal
1 indexO : 1 index metacarpal Lindexl : 1_index_proximal
1 index? : 1 index middle
1 index3 : 1 index distal
1 middleO : 1 middle matacarpal
1 middle! : 1 middle proximal
1 middle? : 1 middle middle
1 middle3: Imiddle distal
| ring: 1 ring metacarpal
L ring] <1 ring proximal
1 ring? 1 ring middle
I ring3 : 1 ring distal
1 pinkyO: 1 pinky metacarpal
1 pinky! :1 pinky proximal
L pinky? : |_pinky_middle
I pinky3 :1 pinky distal
r stemnoclavicular : r clavicle r_acromioclavicular : r_seapula
r shoulder : r upperarm
r elbow : r forearm 1_wưist :r hand r_thumbl : r_thumb_metacarpal
r thumb2:r thumb proximal 1_thumb3 ; _thumb_distal r_index0 : r_index_metacarpal + indexl :r index proximal 1_index? : 1_index_middle 1_index3 : _index_distal
Trang 20
1-18
+ miđdleO :r míđdle metaoarpal + miđdlel :r miảdle proximal
r middle2 :r middle rniddle
r middle3:r middle distal
r_ringO:1_ring metacarpal
r ring] :r ring proximal
r ring2:r ring middle
r ring3 : r_ring_distal
r pinkyO:r pinky metacarpal + pinkyl :r pinky proximal
+ pinky2:r pinky middle
+ pinky3:r pinky distal
1.4 Các điểm đặc trưng trên cơ thể người
Dựa vao kiến thức giải phẫu học co thế người, ISO đưa ra danh sách các điểm
đặc biệt lrên ruổ hình người |lài hệu TSO số 7250| Dưới đầy là bình mô tả vị lrí và
bảng, Hệt kế các diễm đặc trưng của một H-Anim.,
Trang 21
'Hình 7 : Các điểm đặc trưng trên cơ thể người
Trang 22
] trochanleron 61 1_calcancous post
Trang 23ISO kiểm soát việc mô hình hỏa các dạng hình nhân H-Anim để đảm bảo các
chuyển động (animation) được xây dựng cho một dạng hình nhân H-Anim thi cũng cỏ
thể triển khai cho một dạng hình nhân H-Anim khác Công việc này thực chất là xác
định trạng thái của một mô hình trước khi áp các chuyên động lên nó Điều nảy cũng
đâm bảo tính nhất quản của các mô hình H-Anim
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
Hình 9: Mô hình 3D của hai hình nhân
Cánh tay sé dudi thẳng và đặt song song với thân hình với lòng ban tay up vao
đủ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 Z2 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
Hinh 10: Truc 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ở
Hình 11 : Mô hình 3 chiều diễn tả khuôn mặt
Trang 26
Cáo hình nhân phải được xây dung với tý lệ kích thước phủ hợp với cơ thể con
chương trình.
Trang 27Chương 2 - GIỚI THIỆU MỘT SỞ NGÔN NGỮ LẬP TRINH 3D
2.1 SAM
SAM (Solid Agenls int Motior), là một ngôn ngữ lập trinh 3D tlủ giác đành cho
các hệ thống song song va animation Vé mit kỹ thuật, SAM là ngôn ngữ lập trinh:
tướng trạng thái, đảng bộ, song song SAM rat thích hợp trong việc mồ hình hóa các
trang thái phâu ứng Chương trình viết bằng ngôn ngữ SAM là mội lậ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.[rạ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 đây các
Tảnh động Lượng ứng với điểu kiện đó Các thành phần chính: như ageul, thông điệp và
hiật là các đồi tượng 3D Các thành phân can được mồ tả bằng text thông qua các form
thì các thông tín quan trọng về dối tượng đỏ
agemt, thông điệp và cáo 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 iuộc vào từng ứng dụng cụ thể Các hoat déng animation trong chuong trình 31) được thực hiện bằng cách lam min
cáo chuyển động liên tiếp vả xác định tỷ lệ giữa các đối tượng Miột mặt, điều này cho
phép phân tích chỉ tiết từng thao tác cứ dộng, mặt khác, nò có một ưu diễm la người lập trình chỉ phải điển 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) ctta mdt chuong trình thêm vào đó, các biểu điển 3D tùy ý
Trang 28hive
we flowers
Kaluya 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 trinh 3D với cơ chế khác, trong đỏ thế giới 3D được điề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à đữ 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 co các
thuộc tính màu sắc" và thể giới la "thông tin được diễn đạt bằng các 3D-bitmap" Trong
3D-Visulan cả chương trình vả đữ liệu được điê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
Người lập trình có thé hiểu (theo đõi) được các trạng thải tỉnh toán Việc lập
trình dược tiến hành trên bộ soạu tháo tích hợp 3D-biunsp có khả năng chạy các
chương trình 3D Dé chuyển các tiến trình tính toàn đến cho máy tính, người lập trinla kiến tạo một chương trình và đữ liệu khởi tạo bằng các 3D-biunap Chúng sẽ được biên
Nam 1990, Guido van Rossum đã xảy đựng nẻn một ngôn ngữ lập trình hưởng
dối tương khả mạnh có tên là Python Lúc dằ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 đựng các mỗ
Tỉnh đỗ họa 2D nhưng vất khó sử dựng, Cho đến tận năm 2000, David 8chorer mới xây
dung médun dé hoa 3 chiều cho Python có tên là "Visual" có tính năng ni bat la dic biệt đễ đừng Dây là một chương trình cá khả năng xây đựng các đối tượng 3D (hình
câu, lập phương, các dường cong ) và dị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 31) 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 tam đến vẫn dễ 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 Nguời dùng sẽ duyệt khung cảnh 3D,
Trang 30bang 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 ich khi trình điển những mô phỏng hình dùng 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 phi vả có chức năng xuất ra
các mô hinh 3D real-time Chung rat dé str dung 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) do hoa ở 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 dung và các thiết bi đỏ họa (phân cứng chuyên về 3D) Vi du, để 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 Hinh dưới đây chỉ ra môi liên
hệ giữa trinh ứng dụng, Direet3D và phân cứng
Hinh14 : Moi lién hé giita trinh ting dung, Direct3D va phan cứng
Direct3D dinh nghia tap các giao điện va cae phurong thire ma Direct3D dua ra
cho người lập trình ứng dụng Những giao điệ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ợ Chu y rang chỉ Direct3D hồ trợ má thôi
chứ không có nglữa là phân cứng (mà hiện giờ đang cài Direet3D) hỗ trợ
Tì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
nhau Chúng có tính năng khác nhau và cách thức thực hiện công việc cũng khác nhau
Ví đụ, 2 loại card đỏ hoa khác nhau có thê thực hiện thao tác xóa mản hình theo 2 cách
Trang 31
thie kha nhau Boi vay, Direct3D yéu cau cac nha san xuất phan củng phải cung cấp TIAL TAL là tập các mã xác định loại thiết bị để từ đá điều khin thiết bị thực hiện các thao tác Bằng cach nay, DirecÐ Iránh được việc phải nắm chỉ liế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
Ca-hay "C for graphics" (tạm dịch: C dành cho đổ họa), là một ngôn ngữ bac
cao đành cha dé hoa 3D do Nvidia va cáo trợ lý của Mierosoft thiết kế, có nhiệm vụ
cung cấp cáo giao didn 3 bac cau cho DirectX va OpenGT No trong thich 100% với
DX9, Ban than Ce duge tao ra tr bai thinh phan chỉnh: các đặc tỉnh vẻ mặt kỹ thuật
lap trinh cita ngén neit va cac bé dich Cz trong img Céng bé cia Nvidia bao gém chi
tiết về bộ dịch Cg, các chỉ 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á Cg được thiết kế với hy vọng giúp lập trinh hiệu quả ở mức cao và dé dimg cho cac nhá xây đự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 dich
sẵn trong các mỗi trường cụ thể hoặc biên dich trong khi chạy đề haạt động qua nhiều
các gói tin dùng cho việc lập trình các mg đựng 3D Chỉ tiết về Java3D sẽ được trình bày kỹ
trong phần 3 của luận văn nảy
Trang 32Chương 3 - CÁC CÔNG CỤ SỬ DỤNG 3.1 JavagD
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 đự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 dỗ họa 3 chiều và các appleL Ngôn
ngữ này eung cập cho người lập trình các cấu trúc ở mức cao trong việc xây đựng và
điều khiến các bình khối 3D, kiến tạo rê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ộ địch của Java3D day đủ thông tin để render bản than thể giới ảo đó một cách hiệu quả nhất, Java3D cũng mang uu dié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 piatform Các chương trình xây đựng bằng Java3D cũng tương thích tuyệt vời với mạng Internet bởi vi các ứng dung và các applet lập trình bằng Java3l) APL có thể truy nhập tới toản
hoa Java3D con giới thiệu một số khái mệm mới mà từ tước nay được coi là không,
thông dụng trong môi trường đỗ họa nhú âm thanh không gian 3D Khả năng âm thanh của Java3D trong tương lai sẽ giúp dưa ra nhiều ứng dụng mới mổ và thủ vị trong
nhiều lĩnh vực, đặc biệt là nghành công nghiép Games
3.1.2 Mục tiêu của Java3D
Mục tiêu chính của Java3l) là các ứng dựng đỗ họa ở mức cao Ngoài ra,
Java3D con oé các mục tiêu khảo cũng rât quan trọng như: [1] [2] [3]
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 cap m6 hinh lập trình hướng đối tượng bậc cao cho phép các nhà tế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
«_ Cưng cấp các hỗ trợ tải (Ioader) thời gian thục Nó cho phép Java3D thích nghỉ với nhiều đạng file, vi dụ như dạng đặc biệt CAD, các đạng xen kẽ, VRML 1.0
va VRML 2.0
3.1.3 Mô hình lập trình
Tava3D là API hướng đối Lượng Cúc ứng dụng xây dựng trên các thành phân dễ
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 bang cách dùng cáo bộ truy nhập dã dược xây dựng siin cho tung doi tượng, cáo 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ế đoá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) hodc 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 Lượng đó Như vậy, cáo rà 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 san đỏ sẽ được xuất ra file dit liệu có cân trúc được Java3D hé trợ (tức là cỏ thể đọc dọc hiểu dữ liệu chứa trong file), Java3D sẽ dọc các
thông tin của Ble dữ liệu đỏ để cung cắp cho bộ render của nó 136 render sé dura trén
các thông tín 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 dang 3ds max là một công cụ rất mạnh trong, thiết kế dỗ họa dễ xây đựng xnô hình ban tay người, sau đó xuất mô hình này ra một file đuổi là VRMIL (một trong những dang
Ble mà Java3D hỗ trợ) Trong chương trình ứng dụng Java3D sẽ có một phương thức
Trang 34Ga — 32
lam nhiém vu doc dé ligu tir file VRML nay đẻ 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
31.3.1 Câu trúc cây trong tỗ chức dỗi neong vita Java3D
Java3l2 định nghĩa các lớp cơ bản khác nhau để thiết kế và biên đổi (từ gốc:
manipulate — van dung bang tay) mét scene graph và điều khiến việc hiến thị cũng như
sender cae bink 3D [6] Ta cé thé mé 1a loan bé cay cau trúc đối wong cin Javu3D nhìy sau’
VirtualUmverse
Locale View
PhysicalBody Physicallinvironment
3.1.8.2 Mô hình lập tình Scene Graph
Mô hình lập trình đỗ họa khung cảnh (scene graph) của lava3D cung cấp một
cơ ghế tuy đơn giản song lại rất lĩnh hoạt để hiển thị và rendor khung cảnh Mội seei
Trang 35
graph chửa dựng những mô tả hoàn chính vẻ một khung cảnh hay một thể giới äo Nó
Tnang các thông tin vẻ đữ liệu hình khối (hình cầu, trụ, lập phương, luới ), các thông,
tẩm về thuộc lính (ảnh sang, mau sắc, độ bóng, ), thông tin về góc nhìn, Các thông lần
xảy sẽ được tổng hợp lám đữ liệu cho việc render chính khung cảnh đỏ từ góc nhìn đã được chi ra
Java3D AFI hoàn thiện các API đồ họa đã có bằng cách loại bé đi nhiều yêu câu
{ith 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 dỗ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 eụ thể gái khang lưới tạo nên chúng, lập trung vào kết cầu giữa
các dối tượng hình học hơn là phải việc lập trình thao tác render dễ sao cho các hinh 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
Java3l2 cung cấp 3 phương thức render Đó lả: phương thức render trực tiếp
(Immediate Mode), pturong thie render hima gitt (Retained Mode), phương thức renđer
Didn dich-lun gitt (Compiled-retained Mode) Picu nay cho phép người dùng thoải mái
lệc lựa chọn cách thực hiện ruột ứng đụng Java3D [lau hét những người xây
trong
đựng fmg đụng Tava3T2 đêu thích những cãi tiên về hai mặt tiện nghỉ vả thục hiện mà
cáo phương thức retamed và cornpiled-retained mang lại |6] 13]I25]
3.1.3.3.1 Immediate Mode (IM)
Ở chế đô này, cáo ứng đụng có thé sit dung hoặc khẳng câu trúc scane-graph
của Java3D Người dùng sẽ có nhiều tùy chợn hơn rhưng đi kèm với ưu điểm nay là chỉ phí khi chạy chương trình cao Trong chế độ này, lava3D không được cưng 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ỗ ượ tính toán ở rnửe 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 36Có hai dang Immediate Mode 1a phzong thitc render tryc tiép thuan tuy (Pure
Immediate Mode-PIM) va phuong thie render true tiép tron (Mixed Immediate Mode- MIM)
PIM
Phương thúc này đành cho các trình ứng đụng vả các applet được lập trinh với ý
đỗ không muốn Java3D Lư động render scene graph Nhiing ứng dụng kiểu nảy thậm chí không muốn xây dựng cau tric scene graph đẻ biểu diễn các dữ liệu để hoa 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 Java3ID để thiết đặt các Wang thai dé boa và các khỏi hình 3 chiều do Java3D cúng cấp sin, ding
thời đã render sẵn
Cae ung dung PIM bude 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 hanh render Thém vao do, với đồi tượng Canvas3D, tmg, dụng,
tạo một đối tượng View cùng với các đối lượng PhysicalBedy va PhisicalEnvironment
liên quan, cáo thành phân soene graph như: Virtnal LUniversity, Looale, BranchGroup,
TransformGroup cing các biển đổi có liên quan và cuối cùng là ViewPlafonn để xác dinh vi tri và hướng trong cái thể giới ão đó nhằm tao ra khung nhìn Hình đưới dây mô
ta cầu trủe đó
Trang 37Hình 15: Chế đệ PIM (Pare Immediate Mode)
Java3D cưng 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 đụng áp dung chế độ PIM, làm người lập trình bớt phải quan tâm đến phân phối cánh rong chế độ nảy, người dùng phải tự mình kết trúc quá trình render cua
Taya3D thông qua phương thức stopRenđerQ của lớp Canvas3D
Phương thức này yêu câu trinh ứng dụng, phái xây dựng seene grapl và xác định
xem thành phân nào trong scene graph cé thế thay đổi trong suốt qua trinh render
Scone graph mô tả từng dối tượng trong thể giới ão, các mỗi liên hệ giữa chủng và cách thủc mà trình ứng dụng sẽ điều khiển chứng biến đối
Trang 383.1.3.3.3 Compiled-Retained Made (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 praph và xác định xem thanh phan nao trong scene graph có thể thay đổi trong suốt qua trinh render Thém vao đó, trình ứng dụng có thể biên địch toàn
bộ hay một phản cée subgraph, là các thành phản câu thành nên một scene graph hoàn
chỉnh Java3D sé dich céc subgraph này và việc biểu điễn cáo subgraph da duoc bién dich có thể không hoàn Loà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 Vin dé mi rong các phương thức
1iẫu hết các lớp Java3l) 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ỉ đứ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
adi này không thể chông lên các phương thức làm riiệm vụ đuyệt dần cấu trúc cây
của scene praph
3.1.4 Cách thức thực hiện của Java3D
31.41 Thực biện thea kiểu phân lớp
Môi trong những yêu Lỗ quan Irọng quyết đình tổng chỉ phí khi chạy một chương trình ứng dụng viết bằng Java3D là chỉ phí thời gian dễ 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 đưới các
Tảnh kháe s bị loại bổ khi render để tăng tốc độ và liết kiệm chi phi) Việc thực thí của
Java3D khi được phân lớp đã tận dụng triệt đẻ những tru điểm của các API mức dưới
có sẵn trong, hệ thống Dặc biệt, chủng ta nhận thay hoạt động của Jaya3D là dựa vào
OpeuGI., Dircot3D vàQuickDrew3D, là những lớp đưới đã có sẵn Điều đỏ có nghĩa là
Trang 39thao tac render etia Java3L) sé duge ting tốc trên nhiều hệ thông có hỗ trợ các API mức
thấp [13]
31.42 Đãi với các tiết bị phần atng
Java3l2 đượ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 DC game mức thấp, các bộ render mức đưới, các máy trạm ở
unite trung bình cho đến các bộ tạo ânh hoạt động & muữc cao
Các chương trình Iava3D được kỹ vọng sẽ cho một tốc độ renđer ôn định trên
hau hét cde PC hiện đại, đặc biết là đôi với các card tăng tộc đồ họa
Java3D dã dược thiết kế dễ có thể biến đổi một cach mém déo khi nén tang phan 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 3l) 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, Y đỗ của các kiến trúc sư ngôn ngữ Java3l) 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
31.5.1 Cấu trúc xcenegrapk
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 trinh ứng đụng Iava3D
Trang 40‘Hinh 16: Scene Graph cia wil trish img dung Java3D-
Pau (én ta thay xuất hiện một đối tượng tối cao là VitualUniverse Object Mét dối tượng VirtualUniverse dinh nghia một “vũ trụ áo” Java3l2 cho phép tạo nhiều hơn
ant “vii bu ão “một hệ thông tổng quát ở mức cao nhất mặc đủ đa số các tình ứng
dụng chỉ cần dùng một hè thông Một đổi tượng Virtual Universc cung cấp một mặt nén cho cdc scene graph ‘I'at cA cáo seene graph của Java3l2 phải kết nối với một đổi tuong Virtual Universe thi mai có thể hiển thị được
Duéi Virtual Universe la đổi tượng Locale Object Đối tượng này định ngÌữa
géc gần với mãi graph con Một Virhual Universe có thế mang nhiễu đổi trong Locale
Trong hình vế trêu thị ruột đối (ong Virtual Universe chi chita mot Locale duy nhất và
được xác định là gắn vào gốc ở tọa độ (0.0, 0.0, 0.0)
Ban than scene graph khỏi dau với các nút Branch Group Mỗi BranchGroup cứng cấp một gốc cho mdl graph con được gợi là các graph nhánh Chỉ có các đối tượng BranchGrơup mới kết ni 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úi BranchGiaphi
Gắn với BranchGroup bên trái là dỗi tượng con Behavior và TransfonnGroup Tổi tượng Behavior chứa mã code Iava nhằm thao táo với ma trận dich chuyển tương, ứng với mỗi đối tượng hình khối Đối lượng Trans[ormnGiroup xác định vị rỉ (liên quan