1
1
TH3813 Realiti MayaAnimasi, Pengesan & Geometri
2
Mengesani tindakanpemerhati
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 3
LatarbelakangBoleh mengesan bila cursor pemerhati:
berada pada satu bentuk“menyentuh” bentuk“menarik” bentuk
Boleh trigger animasi disebabkan sentuhanpemerhatiBenarkan pemerhati gerakkan dan putarkanbentuk
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 4
Penggunaan pengesan tindakanTerdapat 4 jenis pengesan tindakan:
TouchSensor - kesan sentuhanSphereSensor - kesan penarikan (drag)CylinderSensor - kesan penarikanPlaneSensor - kesan penarikan
Nod Anchor ialah satu pengesan tindakan yang khusus
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 5
Mengesani bentukSemua pengesan tindakan kesan semua bentukdalam kumpulan yang samaPengesan akan trigger apabila cursor pemerhatimenyentuh bentuk
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 6
Sintaks: TouchSensorNod TouchSensor kesan sentuhan cursor
isOver - hantar true/false apabila cursor over/not overisActive - hantar true/false bila butang tetikusditekan / dilepaskantouchTime - hantar masa bila lapaskan butangtetikus
2
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 7
Sintaks: TouchSensorTouchSensor {
enabled TRUE #exposedField SFBoolisActive #eventOut SFBoolisOver #eventOut SFBooltouchTime #eventOut SFTimehitPoint_changed #eventOut SFVec3fhitNormal_changed #eventOut SFVec3fhitTexCoord_changed #eventOut SFVec2f
}
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 8
ContohTransform {
children [DEF ToucheSensor { }
Shape { . . . }]
}
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 9
Contoh penggunaan TouchSensorDEF Touch TouchSensor { }
DEF Timer1 TimeSensor { . . . }
DEF Rot1 OrientationInterpolator { . . . }
DEF Frame1 Transform {children [
Shape { . . . }]
}
ROUTE Touch.touchTime TO Timer1.set_startTimeROUTE Timer1.fraction_changed TO Rot1.set_fractionROUTE Rot1.value_changed TO Frame1.set_rotation
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 10
Contoh penggunaan TouchSensor
Kiub yang berputar apabila pemerhati lalukancursor ke arahnya
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 11
Contoh penggunaan nod TouchSensor
colors.wrl
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 12
Sintaks: SphereSensorNod SphereSensor kesan penarikan (draf) cursor dan hasilkan putaran sama spt sfera
isActive - hantar true/false bila butang tetikusditekan/dilepaskanrotation_changed - hantar putaran sebagai output ketika penarikan
Transform {children [
DEF Rotator SphereSensor { }DEF RotateMe Transform { . . . }
]}ROUTE Rotator.rotation_changed TO RotateMe.set_rotation
3
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 13
Contoh penggunaanSphereSensor
Bentuk yang berputar (sama seperti sfera berputar) apabila pemerhati menariknya
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 14
Sintaks: SphereSensorTouchSensor {
enabled TRUE #exposedField SFBoolautoOffset TRUE # exposedField SFBooloffset 0.0 1.0 0.0 0.0 # exposedField SFRotationisActive #eventOut SFBoolrotation_changed #eventOut SFRotationtrackPoint_changed #eventOut SFVec3f
}
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 15
Sintaks: CylinderSensorNod CylinderSensor kesan penarikan cursor danjanakan putaran seperti sama spt putaran silinder
isActive - hantar true/false bila butang tetikusditekan/dilepaskanrotation_changed - hantar putaran sebagai output ketika penarikan
Transform {children [
DEF Rotator CylinderSensor { }DEF RotateMe Transform { . . . }
]}ROUTE Rotator.rotation_changed TO RotateMe.set_rotation
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 16
Contoh penggunaanCylinderSensor
Bentuk yang berputar pada paksi Y (sama sepertisilinder berputar) apabila pemerhati menariknya
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 17
Sintaks: CylinderSensorTouchSensor {
enabled TRUE #exposedField SFBooldiskAngle 0.262 # exposedField SFFloatautooffset TRUE # exposedField SFBooloffset 0.0 # exposedField SFFloatmaxAngle #eventOut SFBoolminAngle 0.0 #eventOut SFFloatisActive #eventOut SFBoolrotation_changed #eventOut SFRotation
trackPoint_changed #eventOut SFVec3f}
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 18
Sintaks: PlaneSensorNod PlaneSensor kesan penarikan cursor danjanakan translasi
isActive - hantar true/false bila butang tetikusditekan/dilepaskanrotation_changed - hantar translasi sebagai output ketika penarikan
Transform {children [
DEF Mover PlaneSensor { }DEF MoveMe Transform { . . . }
]}ROUTE Mover.translation TO MoveMe.set_rotation
4
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 19
Contoh penggunaan PlaneSensor#VRML V2.0 utf8 Group {
children [ DEF Cube Transform {
children Shape { appearance Appearance {
material Material { } } geometry Box { }
} }, DEF Sensor PlaneSensor { }
] } ROUTE Sensor.translation_changed TO Cube.set_translation
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 20
Sintaks: PlaneSensorTouchSensor {
enabled TRUE #exposedField SFBoolautoOffset TRUE # exposedField SFBooloffset 0.0 0.0 0.0 # exposedField SFVec3fmaxPosition -1.0 -1.0 #eventOut SFVec2fminPosition 0.0 0.0 #eventOut SFVec2fisActive #eventOut SFBooltranslation_changed #eventOut SFVec3f
trackPoint_changed #eventOut SFVec3f}
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 21
Penggunaan pengesan berbilangPengesan berbilang boleh mengesan bentukyang sama tapi:
jika pengesan dalam kumpulan yang samasemua bentuk akan respon
jika pengesan berada dalam hieraki kedalamanberbeza:
pengesan terdalam akan responyang lain tidak akan respon
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 22
Contoh penggunaan pengesanberbilang
Kiub yang berputar apabila cursor pemerhatimelaluinya dan beranjak apabila pemerhati
menariknya
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 23
Contoh penggunaan pengesanberbilang
Lampu meja yang boleh diubahsuai denganmenggunakan pengesan tersarang
24
Membina bentukdaripada titik, garis &
permukaan
5
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 25
LatarbelakangBentuk kompleks sukar dihasilkan dengnamenggunakan bentuk asas:
HaiwanPokokMesin dll
Oleh itu, bina bentuk dengan menggunakankomponen atomik:
titik, baris dan permukaan
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 26
Contoh bentuk kompleks
isosurf.wrl
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 27
Membina bentuk menggunakanko-ordinat
Membina bentuk sama seperti melukis titik- ke- titik3D:
letakkan titik dalam lokasi 3Dhubungkan titik untuk hasilkan bentuk
Satu ko- ordinat tentukan locasi titik 3Ddiukur selari dengan sistem ko-ordinat asalan
Nod geometri tentukan bagaimana hendakhubungkan titik
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 28
Sintaks: CoordinateNod Coordinate mengandungi senarai ko- ordinatdigunakan untuk bina bentukCoordinate {
point [# X Y Z
2.0 1.0 3.04.0 2.5 5.3. . .
]}
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 29
Menggunakan ko-ordinat geometriBina bentuk berasaskan ko- ordinat menggunakannod geometri berikut:
PointSetIndexedLineSetIndexedFaceSet
Untuk ketiga- tiga nod di atas, guna nod Coordinate sebagai nilai medan coord
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 30
Sintaks: PointSetNod geometri PointSet hasilkan geometridaripada titik
satu titik (dot) diletakkan pada setiap ko-ordinatShape {
appearance Appearance { . . . }geometry PointSet {
coord Coordinate {point [ . . . ]
}color Color {
color [ . . . ]}
}}
6
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 31
Contoh penggunaan PointSet
ptplot.wrl
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 32
Sintaks: IndexedLineSetNod geometri IndexedLineSet hasilkan geometridaripada garisan
garisan lurus dilukis antara pasangan ko-ordinatyang dipilih
Shape {appearance Appearance { . . . }geometry IndexedLineSet {
coord Coordinate {point [ . . . ]
}coordIndex [ . . . ]
}}
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 33
Penggunaan IndexedLineSetSetiap ko- ordinat dalam nod Coordinate dinomborkan secara jelas:
Indeks 0 ialah ko-ordinat pertamaIndeks 1 ialah ko-ordinat kedua dan seterusnya
Untuk hasilkan bentuk daripada garisan:buatkan senarai ko-ordinat menggunakan indekssenaraikan indeks ko-ordinat dalam medancoordIndex bagi node IndexedLineSet
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 34
Penggunaan senarai indeksIndexedLineSet
Garisan dibuat antara pasangan indeks ko- ordinat-1 merujuk kepada break pada garisangarisan tidak dilukis secara automatik daripadaindeks terakhir kembali kepada indeks pertama
coordIndex [ 1, 0, 3, 8, -1, 5, 9, 0 ]1, 0, 3, 8, Lukis garisan daripada 1 0 3 8-1 Tamat garisan, mulakan berikutnya5, 9, 0 Lukia garisan daripada 5 9 0
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 35
Contoh penggunaanIndexedLineSet
lnplot.wrl
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 36
Sintaks: IndexedFaceSetNod geometri IndexedFaceSet hasilkan geometridaripada permukaan
sebuah permukaan rata (polygon) dilukis denganmenggunakan outline yang ditentukan oleh indeksko-ordinat
Shape {appearance Appearance { . . . }geometry IndexedFaceSet {
coord Coordinate {point [ . . . ]
}coordIndex [ . . . ]
}}
7
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 37
Penggunaan senarai indeks set koordinat
Untuk bina permukaan bentukbina senarai ko-ordinat, dengan menggunakanindekssenaraikan indeks ko-ordinat dalam medancoordIndex pada nod IndexedFaceSet
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 38
Penggunaan senarai indekskoordinat permukaan
Segitiga dilukis dengan menghubungkan indeksko- ordinat
-1 rujuk kepada break pada jujukansetiap permukaan di litupi secara automatik, hubungkan indeks terakhir kembali kepada indekspertama
coordIndex [ 1, 0, 3, 8, -1, 5, 9, 0 ]1, 0, 3, 8 lukis permukaan daripada 1 0 3 8 1-1 tamat permukaan, mula berikutnya5, 9, 0 lukis permukaan daripada 5 9 0 5
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 39
Contoh bentuk dengan nod IndexedFaceSet
lightng.wrl
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 40
Sintaks: IndexedFaceSetNod geometry IndexedFaceSet hasilkan gemetrydaripada permukaan
solid - permukaan paduccw - permukaan dalam arah lawan jamconvex - permukaan cembung
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 41
IndexedFaceSet: ContohShape {
appearance Appearance { . . . . }geometry IndexedFaceSet {
coord Coordinate { . . . }coordIndex [ . . . ]solid TRUEccw TRUEconvex TRUE
}} TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah
Penggunaan kawalan bentukBentuk solid adalah kes di mana kandungandalam tidak dapat dilihat
jika solid TRUE, bahagian belakang (dalam) permukaan tidak dilukis
Permukaan hadapan mempunyai ko- ordinatdalam susunan lawan jam
jika ccw FALSE, bahagian satu lagi di hadapanPermukaan sentiasa diandaikan cembung
jika convex FALSE, permukaan cekung secaraautomatik dipecahkan kepeda berbilang permukaancembung
8
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 43
Sintaks: CoordinateInterpolatorNod CoordinateInterpolator jelaskan laluan ko-ordinat
keys - pecahan utamavalues - senarai ko-ordinat utama (senarai X, Y, Z)
Coordinate Interpolator {key [ 0.0, . . . ]keyValue [ 0.0 1.0 0.0, . . . ]
}
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 44
Interpolasi senarai ko-ordinatNod CoordinateInterpolator interpolasikan senaraiko- ordinat
setiap output adalah senarai ko-ordinatjika n output ko-ordinat diperlukan untuk t kali pecahan
n x t ko-ordinat diperlukan dalam senarai nilai utama
TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd [email protected] 45
Contoh penggunaan nod CoordinateInterpolator
wiggle.wrl
Top Related