Th3813 07 sensor & geometri

8
1 TH3813 Realiti Maya Animasi, Pengesan & Geometri 2 Mengesani tindakan pemerhati TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah [email protected] 3 Latarbelakang Boleh mengesan bila cursor pemerhati: berada pada satu bentuk “menyentuh” bentuk “menarik” bentuk Boleh trigger animasi disebabkan sentuhan pemerhati Benarkan pemerhati gerakkan dan putarkan bentuk TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah [email protected] 4 Penggunaan pengesan tindakan Terdapat 4 jenis pengesan tindakan: TouchSensor - kesan sentuhan SphereSensor - kesan penarikan (drag) CylinderSensor - kesan penarikan PlaneSensor - kesan penarikan Nod Anchor ialah satu pengesan tindakan yang khusus TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah [email protected] 5 Mengesani bentuk Semua pengesan tindakan kesan semua bentuk dalam kumpulan yang sama Pengesan akan trigger apabila cursor pemerhati menyentuh bentuk TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah [email protected] 6 Sintaks: TouchSensor Nod TouchSensor kesan sentuhan cursor isOver - hantar true/false apabila cursor over/not over isActive - hantar true/false bila butang tetikus ditekan / dilepaskan touchTime - hantar masa bila lapaskan butang tetikus

Transcript of Th3813 07 sensor & geometri

Page 1: Th3813 07 sensor & geometri

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

Page 2: Th3813 07 sensor & geometri

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

Page 3: Th3813 07 sensor & geometri

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

Page 4: Th3813 07 sensor & geometri

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

Page 5: Th3813 07 sensor & geometri

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 [ . . . ]}

}}

Page 6: Th3813 07 sensor & geometri

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 [ . . . ]

}}

Page 7: Th3813 07 sensor & geometri

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

[email protected] 42

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

Page 8: Th3813 07 sensor & geometri

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