SlideShare a Scribd company logo
1 of 8
Download to read offline
TH3813 Realiti Maya

Animasi, Pengesan & Geometri

Mengesani tindakan
pemerhati
1

Latarbelakang

Penggunaan pengesan tindakan

Boleh mengesan bila cursor pemerhati:

Terdapat 4 jenis pengesan tindakan:

berada pada satu bentuk
“menyentuh” bentuk
“menarik” bentuk

TouchSensor - kesan sentuhan
SphereSensor - kesan penarikan (drag)
CylinderSensor - kesan penarikan
PlaneSensor - kesan penarikan

Boleh trigger animasi disebabkan sentuhan
pemerhati
Benarkan pemerhati gerakkan dan putarkan
bentuk
TH3813 07 VRML 5

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

Nod Anchor ialah satu pengesan tindakan yang
khusus

3

Mengesani bentuk

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

TH3813 07 VRML 5

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

4

Sintaks: TouchSensor

Semua pengesan tindakan kesan semua bentuk
dalam kumpulan yang sama
Pengesan akan trigger apabila cursor pemerhati
menyentuh bentuk

TH3813 07 VRML 5

2

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

5

TH3813 07 VRML 5

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

6

1
Sintaks: TouchSensor
TouchSensor {
enabled
isActive
isOver
touchTime
hitPoint_changed
hitNormal_changed
hitTexCoord_changed
}
TH3813 07 VRML 5

TRUE #exposedField
#eventOut
#eventOut
#eventOut
#eventOut
#eventOut
#eventOut

Contoh
Transform {
children [
DEF ToucheSensor { }
Shape { . . . }
]
}

SFBool
SFBool
SFBool
SFTime
SFVec3f
SFVec3f
SFVec2f

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

7

Contoh penggunaan TouchSensor

TH3813 07 VRML 5

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

8

Contoh penggunaan TouchSensor

DEF Touch TouchSensor { }
DEF Timer1 TimeSensor { . . . }
DEF Rot1 OrientationInterpolator { . . . }
DEF Frame1 Transform {
children [
Shape { . . . }
]
}

Kiub yang berputar apabila pemerhati lalukan
cursor ke arahnya

ROUTE Touch.touchTime
TO Timer1.set_startTime
ROUTE Timer1.fraction_changed TO Rot1.set_fraction
ROUTE Rot1.value_changed
TO Frame1.set_rotation
TH3813 07 VRML 5

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

9

Contoh penggunaan nod
TouchSensor

TH3813 07 VRML 5

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

10

Sintaks: SphereSensor
Nod SphereSensor kesan penarikan (draf) cursor
dan hasilkan putaran sama spt sfera
isActive - hantar true/false bila butang tetikus
ditekan/dilepaskan
rotation_changed - hantar putaran sebagai output
ketika penarikan

colors.wrl
TH3813 07 VRML 5

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

11

Transform {
children [
DEF Rotator SphereSensor { }
DEF RotateMe Transform { . . . }
]
}
© Dr. Shahrul TO Mohd Noah
ROUTE Rotator.rotation_changedAzman RotateMe.set_rotation
TH3813 07 VRML 5
samn@ftsm.ukm.my

12

2
Contoh penggunaan
SphereSensor

Sintaks: SphereSensor
TouchSensor {
enabled
autoOffset
offset
0.0 1.0 0.0
isActive
rotation_changed
trackPoint_changed
}

Bentuk yang berputar (sama seperti sfera berputar)
apabila pemerhati menariknya
TH3813 07 VRML 5

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

13

TH3813 07 VRML 5

TRUE #exposedField
TRUE # exposedField
0.0
# exposedField
#eventOut
#eventOut
#eventOut

SFBool
SFBool
SFRotation
SFBool
SFRotation
SFVec3f

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

14

Contoh penggunaan
CylinderSensor

Sintaks: CylinderSensor
Nod CylinderSensor kesan penarikan cursor dan
janakan putaran seperti sama spt putaran silinder
isActive - hantar true/false bila butang tetikus
ditekan/dilepaskan
rotation_changed - hantar putaran sebagai output
ketika penarikan
Transform {
children [
DEF Rotator CylinderSensor { }
DEF RotateMe Transform { . . . }
]
}
ROUTE Rotator.rotation_changed TO RotateMe.set_rotation
© Dr. Shahrul Azman Mohd Noah

