160 likes | 315 Views
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. Eseményvezérelt animációk. Vezérelt animációk.
E N D
Web-grafika (VRML)6. gyakorlat Nyitrai ErikaVarga BalázsalapjánKereszty 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. • 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 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ője • Ezek a következők: TouchSensor, Plane-, Cylinder-, SphereSensor • Az utóbbi 3-at másnéven mozgató-szenzoroknak is szoktuk hívni
Érintő szenzor TouchSensor {exposedField SFBoolenabled TRUE eventOut SFBool isActive eventOut SFBool isOver eventOut SFTime touchTime eventOut SFVec3f hitNormal_changed eventOut SFVec3f hitPoint_changed eventOut SFVec3f hitTexCoord_changed }
Közeledés szenzor ProximitySensor {exposedField SFBoolenabled TRUE exposedField SFVec3fcenter 0 0 0 exposedField SFVec3fsize 0 0 0 eventOut SFBool isActive eventOut SFTime enterTime eventOut SFTime exitTime eventOut SFVec3f position_changed eventOut SFRotation orientation_changed }
Láthatóság szenzor VisibilitySensor {exposedField SFBoolenabled TRUE exposedField SFVec3fcenter 0 0 0 exposedField SFVec3fsize 0 0 0 eventOut SFBool isActive eventOut SFTime enterTime eventOut SFTime exitTime }
Ütközés szenzor Collision {exposedField SFBoolcollide TRUE exposedField MFNodechildren [ ] field SFVec3fbboxCenter 0 0 0 field SFVec3fbboxSize -1 -1 -1 field SFNodeproxy NULL eventIn MFNode addChildren eventIn MFNode removeChildren eventOut SFTime collideTime }
Eltolás szenzor PlaneSensor {exposedField SFBoolenabled TRUE exposedField SFVec3foffset 0 0 0 exposedField SFVec2fmaxPosition -1 -1 exposedField SFVec2fminPosition 0 0 exposedField SFBoolautoOffset TRUE eventOut SFBool isActive eventOut SFVec3f trackPoint_changed eventOut SFVec3f translation_changed }
Gömb szenzor SphereSensor {exposedField SFBoolenabled TRUE exposedField SFRotationoffset 0 1 0 0 exposedField SFBoolautoOffset TRUE eventOut SFBool isActive eventOut SFVec3f trackPoint_changed eventOut SFRotation rotation_changed }
Henger szenzor CylinderSensor {exposedField SFBoolenabled TRUE exposedField SFFloatdiskAngle 0.262 exposedField SFFloatmaxAngle -1 exposedField SFFloatminAngle 0 exposedField SFBoolautoOffset TRUE exposedField SFFloatoffset 0 eventOut SFBool isActive eventOut SFVec3f trackPoint_changed eventOut SFRotation rotation_changed }
Vezérelt animációk Egy példa:kék kockát forgatunk henger szenzorral DEF forg Transform{ rotation 0 0 0 0 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!