Web-grafika (VRML) 6. gyakorlat Nyitrai Erika Varga Balázs alapján Kereszty Gábor
Animációk folytatás Állandó animációk Eseményvezérelt animációk
Vezérelt animációk Egy VRML világbeli eseményt észlel egy érzékelő, és a ROUTER-eken keresztül küld üzenetet az időzítőnek.Egy VRML világbeli eseményt észlel egy érzékelő, és a ROUTER-eken keresztül küld üzenetet az időzítőnek. Az eseményvezérelt animáció működése ugyanolyan, mint az állandóé, viszont itt a külső események befolyással lehetnek.Az eseményvezérelt animáció működése ugyanolyan, mint az állandóé, viszont itt a külső események befolyással lehetnek.
Érzékelők Érzékelő neve Csomópont neve Mit érzékel? Érintés szenzor TouchSensor Érintést és kattintást érzékel Közeledés szenzor ProximitySensor Közeledést érzékel Eltolás szenzor PlaneSensor Egérrel való mozgatást érzékel
Érzékelők Gömb szenzor SphereSensor Tetszőleges tengelyek körül forgat Henger szenzor CylinderSensor Adott tengely körül forgat Láthatóság szenzor VisibilitySensor Aktuális nézőpontunkból látható e az objektum Ütközés szenzor Collision Ütközéseket érzékel
Érzékelők kötése Néhány érzékelőt objektumhoz kell kötni. Ez azt jelenti, hogy egy közös csomópont gyereke kell legyen mind az objektum, mind az érzékelő. Ilyen lehet például a Group vagy a Transform csomópont children mezőjeNéhány érzékelőt objektumhoz kell kötni. Ez azt jelenti, hogy egy közös csomópont gyereke kell legyen mind az objektum, mind az érzékelő. Ilyen lehet például a Group vagy a Transform csomópont children mezője Ezek a következők: TouchSensor, Plane-, Cylinder-, SphereSensorEzek a következők: TouchSensor, Plane-, Cylinder-, SphereSensor Az utóbbi 3-at másnéven mozgató- szenzoroknak is szoktuk hívniAz utóbbi 3-at másnéven mozgató- szenzoroknak is szoktuk hívni
Érintő szenzor TouchSensor {exposedField SFBool enabledTRUE eventOut SFBoolisActive eventOut SFBoolisOver eventOut SFTimetouchTime eventOut SFVec3fhitNormal_changed eventOut SFVec3fhitPoint_changed eventOut SFVec3fhitTexCoord_changed }
Közeledés szenzor ProximitySensor {exposedField SFBool enabledTRUE exposedField SFVec3f center0 0 0 exposedField SFVec3f size0 0 0 eventOut SFBoolisActive eventOut SFTimeenterTime eventOut SFTimeexitTime eventOut SFVec3fposition_changed eventOut SFRotationorientation_changed }
Láthatóság szenzor VisibilitySensor {exposedField SFBool enabledTRUE exposedField SFVec3f center0 0 0 exposedField SFVec3f size0 0 0 eventOut SFBoolisActive eventOut SFTimeenterTime eventOut SFTimeexitTime }
Ütközés szenzor Collision {exposedField SFBool collideTRUE exposedField MFNode children[ ] field SFVec3f bboxCenter0 0 0 field SFVec3f bboxSize field SFNode proxyNULL eventIn MFNodeaddChildren eventIn MFNoderemoveChildren eventOut SFTimecollideTime }
Eltolás szenzor PlaneSensor {exposedField SFBool enabledTRUE exposedField SFVec3f offset0 0 0 exposedField SFVec2f maxPosition-1 -1 exposedField SFVec2f minPosition0 0 exposedField SFBool autoOffsetTRUE eventOut SFBoolisActive eventOut SFVec3ftrackPoint_changed eventOut SFVec3ftranslation_changed }
Gömb szenzor SphereSensor {exposedField SFBool enabledTRUE exposedField SFRotation offset exposedField SFBool autoOffsetTRUE eventOut SFBoolisActive eventOut SFVec3ftrackPoint_changed eventOut SFRotationrotation_changed }
Henger szenzor CylinderSensor {exposedField SFBool enabledTRUE exposedField SFFloat diskAngle0.262 exposedField SFFloat maxAngle-1 exposedField SFFloat minAngle0 exposedField SFBool autoOffsetTRUE exposedField SFFloat offset0 eventOut SFBoolisActive eventOut SFVec3ftrackPoint_changed eventOut SFRotationrotation_changed }
Vezérelt animációk Egy példa: kék kockát forgatunk henger szenzorral DEF forg Transform{ rotation children [ Shape {appearance Appearance {material Material{ diffuseColor 0 0 1}} geometry Box{}}, DEF szenzor CylinderSensor{}]} ROUTE szenzor.rotation_changed TO forg.set_rotation
Animáció: Feladat Készítsünk egy duplaszárnyú lengőajtót. Az egyik szárnyat „kézzel” tudjuk nyitni, míg a másik „fotocellás” legyen. Természetesen egyiken se tudjunk átmenni, mindkettőnek a maximum kitérése 90 fok legyen, és a fotocellás ajtó se vágjon hátba minket!