TH3813 07 VRML 5

samn@ftsm.ukm.my

Bentuk yang berputar pada paksi Y (sama seperti
silinder berputar) apabila pemerhati menariknya
15

Sintaks: CylinderSensor
TouchSensor {
enabled
diskAngle
autooffset
offset
maxAngle
minAngle
isActive
rotation_changed
trackPoint_changed
}
TH3813 07 VRML 5

TRUE
0.262
TRUE
0.0
0.0

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

16

Sintaks: PlaneSensor
Nod PlaneSensor kesan penarikan cursor dan
janakan translasi

#exposedField SFBool
# exposedField SFFloat
# exposedField SFBool
# exposedField SFFloat
#eventOut
SFBool
#eventOut
SFFloat
#eventOut
SFBool
#eventOut
SFRotation
#eventOut
SFVec3f

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

TH3813 07 VRML 5

isActive - hantar true/false bila butang tetikus
ditekan/dilepaskan
rotation_changed - hantar translasi sebagai output
ketika penarikan

17

Transform {
children [
DEF Mover PlaneSensor { }
DEF MoveMe Transform { . . . }
]
}
ROUTE Mover.translation Dr. Shahrul Azman Mohd Noah
© TO MoveMe.set_rotation

TH3813 07 VRML 5

samn@ftsm.ukm.my

18

3
Contoh penggunaan PlaneSensor

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

TouchSensor {
enabled
TRUE
autoOffset
TRUE
offset
0.0 0.0 0.0
maxPosition
-1.0 -1.0
minPosition
0.0 0.0
isActive
translation_changed
trackPoint_changed
}

19

TH3813 07 VRML 5

#exposedField
# exposedField
# exposedField
#eventOut
#eventOut
#eventOut
#eventOut
#eventOut

SFBool
SFBool
SFVec3f
SFVec2f
SFVec2f
SFBool
SFVec3f
SFVec3f

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

20

Contoh penggunaan pengesan
berbilang

Penggunaan pengesan berbilang
Pengesan berbilang boleh mengesan bentuk
yang sama tapi:
jika pengesan dalam kumpulan yang sama
semua bentuk akan respon

jika pengesan berada dalam hieraki kedalaman
berbeza:
pengesan terdalam akan respon
yang lain tidak akan respon

TH3813 07 VRML 5

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

Kiub yang berputar apabila cursor pemerhati
melaluinya dan beranjak apabila pemerhati
menariknya
21

TH3813 07 VRML 5

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

22

Contoh penggunaan pengesan
berbilang

Membina bentuk
daripada titik, garis &
permukaan
Lampu meja yang boleh diubahsuai dengan
menggunakan pengesan tersarang
TH3813 07 VRML 5

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

23

24

4
Latarbelakang

Contoh bentuk kompleks

Bentuk kompleks sukar dihasilkan dengna
menggunakan bentuk asas:
Haiwan
Pokok
Mesin dll

Oleh itu, bina bentuk dengan menggunakan
komponen atomik:
titik, baris dan permukaan
TH3813 07 VRML 5

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

isosurf.wrl
25

Membina bentuk menggunakan
ko-ordinat
letakkan titik dalam lokasi 3D
hubungkan titik untuk hasilkan bentuk

Satu ko o
- rdinat tentukan locasi titik 3D
diukur selari dengan sistem ko-ordinat asalan

Nod geometri tentukan bagaimana hendak
hubungkan titik
© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

27

Menggunakan ko-ordinat geometri
Bina bentuk berasaskan ko o
- rdinat menggunakan
nod geometri berikut:
PointSet
IndexedLineSet
IndexedFaceSet

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

26

Nod Coordinate mengandungi senarai ko o
- rdinat
digunakan untuk bina bentuk
Coordinate {
point [
#
X
Y Z
2.0 1.0 3.0
4.0 2.5 5.3
...
]
}
© Dr. Shahrul Azman Mohd Noah

TH3813 07 VRML 5

samn@ftsm.ukm.my

28

