ĐẠ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
ĐẠ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
Mã số
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
Hµ néi - 2005
–1
Mñu
Năm 1955, khi m ca ln ñu công viên Disney Cal
Disneyñãthitkmtmôhìnhcôngviên3chiudù
ñiunàyñãñemlimthiuqukhôngng.Chind
rvàktqulàdukháchññnDisneyLandngàyc
2001).
Năm2000,tròchơiFinalFantasyñãgâynênmtcơn
VitNamvàthgii.Nhngmôhìnhnhânvt3ch
tóc,npáo,lànda;schânthctrongmichuyn
cácgameth.Ngoàishpdnvýtưngcatròc
trongcácmôhình3DcaFinalFantasylàmttrong
chơinàytrthànhmttrongnhnggamehpdnnh
Haivídtrênñãchothysthuhútcacácmôhì
máytínhsdngmôhình3chiuxuthinngàycàn
ñng,chânthcvàhiuqu.Xuhưngnghiêncuxâ
ngưimáytinhiutrưngñihcvàphòngthíngh
Mtscôngtrìnhnghiêncuphcvchohthngt
trongphnphlc1.
VitNam,côngngh3Dchyuñưcdùngtrongqu
vicñưa3Dvàosâuhơntrongcáclĩnhvckhácnhư
thtronglunvănnàytôimunñcpñnvicngh
3Dvàothctmàmttrongnhngngdngcóthk
kýhiuphcvngưikhimthính.
Hinnay,nhngchươngtrình,dánnhmcithin
Giáo dchòa nhp tr khim thính và cácdch vph
ngưikhimthínhVitNamñangpháttrinkhám
–2
Vi ñ tài “
ngưimáyvàElearning”,
vicbiudinngônngkýhiuphcvchongưik
tiptruynthông,thêmvàoñóhoàntoàncóths
dngElearningkhácdànhchongưibìnhthưng.Ch
phươngphápñánhvn:mttgmnhiuchcái,mi
hiudotaythchin,nhưvymitslàmttp
Ngưikhimthínhsñánhvntheokýhiuñbit
khimunnói“Xinchào”,ngưinóisbiudin7k
cácchcái“x”“i”“n”“c”“h”“a”“o”.Phươngph
chuynñichmnhưnglicólithlàthamsñu
ttùyýmàkhôngcndùngbtñin.
Ktcucalunvăngm4chương:
Chương1: GiithiuvHanimbaogm:kháinim,cácthành
quyñnhcamthìnhnhântheochunHanim,phân
phncncótheo
cptrongkhungxươngcamt
hìnhnhânvàcáchñttênchotngkhptheochun,
cácñimñcbittrêncơth
ngưivàcáchthcxâydngmôhình3D.
y
Chương2: Giithiuvmtsngônnglptrình3Dhinna
Chương3: Trìnhbàyvngônnglptrìnhñha3D(VRMLvà
Java3D)sdng
ñxâydngchươngtrình.
uvàcácchunhin
Chương4: Thchinbàitoán.Giithiuvngônngduhi
thi.XâydngchươngtrìnhFamiliarHandbiudin
ngônngkýhiutheoñiukhin
bngngônnglptrìnhJava3D.
PhnKtlun
ñánhgiácáccôngvicñãlàmvàhưngpháttrint
iptheo.
–3
Chương1HANIM
1.1.KháinimHanim
Cùngvistăngtrưngcalĩnhvcñha3Dtron
nhiuphnmmlàmnhimvthitkmôhình3Dvà
sinhhccacácmôhìnhñóñãvàñangnilênht
ñưcxâydngnhmmcñíchthiuchnhnhngc
thgiio.Vnñkhókhănnysinhtrongquátrì
hthngdngnàylàvictraoñithôngtin.Thiu
truynthôngthưngbóbuccácnhàxâydnganimat
ñngphipháttrinnhnggiiphápriêngmangtín
bưcchuyntipgiahthngvàphnmmmàhña
ISO (InternationalStandard Organization)ñnh rõk
hìnhdungmangtínhkháiquátvvicmôhìnhhóac
mtcáchthcchunñbiudincáchìnhnhânnày,
c(cóthcanhàcungcpA)ñxâydngnênmôh
dùngcôngckhác(cóthcanhàcungcpB)ññi
nhânnày.
MctiêumàHAnimhưngtilà:
•
Khnăngtươngthích
dinñtthànhcôngbtcbduytcơbnnào.
•
Tínhmmdolinhhot
ngdngnàosñưcphépdùngcáchìnhnhânHAnim
•
Tínhñơngin :Loibcáchìnhnhânrakhingdngmtcáchd
khôngcnthithocbsungthêmhìnhnhânmikhi
Vi3mctiêutrên,cnphiñnhrõcácchitit
ñphâncpcáckhptrctipcahìnhnhâncũngn
–4
nhimvcuthànhnêncácñoncơthmtmôhình
phépnhmtonêncáchìnhnhâncókhnăngthchi
1.2.CácthànhphncamtHAnim
ðitưngHAnimbaogm5thànhphn[29]:
•
Humanoid
•
Joint
•
Segment
•
Site
•
Displacer
ngưitheomtcáchthccho
ncáccñng[15].
–5
Hình1:CácthànhphncamtHAnim
–6
1.2.1.Humanoid
LàgccamôhìnhHAnim,ñitưngnàychobitc
thànhphncahìnhnhân.Cthhơn,
thànhphnñnhnghĩanênhkhungxương,hìnhkhi
hìnhnhânHAnim. Cácthànhphnnàybaogmcácñ
Sitevà Displacer,chúngñnhrõphnlncácchititcamôhìnhh
Anim.Ngoàiranócònmangthôngtinvtácgi,b
gpcamôhình.Sauñâylàvídmôtlpñitư
VRMLV2.0utf8.
PROTOHumanoid[
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
field
field
]
–7
Lưuýrng“exposedField”làcáctrưngmàscripcó thtruynhpñưcññc
dliu,còn“field”thìkhông.
1.2.2.Joint
LàñitưngmôtkhpnicamôhìnhHAnim.Các
tchcthànhcutrúcphâncpmôtmiliênhc
khptronghkhungxương.
ñnhtênvàthuctínhcamikhptronghkhung
JointdùngcúphápcaVRMLV2.0utf8nhưsau:
PROTOJoint[
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
]
1.2.3.Segment
LàñitưngmôtcácñonchicamôhìnhHAnim.
Vmtvtlý,chúnglà
vtthtrunggiangiacáckhpxương.Vídcng
taynigiakhpcùichvàkhp
ctay,cngchânnigiakhpñugivàkhpc
chân...Vídmôtlpñitưng
SegmentdùngcúphápcaVRMLV2.0utf8nhưsau:
–8
PROTOSegment[
eventIn
eventIn
MFNode
addChildren
MFNode removeChildren
exposedField
SFVec3f centerOfMass
exposedField
MFNode children
exposedField
SFNode coord
exposedField
MFNode displacers
exposedField
SFString name
exposedField
SFFloat mass
exposedField
SFVec3f momentsOfInertia 1
000
[]
ULL
N
[]
""
0
11
field
SFVec3f bboxCenter 0
00
field
SFVec3f bboxSize
111
]
1.2.4.Site
Mi Segmentcóthcómtsnút
tríñcbitcóliênquanñn
Site.ðitưngnàyñnhnghĩamtsv
Segment.
ðitưng Siteñưcsdngnhm3mcñích:
• ðnhnghĩañimktnichocácñitưngphnhưq
unáovàtrangsc.
• ðnh nghĩa v trí cho camera o trong khung tham ch iu ca mt ñi tưng
Segment.
• ðnhnghĩavtrí“endeffector”dùngtrongcách
thngIK(inversekinematic).
[xemgiithíchtrongphlc2]
Vídmôtlpñitưng
SitedùngcúphápcaVRMLV2.0utf8nhưsau:
PROTOSite[
eventIn
MFNode addChildren
eventIn
MFNode removeChildren
–9
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
]
1.2.5.Displacer
Hìnhdngcatngñitưngmnglưicóthbin
ngdng. mccơbnnht,sbinñinàychính
trongtrưng
fieldcañitưngm
(articulated avatar ) thì ñi tưng mng lưi thuc ñi tưng
trưnghpcácmôhìnhlưikhôngphng(
mnglưiñưcxácñnhtrongtrưng
rtñángchúývìnóxácñnhcácnhómñnhtrongm
dngcóthcnnhnbitnhngñnhnàothucphn
trái.Cácthôngtinnàyñưclưutrongnút
Dliulưutrong
hptacndchchuynmiñnhtrongmnglưi.V
Displacerñưclưutrongtrưng
môhìnhlưikhôngphngthìñitưng
cañitưng
xác ñnh trong phm vi ca ñi tưng
Humanoid.Sauñóbrenderscăncvàochúngñápvàomn
môhìnhlưithànhmôhình3chiuthcs.
Joint.Cácthô
–10
ðitưng
Displacercó3mc. mcñcơbnnht,nóñơnginchdù
ñnhnbitcácñnhtươngngvimtñctrưngñ
cbitnàoñótrênmnglưi.
mchai,nóbiuthmthotñngcơbpñcbit
nàoñómàhotñngnàylibin
ñicácñnhtheocáchưngkhácnhau.mcñth
ba, Displacerbiuthcuhình
hoànchnhcacácñnhtrongmnglưi.Víd,trư
thkhuônmtthìmiñitưng
nghpmtmôhình3chiubiu
Displacersbiuthgươngmtvimtsctháinào
ñó(vui,rtvui,bun,rtbun,cưimm,cưito
Miñitưng
ng
,bthnh,gind…).
Displacerxácñnhmtsơñcácvtrígilà“ñíchhìnhv
(morphtarget),nóñưcdùngñbinñithuctính
ñdchchuyncamôhình.Mc
ñcodãncañdchchuyntrongmiñitưng
Displacercóthñưctruynnhư
”
làmtthamstbênngoài.
Cácñitưng
Displacerñưcsdngvimcñíchchyulàñiukhincá
hìnhtháicakhuônmt,tuynhiêntacũngcóths
khácnhaucahìnhnhân.Víd,dùngñiukhinvi
nhưthnàokhicánhtaygpli,môphngviccác
dngchúngchocácphncơth
ccánhtaysthayñihìnhdáng
bpthtscănglênrasao…
VídmôtlpñitưngSitedùngcúphápcaVRM
LV2.0utf8nhưsau:
Displacer{
coordIndex[7,12,24,18]
displacements[00.00250,00.0050,00.00
250,00.0010]
name“l_eyebrow_raiser_action”
}
1.3.Câyphâncpkhungxng
Cũnggingnhưmtcơthngưi,hìnhnhân3Dcũng
làcơsñtinhànhmôphngcácchuynñngca
trongmtmôhình3chiuchínhlàtphpdngcây
hìnhñó.
cóbkhungxương.ðây
hìnhnhân3D. Khungxương
cacácñitưngJointcamô
c
–11
1.3.1.Mcphâncp(LOALevelOfArticulation)
CácmôhìnhHAnimcóthcñngñưclànhthao
transformcacáckhp,cácthôngsnàyñưcghit
chânthctrongchuynñngcamôhình3Dphthu
và các ñon chi. S lưng khp và ñon chi càng nhi
chuynñngcàngmmmi,chânthc.ISOquyñnhr
cóítnhtlàmt
lưng Joint luôn nhiu hơn mt. Khái nim mc phân cp
Articulation) dùng ñ ch s lưng
nhân.Môhìnhhìnhnhâncót14
hìnhhìnhnhâncót72
cpkhungxươngchchaduynhtmtñitưng
ñâylàmcthpnhttrongcâyphâncp.ISOquyñ
dhìnhdungcácbncóthxemcáchìnhminhhad
fileVRMLv2.0ñưccodingtheotng
–12
LOAmc0chhtrmtñitưng
Jointlà HumanoidRoot.
Hình3:LOAmc0
LOAmc1htrcâyphâncpmcthp.
Hình4:LOAmc1
–13
LOAmc2htrhxươngcóxươngsngñưcñơngin
Hình5:LOAmc2
LOAmc3htrcâyphâncpñyñcamtHAnim.
Hình6:LOAmc3
hóa.
–14
1.3.2.ISOñttênchocácñitưngJoint
Bâygitathtìmhiuvsơquavcutocơth
cp khung xương thích hp cho hình nhân 3D mô phng
xươngtrongcơthngưigmcáckhúcxương(cngt
cáckhp(nhưkhuutay,ctayvàmtcáchân).Kh
xương chuyn ñng,và kéo theo s chuyn ñng cac
hưng cakhp xương. Ví d khi ta xoay c tay thì
nhưngcácbphnkháctrêncơththìkhông.Khit
cngchântrái,ñùitrái,bànchântráivàcácngón
còncácbphnkhácvnñngyên.Bkhungcamt
dngnhưmtdãycácñitưng
cácñitưng
l_hip
r_hip
vl5
vt12
vt6
vc7
l_sternociavicular
r_sternociavicular
sacroiliac(pelvis)
Segment
–15
CácñitưngJointcabàntay
l_pinky0
r_pinky0
l_ring0
r_ring0
l_middle0
r_middle0
l_index0
r_index0
l_thumb1
r_thumb1
CácñitưngJointcakhuônmt
l_eyeball_joint
l_eyeball_joint
l_eyebrow_joint
l_eyebrow_joint
l_eyelid_joint
l_eyelid_joint
temporomandibular
Davàocáctêngitrên,ISOquyñnhcpñitưn
sau:
HumanoidRoot
sacroiliac:pelvis
l_hip:l_thigh
l_knee:l_calf
l_ankle:l_hindfoot
l_subtalar:l_midproximal
l_midtarsal:l_middistal
l_metatarsal:l_forefoot
g Joint:Segmentnhư
–16
r_hip:r_thigh
r_knee:r_calf
r_ankle:r_hindfoot
r_subtalar:r_midproximal
r_midtarsal:r_middistal
r_metatarsal:r_forefoot
vl5:l5
vl4:l4
vl3:l3
vl2:l2
vl1:l1
vt12:t12
vt11:t11
vt10:t10
vt9:t9
vt8:t8
vt7:t7
vt6*:t6
vt5:t5
vt4:t4
vt3:t3
vt2:t2
vt1:t1
vc7*:c7
|vc6:c6
|vc5:c5
|vc4*:c4
|vc3:c3
|vc2*:c2
|vc1:c1
|skullbase:skull
|l_eyelid_joint:l_eyel
|r_eyelid_joint:r_eyel
|l_eyeball_joint:l_eye
|r_eyeball_joint:r_eye
|l_eyebrow_joint:l_eye
|r_eyebrow_joint:r_eye
id
id
ball
ball
brow
brow
–17
|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_metacarp
|l_thumb2:l_thumb_proxima l |
l_thumb3:l_thumb_distal
|l_index0:l_index_metacarp
|l_index1:l_index_proxima
|l_index2:l_index_middle
|l_index3:l_index_dista
|l_middle0:l_middle_mataca
|l_middle1:l_middle_proxi
|l_middle2:l_middle_midd
|l_middle3:lmiddle_dist
|l_ring0:l_ring_metacarpal
|l_ring1:l_ring_proximal
|l_ring2l_ring_middle
|l_ring3:l_ring_distal
|l_pinky0:l_pinky_metacarp
|l_pinky1:l_pinky_proxima
|l_pinky2:l_pinky_middle
|l_pinky3:l_pinky_dista
r_sternoclavicular:r_clavicle
r_acromioclavicular:r_scapula
r_shoulder:r_upperarm
r_elbow:r_forearm
r_wrist:r_hand
r_thumb1:r_thumb_metacarpa l
r_thumb2:r_thumb_proximal
r_thumb3:r_thumb_distal
r_index0:r_index_metacarpa l
r_index1:r_index_proximal
r_index2:r_index_middle
r_index3:r_index_distal
al
al
l
l
rpal
mal
le
al
al
l
l
–18
pal
r_middle0:r_middle_metacar
r_middle1:r_middle_proxim
r_middle2:r_middle_middl
r_middle3:r_middle_dist
r_ring0:r_ring_metacarpal
al
e
al
r_ring1:r_ring_proximal
r_ring2:r_ring_middle
r_ring3:r_ring_distal
l
r_pinky0:r_pinky_metacarpa
r_pinky1:r_pinky_proximal
r_pinky2:r_pinky_middle
r_pinky3:r_pinky_dista
l
1.4.Cácñimñctrngtrêncthngi
Davàokinthcgiiphuhccơthngưi,ISOñ
ñcbittrênmôhìnhngưi[tàiliuISOs7250].
bnglitkêcácñimñctrưngcamtHAnim.
ưaradanhsáchcácñim
Dưiñâylàhìnhmôtvtrívà
–19
Hình7:Cácñimñctrưngtrêncơthngưi.
–20
Shiu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Tên
sellion
r_infraorbitale
l_infraorbitale
supramenton
r_tragion
r_gonion
l_tragion
l_gonion
nuchale
r_clavicale
suprasternale
l_clavicale
r_thelion/bustpo
l_thelion/bustpo
substernale
r_rib10
r_asis
l_rib10
l_asis
r_iliocristale
r_trochanterion
l_iliocristale
l_trochanterion
cervicale
rib10_midspine
r_psis
l_psis
waist_preferred
r_acromion
r_axilla_ant
r_radial_styloid
r_axilla_ant
r_olecranon
r_humeral_late
r_humeral_med
r_radiale
–21
37
38
r_metacarpal
r_dactylion
1.5.Môhìnhhóa
ISOkimsoátvicmôhìnhhóacácdnghìnhnhânH
chuynñng(animation)ñưcxâydngchomtdng
thtrinkhaichomtdnghìnhnhânHAnimkhác.
Animññmbocác
hìnhnhânHAnimthìcũngcó
Côngvicnàythcchtlàxác
ñnhtrngtháicamtmôhìnhtrưckhiápcácch uynñnglênnó.ðiunàycũng
ñmbotínhnhtquáncacácmôhìnhHAnim.
QuyñnhcaISOlàcácdnghìnhnhânsñưcmôh
ìnhhóathñng,mt
hưngtheochiuZ+,tclànhìnñidinvihưng nhìnthngcachúngta.Cáctrc
cakhônggian3chiuñưcquyñnhnhưsau:
Hình8:ISOquyñnhhtrctañ3chiu
–22
Gctañ(0,0,0)ñưcquyñnhñt nn,nhưv
ynósnm giachân
cahìnhnhân.Nhưvy,haichânñttrênñtscá
chquãngnhaubngñrngca
hông.ðdhìnhdung,tagithitlòngbànchânl
àphng,nhưvytañtheotrcY
canóslà0.
Hình9:Môhình3Dcahaihìnhnhân
Cánhtaysduithngvàñtsongsongvithânhì
nhvilòngbàntayúpvào
ñùi.Taycoinhưphng,trccacáckhpt1ñn
3cacácngóntaysongsongvi
trcYvàtrccangóntaycáinghiêngmtgócπ/2
radian(90ñ)vitrcZ+.Như
vy,htrctañmikhpcangóntaycáiphi
hìnhnhân.
xoayliñthnghàngvitoànb
–23
Hình10:Trctañcacácngóntay
Khuônmtñưcmôhìnhhóavicáclôngmàygiãnra
to.
Hình11:Môhình3chiudintkhuônmt
,môikhéplivàmtm