Th3813 07 sensor & geometri

Post on 03-Aug-2015

36 views 0 download

Transcript of Th3813 07 sensor & geometri

1

1

TH3813 Realiti MayaAnimasi, Pengesan & Geometri

2

Mengesani tindakanpemerhati

TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 8

ContohTransform {

children [DEF ToucheSensor { }

Shape { . . . }]

}

TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 10

Contoh penggunaan TouchSensor

Kiub yang berputar apabila pemerhati lalukancursor ke arahnya

TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noahsamn@ftsm.ukm.my 11

Contoh penggunaan nod TouchSensor

colors.wrl

TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 13

Contoh penggunaanSphereSensor

Bentuk yang berputar (sama seperti sfera berputar) apabila pemerhati menariknya

TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 16

Contoh penggunaanCylinderSensor

Bentuk yang berputar pada paksi Y (sama sepertisilinder berputar) apabila pemerhati menariknya

TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 22

Contoh penggunaan pengesanberbilang

Kiub yang berputar apabila cursor pemerhatimelaluinya dan beranjak apabila pemerhati

menariknya

TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 26

Contoh bentuk kompleks

isosurf.wrl

TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 31

Contoh penggunaan PointSet

ptplot.wrl

TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 35

Contoh penggunaanIndexedLineSet

lnplot.wrl

TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 39

Contoh bentuk dengan nod IndexedFaceSet

lightng.wrl

TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 41

IndexedFaceSet: ContohShape {

appearance Appearance { . . . . }geometry IndexedFaceSet {

coord Coordinate { . . . }coordIndex [ . . . ]solid TRUEccw TRUEconvex TRUE

}} TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah

samn@ftsm.ukm.my 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

8

TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 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 Noahsamn@ftsm.ukm.my 45

Contoh penggunaan nod CoordinateInterpolator

wiggle.wrl