Sintaks: PointSet
Nod geometri PointSet hasilkan geometri
daripada titik
satu titik (dot) diletakkan pada setiap ko-ordinat

Untuk ketiga tiga nod di atas, guna nod
Coordinate sebagai nilai medan coord

TH3813 07 VRML 5

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

Sintaks: Coordinate

Membina bentuk sama seperti melukis titik k titik
- e
3D:

TH3813 07 VRML 5

TH3813 07 VRML 5

29

Shape {
appearance Appearance { . . . }
geometry PointSet {
coord Coordinate {
point [ . . . ]
}
color Color {
color [ . . . ]
}
}
© Dr. Shahrul Azman Mohd Noah
TH3813}07 VRML 5
samn@ftsm.ukm.my

30

5
Contoh penggunaan PointSet

Sintaks: IndexedLineSet
Nod geometri IndexedLineSet hasilkan geometri
daripada garisan
garisan lurus dilukis antara pasangan ko-ordinat
yang dipilih

ptplot.wrl
TH3813 07 VRML 5

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

31

Setiap ko o
- rdinat dalam nod Coordinate di
nomborkan secara jelas:

samn@ftsm.ukm.my

32

Garisan dibuat antara pasangan indeks ko o
- rdinat
-1 merujuk kepada break pada garisan
garisan tidak dilukis secara automatik daripada
indeks 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 berikutnya
5, 9, 0
Lukia garisan daripada 5 9 0

Indeks 0 ialah ko-ordinat pertama
Indeks 1 ialah ko-ordinat kedua dan seterusnya

Untuk hasilkan bentuk daripada garisan:
buatkan senarai ko-ordinat menggunakan indeks
senaraikan indeks ko-ordinat dalam medan
coordIndex bagi node IndexedLineSet
© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

TH3813 07 VRML 5

Penggunaan senarai indeks
IndexedLineSet

Penggunaan IndexedLineSet

TH3813 07 VRML 5

Shape {
appearance Appearance { . . . }
geometry IndexedLineSet {
coord Coordinate {
point [ . . . ]
}
coordIndex [ . . . ]
}
}
© Dr. Shahrul Azman Mohd Noah

33

Contoh penggunaan
IndexedLineSet

TH3813 07 VRML 5

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

34

Sintaks: IndexedFaceSet
Nod geometri IndexedFaceSet hasilkan geometri
daripada permukaan
sebuah permukaan rata (polygon) dilukis dengan
menggunakan outline yang ditentukan oleh indeks
ko-ordinat

lnplot.wrl
TH3813 07 VRML 5

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

35

Shape {
appearance Appearance { . . . }
geometry IndexedFaceSet {
coord Coordinate {
point [ . . . ]
}
coordIndex [ . . . ]
© Dr. Shahrul Azman Mohd Noah
}
TH3813 07 VRML 5
samn@ftsm.ukm.my
}

36

6
Penggunaan senarai indeks set
koordinat

Penggunaan senarai indeks
koordinat permukaan

Untuk bina permukaan bentuk

Segitiga dilukis dengan menghubungkan indeks
ko o
- rdinat

bina senarai ko-ordinat, dengan menggunakan
indeks
senaraikan indeks ko-ordinat dalam medan
coordIndex pada nod IndexedFaceSet

-1 rujuk kepada break pada jujukan
setiap permukaan di litupi secara automatik,
hubungkan indeks terakhir kembali kepada indeks
pertama
coordIndex [ 1, 0, 3, 8, -1, 5, 9, 0 ]
1, 0, 3, 8
lukis permukaan daripada 1
0 3
-1
tamat permukaan, mula berikutnya
5, 9, 0
lukis permukaan daripada 5
9
0

TH3813 07 VRML 5

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

37

Contoh bentuk dengan nod
IndexedFaceSet

TH3813 07 VRML 5

8

1

5

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

38

Sintaks: IndexedFaceSet
Nod geometry IndexedFaceSet hasilkan gemetry
daripada permukaan
solid - permukaan padu
ccw - permukaan dalam arah lawan jam
convex - permukaan cembung

lightng.wrl
TH3813 07 VRML 5

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

39

IndexedFaceSet: Contoh
Shape {
appearance Appearance { . . . . }
geometry IndexedFaceSet {
coord Coordinate { . . . }
coordIndex [ . . . ]
solid TRUE
ccw TRUE
convex TRUE
}
© Dr. Shahrul Azman Mohd Noah
TH3813 07 VRML 5
}
samn@ftsm.ukm.my

TH3813 07 VRML 5

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

40

Penggunaan kawalan bentuk
Bentuk solid adalah kes di mana kandungan
dalam tidak dapat dilihat
jika solid TRUE, bahagian belakang (dalam)
permukaan tidak dilukis

Permukaan hadapan mempunyai ko o
- rdinat
dalam susunan lawan jam
jika ccw FALSE, bahagian satu lagi di hadapan

Permukaan sentiasa diandaikan cembung
41

jika convex FALSE, permukaan cekung secara
automatik dipecahkan kepeda berbilang permukaan
© Dr. Shahrul Azman Mohd Noah
42
samn@ftsm.ukm.my
cembung

TH3813 07 VRML 5

7
Sintaks: CoordinateInterpolator

Interpolasi senarai ko-ordinat

Nod CoordinateInterpolator jelaskan laluan ko
ordinat

Nod CoordinateInterpolator interpolasikan senarai
ko o
- rdinat

keys - pecahan utama
values - 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 Noah
samn@ftsm.ukm.my

43

setiap output adalah senarai ko-ordinat
jika 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 Noah
samn@ftsm.ukm.my

44

Contoh penggunaan nod
CoordinateInterpolator

wiggle.wrl
TH3813 07 VRML 5

© Dr. Shahrul Azman Mohd Noah
samn@ftsm.ukm.my

45

8

More Related Content

More from Masyarah Zulhaida

Th3813 12 kawalan perincian & skrip
Th3813 12 kawalan perincian & skripTh3813 12 kawalan perincian & skrip
Th3813 12 kawalan perincian & skripMasyarah Zulhaida
 
Th3813 11 cahaya & persekitaran
Th3813 11 cahaya & persekitaranTh3813 11 cahaya & persekitaran
Th3813 11 cahaya & persekitaranMasyarah Zulhaida
 
Th3813 02 sistem ko ordinat & transformasi
Th3813 02 sistem ko ordinat & transformasiTh3813 02 sistem ko ordinat & transformasi
Th3813 02 sistem ko ordinat & transformasiMasyarah Zulhaida
 
Th3813 08 geometri (grid & extrusion)
Th3813 08 geometri (grid & extrusion)Th3813 08 geometri (grid & extrusion)
Th3813 08 geometri (grid & extrusion)Masyarah Zulhaida
 

More from Masyarah Zulhaida (6)

Th3813 12 kawalan perincian & skrip
Th3813 12 kawalan perincian & skripTh3813 12 kawalan perincian & skrip
Th3813 12 kawalan perincian & skrip
 
Th3813 11 cahaya & persekitaran
Th3813 11 cahaya & persekitaranTh3813 11 cahaya & persekitaran
Th3813 11 cahaya & persekitaran
 
Th3813 05 bentuk & geometri
Th3813 05 bentuk & geometriTh3813 05 bentuk & geometri
Th3813 05 bentuk & geometri
 
Th3813 02 sistem ko ordinat & transformasi
Th3813 02 sistem ko ordinat & transformasiTh3813 02 sistem ko ordinat & transformasi
Th3813 02 sistem ko ordinat & transformasi
 
Th3813 08 geometri (grid & extrusion)
Th3813 08 geometri (grid & extrusion)Th3813 08 geometri (grid & extrusion)
Th3813 08 geometri (grid & extrusion)
 
Realiti Maya: Pengenalan
Realiti Maya: PengenalanRealiti Maya: Pengenalan
Realiti Maya: Pengenalan
 

Th3813 07 sensor & geometri

  • 1. TH3813 Realiti Maya Animasi, Pengesan & Geometri Mengesani tindakan pemerhati 1 Latarbelakang Penggunaan pengesan tindakan Boleh mengesan bila cursor pemerhati: Terdapat 4 jenis pengesan tindakan: berada pada satu bentuk “menyentuh” bentuk “menarik” bentuk TouchSensor - kesan sentuhan SphereSensor - kesan penarikan (drag) CylinderSensor - kesan penarikan PlaneSensor - kesan penarikan Boleh trigger animasi disebabkan sentuhan pemerhati Benarkan pemerhati gerakkan dan putarkan bentuk TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my Nod Anchor ialah satu pengesan tindakan yang khusus 3 Mengesani bentuk © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my 4 Sintaks: TouchSensor Semua pengesan tindakan kesan semua bentuk dalam kumpulan yang sama Pengesan akan trigger apabila cursor pemerhati menyentuh bentuk TH3813 07 VRML 5 2 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 5 TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my 6 1
  • 2. Sintaks: TouchSensor TouchSensor { enabled isActive isOver touchTime hitPoint_changed hitNormal_changed hitTexCoord_changed } TH3813 07 VRML 5 TRUE #exposedField #eventOut #eventOut #eventOut #eventOut #eventOut #eventOut Contoh Transform { children [ DEF ToucheSensor { } Shape { . . . } ] } SFBool SFBool SFBool SFTime SFVec3f SFVec3f SFVec2f © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my 7 Contoh penggunaan TouchSensor TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my 8 Contoh penggunaan TouchSensor DEF Touch TouchSensor { } DEF Timer1 TimeSensor { . . . } DEF Rot1 OrientationInterpolator { . . . } DEF Frame1 Transform { children [ Shape { . . . } ] } Kiub yang berputar apabila pemerhati lalukan cursor ke arahnya ROUTE Touch.touchTime TO Timer1.set_startTime ROUTE Timer1.fraction_changed TO Rot1.set_fraction ROUTE Rot1.value_changed TO Frame1.set_rotation TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my 9 Contoh penggunaan nod TouchSensor TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my 10 Sintaks: SphereSensor Nod SphereSensor kesan penarikan (draf) cursor dan hasilkan putaran sama spt sfera isActive - hantar true/false bila butang tetikus ditekan/dilepaskan rotation_changed - hantar putaran sebagai output ketika penarikan colors.wrl TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my 11 Transform { children [ DEF Rotator SphereSensor { } DEF RotateMe Transform { . . . } ] } © Dr. Shahrul TO Mohd Noah ROUTE Rotator.rotation_changedAzman RotateMe.set_rotation TH3813 07 VRML 5 samn@ftsm.ukm.my 12 2
  • 3. Contoh penggunaan SphereSensor Sintaks: SphereSensor TouchSensor { enabled autoOffset offset 0.0 1.0 0.0 isActive rotation_changed trackPoint_changed } Bentuk yang berputar (sama seperti sfera berputar) apabila pemerhati menariknya TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my 13 TH3813 07 VRML 5 TRUE #exposedField TRUE # exposedField 0.0 # exposedField #eventOut #eventOut #eventOut SFBool SFBool SFRotation SFBool SFRotation SFVec3f © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my 14 Contoh penggunaan CylinderSensor Sintaks: CylinderSensor Nod CylinderSensor kesan penarikan cursor dan janakan putaran seperti sama spt putaran silinder isActive - hantar true/false bila butang tetikus ditekan/dilepaskan rotation_changed - hantar putaran sebagai output ketika penarikan Transform { children [ DEF Rotator CylinderSensor { } DEF RotateMe Transform { . . . } ] } ROUTE Rotator.rotation_changed TO RotateMe.set_rotation © Dr. Shahrul Azman Mohd Noah TH3813 07 VRML 5 samn@ftsm.ukm.my Bentuk yang berputar pada paksi Y (sama seperti silinder berputar) apabila pemerhati menariknya 15 Sintaks: CylinderSensor TouchSensor { enabled diskAngle autooffset offset maxAngle minAngle isActive rotation_changed trackPoint_changed } TH3813 07 VRML 5 TRUE 0.262 TRUE 0.0 0.0 © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my 16 Sintaks: PlaneSensor Nod PlaneSensor kesan penarikan cursor dan janakan translasi #exposedField SFBool # exposedField SFFloat # exposedField SFBool # exposedField SFFloat #eventOut SFBool #eventOut SFFloat #eventOut SFBool #eventOut SFRotation #eventOut SFVec3f © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my TH3813 07 VRML 5 isActive - hantar true/false bila butang tetikus ditekan/dilepaskan rotation_changed - hantar translasi sebagai output ketika penarikan 17 Transform { children [ DEF Mover PlaneSensor { } DEF MoveMe Transform { . . . } ] } ROUTE Mover.translation Dr. Shahrul Azman Mohd Noah © TO MoveMe.set_rotation TH3813 07 VRML 5 samn@ftsm.ukm.my 18 3
  • 4. Contoh penggunaan PlaneSensor Sintaks: 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 Noah samn@ftsm.ukm.my TouchSensor { enabled TRUE autoOffset TRUE offset 0.0 0.0 0.0 maxPosition -1.0 -1.0 minPosition 0.0 0.0 isActive translation_changed trackPoint_changed } 19 TH3813 07 VRML 5 #exposedField # exposedField # exposedField #eventOut #eventOut #eventOut #eventOut #eventOut SFBool SFBool SFVec3f SFVec2f SFVec2f SFBool SFVec3f SFVec3f © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my 20 Contoh penggunaan pengesan berbilang Penggunaan pengesan berbilang Pengesan berbilang boleh mengesan bentuk yang sama tapi: jika pengesan dalam kumpulan yang sama semua bentuk akan respon jika pengesan berada dalam hieraki kedalaman berbeza: pengesan terdalam akan respon yang lain tidak akan respon TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my Kiub yang berputar apabila cursor pemerhati melaluinya dan beranjak apabila pemerhati menariknya 21 TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my 22 Contoh penggunaan pengesan berbilang Membina bentuk daripada titik, garis & permukaan Lampu meja yang boleh diubahsuai dengan menggunakan pengesan tersarang TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my 23 24 4
  • 5. Latarbelakang Contoh bentuk kompleks Bentuk kompleks sukar dihasilkan dengna menggunakan bentuk asas: Haiwan Pokok Mesin dll Oleh itu, bina bentuk dengan menggunakan komponen atomik: titik, baris dan permukaan TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my isosurf.wrl 25 Membina bentuk menggunakan ko-ordinat letakkan titik dalam lokasi 3D hubungkan titik untuk hasilkan bentuk Satu ko o - rdinat tentukan locasi titik 3D diukur selari dengan sistem ko-ordinat asalan Nod geometri tentukan bagaimana hendak hubungkan titik © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my 27 Menggunakan ko-ordinat geometri Bina bentuk berasaskan ko o - rdinat menggunakan nod geometri berikut: PointSet IndexedLineSet IndexedFaceSet © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my 26 Nod Coordinate mengandungi senarai ko o - rdinat digunakan untuk bina bentuk Coordinate { point [ # X Y Z 2.0 1.0 3.0 4.0 2.5 5.3 ... ] } © Dr. Shahrul Azman Mohd Noah TH3813 07 VRML 5 samn@ftsm.ukm.my 28 Sintaks: PointSet Nod geometri PointSet hasilkan geometri daripada titik satu titik (dot) diletakkan pada setiap ko-ordinat Untuk ketiga tiga nod di atas, guna nod Coordinate sebagai nilai medan coord TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my Sintaks: Coordinate Membina bentuk sama seperti melukis titik k titik - e 3D: TH3813 07 VRML 5 TH3813 07 VRML 5 29 Shape { appearance Appearance { . . . } geometry PointSet { coord Coordinate { point [ . . . ] } color Color { color [ . . . ] } } © Dr. Shahrul Azman Mohd Noah TH3813}07 VRML 5 samn@ftsm.ukm.my 30 5
  • 6. Contoh penggunaan PointSet Sintaks: IndexedLineSet Nod geometri IndexedLineSet hasilkan geometri daripada garisan garisan lurus dilukis antara pasangan ko-ordinat yang dipilih ptplot.wrl TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my 31 Setiap ko o - rdinat dalam nod Coordinate di nomborkan secara jelas: samn@ftsm.ukm.my 32 Garisan dibuat antara pasangan indeks ko o - rdinat -1 merujuk kepada break pada garisan garisan tidak dilukis secara automatik daripada indeks 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 berikutnya 5, 9, 0 Lukia garisan daripada 5 9 0 Indeks 0 ialah ko-ordinat pertama Indeks 1 ialah ko-ordinat kedua dan seterusnya Untuk hasilkan bentuk daripada garisan: buatkan senarai ko-ordinat menggunakan indeks senaraikan indeks ko-ordinat dalam medan coordIndex bagi node IndexedLineSet © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my TH3813 07 VRML 5 Penggunaan senarai indeks IndexedLineSet Penggunaan IndexedLineSet TH3813 07 VRML 5 Shape { appearance Appearance { . . . } geometry IndexedLineSet { coord Coordinate { point [ . . . ] } coordIndex [ . . . ] } } © Dr. Shahrul Azman Mohd Noah 33 Contoh penggunaan IndexedLineSet TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my 34 Sintaks: IndexedFaceSet Nod geometri IndexedFaceSet hasilkan geometri daripada permukaan sebuah permukaan rata (polygon) dilukis dengan menggunakan outline yang ditentukan oleh indeks ko-ordinat lnplot.wrl TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my 35 Shape { appearance Appearance { . . . } geometry IndexedFaceSet { coord Coordinate { point [ . . . ] } coordIndex [ . . . ] © Dr. Shahrul Azman Mohd Noah } TH3813 07 VRML 5 samn@ftsm.ukm.my } 36 6
  • 7. Penggunaan senarai indeks set koordinat Penggunaan senarai indeks koordinat permukaan Untuk bina permukaan bentuk Segitiga dilukis dengan menghubungkan indeks ko o - rdinat bina senarai ko-ordinat, dengan menggunakan indeks senaraikan indeks ko-ordinat dalam medan coordIndex pada nod IndexedFaceSet -1 rujuk kepada break pada jujukan setiap permukaan di litupi secara automatik, hubungkan indeks terakhir kembali kepada indeks pertama coordIndex [ 1, 0, 3, 8, -1, 5, 9, 0 ] 1, 0, 3, 8 lukis permukaan daripada 1 0 3 -1 tamat permukaan, mula berikutnya 5, 9, 0 lukis permukaan daripada 5 9 0 TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my 37 Contoh bentuk dengan nod IndexedFaceSet TH3813 07 VRML 5 8 1 5 © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my 38 Sintaks: IndexedFaceSet Nod geometry IndexedFaceSet hasilkan gemetry daripada permukaan solid - permukaan padu ccw - permukaan dalam arah lawan jam convex - permukaan cembung lightng.wrl TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my 39 IndexedFaceSet: Contoh Shape { appearance Appearance { . . . . } geometry IndexedFaceSet { coord Coordinate { . . . } coordIndex [ . . . ] solid TRUE ccw TRUE convex TRUE } © Dr. Shahrul Azman Mohd Noah TH3813 07 VRML 5 } samn@ftsm.ukm.my TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my 40 Penggunaan kawalan bentuk Bentuk solid adalah kes di mana kandungan dalam tidak dapat dilihat jika solid TRUE, bahagian belakang (dalam) permukaan tidak dilukis Permukaan hadapan mempunyai ko o - rdinat dalam susunan lawan jam jika ccw FALSE, bahagian satu lagi di hadapan Permukaan sentiasa diandaikan cembung 41 jika convex FALSE, permukaan cekung secara automatik dipecahkan kepeda berbilang permukaan © Dr. Shahrul Azman Mohd Noah 42 samn@ftsm.ukm.my cembung TH3813 07 VRML 5 7
  • 8. Sintaks: CoordinateInterpolator Interpolasi senarai ko-ordinat Nod CoordinateInterpolator jelaskan laluan ko ordinat Nod CoordinateInterpolator interpolasikan senarai ko o - rdinat keys - pecahan utama values - 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 Noah samn@ftsm.ukm.my 43 setiap output adalah senarai ko-ordinat jika 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 Noah samn@ftsm.ukm.my 44 Contoh penggunaan nod CoordinateInterpolator wiggle.wrl TH3813 07 VRML 5 © Dr. Shahrul Azman Mohd Noah samn@ftsm.ukm.my 45 8