1 / 25

Създаване на анимации във VRML. Представяне на 3D сцена в WWW.

Мултимедия и основи на уеб дизайна. а с.Елена Първанова. Създаване на анимации във VRML. Представяне на 3D сцена в WWW. 2011. ТЕМА 1 6. Събития във VRML. VRML 2.0 предоставя възможност за анимиране на обекти, реагиращи на потребителските действия.

egan
Download Presentation

Създаване на анимации във VRML. Представяне на 3D сцена в WWW.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Мултимедия и основи на уеб дизайна ас.Елена Първанова Създаване на анимации във VRML. Представяне на 3D сцена в WWW. 2011 ТЕМА 16

  2. Събития във VRML • VRML 2.0 предоставя възможност за анимиране на обекти, реагиращи на потребителските действия. • Във VRML 2.0 при генерирането на събитие някои полета на възлите се промнят със зареждане на сцената. • Тези полета са exposed fields (открити полета) и те могат да бъдат получени когато потребителя наблюдава сцента. • Exposed fieldможе да бъде разложено на три части: • eventInset_fieldName • field fieldName • eventOutfieldName_changed , където fieldName може да бъде някое exposed fieldот синтаксиса на представените възли (удебелени) в предишните лекции.

  3. Събития във VRML • Освен това възлите могат да имат и други eventInилиeventOutполета. • Понякога тези полета не са представени в дефиницията на възела. • Някой от възлите имат само eventIn дефиниция. • Когато се изпраща събитие към възела има два начина да се прихване събитието генерирано за възела чрез: ROUTES и скрипт. • Декларацията на поле като exposedозначава, че възела може да получава събития, eventIn и генерира събития, eventOut. • EventIn в exposed fieldсе използва, за да се зададе стойност на полето. • Когато тази стойност се промени, възела в който полето е дефинирано ще генерира съответно eventOut.

  4. ROUTES Синтаксис ROUTE Node.eventOut_changed TO Node.set_eventIn • ROUTES (пътищата) са начин за дефиниране на път между генерирано събитие във възел и възел получващ събитие.

  5. сензори във VRML Генериране на събития базирани на таймери и потребителски действия • Timers - генерира събития в определени интервали • Touch Sensors – генерира събитие когато курсорът посочва обекти от група към която е сензора • Visibility Sensors - генерира събитие, когато фигури в група със сензора са видими за потребителя • Dragging Sensors - генерира събитие когато потребителя кликва с мишката и премества обекти в група със сензора • Proximity Sensors– генерира събитие, когато потребителя е в определено пространство

  6. сензори във VRML TimeSensor Node Синтаксис TimeSensor { cycleInterval1.0 enabled TRUE loop FALSE startTime0 stopTime0 } • TimeSensor node действа като часовник, който генерира събития. • Храктеризира се със следните полета: • enabled– определя състоянието на сензора; • startTime - определя кога сензора започва да генерира събития; • stopTime- определя кога сензора спира да генерира събития; • cycleInterval- определя броя на секундите за които TimeSensor ще генерира събития; • Loop- определя дали cycleInterval ще свърши или започне отново.

  7. сензори във VRML TouchSensor Node Синтаксис TouchSensor { enabled TRUE } • Дефинира се в група и афектира върху всички фигури в групата. • Сензора предизвиква реакция, когато се кликне с мишката върху фигура съдържаща се в групата. Пример • DEF ga Group { • children [ • DEF sa Shape ... • DEF taTouchSensor {} • DEF gb Group { • children [ • DEF sb Shape ... • DEF tbTouchSensor {} • ] • } • ] • }

  8. сензори във VRML VisibilitySensor Node Синтаксис VisibilitySensor { enabled TRUE center 0 0 0 size 0 0 0 } • VisibilitySensor node се използва улавяне на видими промени във виртуален куб (пространство), генерирайки събития когато видимия статус се промени. • Сензорът не е свързан с фигурите дефинирани в същата група с него. • Представя се със следните полета: • center - център на правоъгълния куб; • size - размери на правоъгълния куб; • enabled– определя състоянието на сензора; • Сензора генерира следните събития: • enterTime - извежда времето когато куба стане видим; • exitTime- извежда времето когато куба спре да бъде видим; • isActive- извежда TRUE когато куба стане видим и FALSE когато е обратното.

  9. Пример за VisibilitySensor Код #VRML V2.0 utf8 Group { children [ DEF vsVisibilitySensor { size 1 1 1 } Sound { source DEF ac AudioClip { loop FALSE url "sfx.mid" } } Shape { geometry Box { size 1 1 1 } } ] } ROUTE vs.enterTime TO ac.set_startTime

  10. сензори във VRML Dragging Sensors Представените сензори се храктеризират със следните полета: enabled- определя състоянието на сензора; offset- показва първоначалната позиция на фигурите във групата. Нулев offset означава, че фигурите ще бъдат преместени от тяхната първоначална позиция. Ако autoOffsetе TRUE offset стойността се игнорира. autoOffset - определя дали ще има постъпково преместване или отностно от първоначалната позиция. isActive– показва дали преместването е извършено; trackPoint– осигурява конкретни координати в пространството дефинирани от сензора; rotation_changed и translation_changed– осигуряват съответното завъртане и преместване. • Три типа dragging сензори има: • PlaneSensor: позволяват на потребителя да мести обектите в XY равнина; • CylinderSensor: ограничва местенето на обектите в рамките на цилиндър; • SphereSensor: ограничва местенето на обектите в рамките на сфера.

  11. сензори във VRML PlaneSensor Node Пример #VRML V2.0 utf8 Group { children [ DEF tsPlaneSensor { minPosition -1 -1 maxPosition 1 1 } DEF tr Transform { children Shape { geometry Cylinder {} } } ] } ROUTE ts.translation_changed TO tr.set_translation Синтаксис PlaneSensor { enabled TRUE offset 0 0 0 autoOffset TRUE maxPosition -1 -1 minPosition 0 0 } • Възела генерира следните събития: • isActive(булева стойност) • translation_changed(3D вектор) • trackPoint_changed (3D точка)

  12. сензори във VRML SphereSensor Node Пример #VRML V2.0 utf8 Group { children [ DEF ssSphereSensor {} DEF tr Transform { children Shape { geometry Box {} } } ] } ROUTE ss.rotation_changed TO tr.set_rotation SphereSensor { enabled TRUE offset 0 1 0 0 autoOffset TRUE } • Възела генерира следните събития: • isActive(булева стойност) • rotation_changed(3D вектор плюс ъгъл) • trackPoint_changed (3D точка) Синтаксис

  13. сензори във VRML CylinderSensor Node Пример #VRML V2.0 utf8 Group { children [ DEF csCylinderSensor { minAngle 0 maxAngle 1.57 } DEF tr Transform { children Shape { geometry Cylinder {} } } ] } ROUTE cs.rotation_changed TO tr.set_rotation Синтаксис CylinderSensor { enabled TRUE offset 0 autoOffset TRUE maxAngle -1 minAngle 0 diskAngle0.262 } • Възела генерира следните събития: • isActive(булева стойност) • rotation_changed(3D вектор плюс ъгъл, по Y ос) • trackPoint_changed (3D точка)

  14. сензори във VRML ProximitySensor Node Синтаксис ProximitySensor { enabled TRUE center 0 0 0 size 0 0 0 } • Този сензор генерира събития, когато потребителя влиза, напуска или се движи в дефинирано пространство (паралепипед). • Сензора съдържа следните полета: • enabled– определя състоянието на сензора; • center– определя центъра на паралелепипеда; • size – размер на паралелепипеда.

  15. сензори във VRML Примерза ProximitySensor Код #VRML V2.0 utf8 Group { children [ DEF psProximitySensor { size 4 4 4} DEF slSpotLight { on FALSE location 0 0 4 } Shape { appearance Appearance { material Material {} } geometry Sphere {} } ] } ROUTE ps.isActive TO sl.set_on

  16. Интерполатори • Видове интерполатори: • ColorInterpolator • CoordinateInterpolator • NormalInterpolator • OrientationInterpolator • PositionInterpolator • ScalarInterpolator • Интерполаторите дефинират key(ключ) с обхват от 0.0 до 1.0 към keyValue(стойност), която може да приеме различни типове данни в зависимост от интерполатора. • Всички събития и полета са еднакви за интерполаторите, само типа на данните е различен.

  17. Интерполатори ColorInterpolator Примери: ColorInterpolator { key [0 1 ] keyValue[1 0 0, 0 0 1 ] } ColorInterpolator { key [0 0.5 1 ] keyValue[1 0 0, 0 0 1, 0 1 0 ] } • ColorInterpolator nodeе интерполатор приема списък от RGB стойности в полето keyValue. Синтаксис: ColorInterpolator { key [ ] keyValue[ ] }

  18. Интерполатори Пример за ColorInterpolator Код Group { children [ Shape { appearance Appearance { material DEF mat Material { diffuseColor 0 0 0} } geometry Sphere {} } DEF ciColorInterpolator { key [ 0 1 ] keyValue [ 1 0 0, 0 0 1] } DEF tsTimeSensor { cycleInterval 2 loop FALSE } ] } ROUTE ts.fraction_changed TO ci.set_fraction ROUTE ci.value_changed TO mat.set_diffuseColor

  19. Интерполатори CoordinateInterpolator Пример #VRML V2.0 utf8 Group { children [ Shape{ appearance Appearance { material Material { }} geometry IndexedFaceSet { coord DEF co Coordinate { point [-1 -1 0, 1 -1 0, 1 1 0, -1 1 0 ] } coordIndex [0 1 2 3] } } DEF ciCoordinateInterpolator { key [0 0.5 1] keyValue [-1 -1 0, 1 -1 0, 1 1 0, -1 1 0, -1 -1 0, 1 -0.5 0, 1 0.5 0, -1 1 0, -1 -1 0, 1 -1 0, 1 1 0, -1 1 0] } DEF tsTimeSensor { cycleInterval 2 loop TRUE } ] } ROUTE ts.fraction_changed TO ci.set_fraction ROUTE ci.value_changed TO co.set_point • CoordinateInterpolator node е интерполатор който взема списък от 3D координатни стойности в полето keyValue. Синтаксис: CoordinateInterpolator { key [ ] keyValue[ ] }

  20. Интерполатори NormalInterpolator Синтаксис: NormalInterpolator { key [ ] keyValue [ ] } • NormalInterpolator nodeе интерполатор, който взема списък от 3D вектори в полето keyValue. • Позволява да се контролират всички перпендикуляри дефинирани в Normal node.

  21. Интерполатори OrientationInterpolator Пример #VRML V2.0 utf8 DEF tr Transform { children [ Shape { appearance Appearance { material DEF mat Material { diffuseColor 1 0 0 } } geometry Sphere {} } DEF oiOrientationInterpolator { key [ 0 1 ] keyValue [ 0 1 0 0, 0 1 0 3.14, # rotate right 0 0 1 3.14] # rotate down } DEF tsTimeSensor { cycleInterval 2 loop TRUE } ] } ROUTE ts.fraction_changed TO oi.set_fraction ROUTE oi.value_changed TO tr.set_rotation • OrientationInterpolator nodeе интерполатор, който взема списък от стойности за ротация в полето keyValue. • Интерполатора анимира обекти, въртейки ги според стойностите в keyValue. Синтаксис: OrientationInterpolator { key [ ] keyValue[ ] }

  22. Интерполатори PositionInterpolator Пример #VRML V2.0 utf8 DEF tr Transform { children [ Shape { appearance Appearance { material DEF mat Material { diffuseColor 1 0 0 } } geometry Sphere {} } DEF pi PositionInterpolator { key [ 0 1 ] keyValue [ 0 0 0, 0 1 0, 0 0 0] } DEF tsTimeSensor { cycleInterval 2 loop TRUE } ] } ROUTE ts.fraction_changed TO pi.set_fraction ROUTE pi.value_changed TO tr.set_translation • PositionInterpolator node е интерполатор, който взема списък от 3D координати в полето keyValue. • Използва се за анимиране на обекти, премествайки ги по път определен в keyValue. Синтаксис: PositionInterpolator { key [ ] keyValue[ ] }

  23. Интерполатори ScalarInterpolator Пример #VRML V2.0 utf8 Group { children [ Shape { appearance Appearance { material DEF mat Material { diffuseColor 1 0 0 } } geometry Sphere {} } DEF ciScalarInterpolator { key [ 0 0.5 1 ] keyValue [ 0 1 0] } DEF tsTimeSensor { cycleInterval 2 loop TRUE } ] } ROUTE ts.fraction_changed TO ci.set_fraction ROUTE ci.value_changed TO mat.set_transparency • ScalarInterpolator node е интерполатор, който взема списък от стойности в keyValue. • Може да се използва за стойности на exposed field. Нпарипер: • Промяна на скоростта (филм и аудио); • Промяна на блясък и прозрачност (материал); • Промяна на видимия обхват (мъгла). Синтаксис: ScalarInterpolator { key [ ] keyValue[ ] }

  24. Въвеждане на VRML сцена в web страница • За представянето на VRML сцена пострдством web страница е необходимо да се използва EMBEDилиOBJECT (поддържан от Microsoft Internet Explorer) елементи с подходящите атрибути в HTML документ. <object width="400" height="300" classid="clsid:660D0125-4C92-4EDD-B7B4B36857F1449E“codebase=http://www.octaga.com/freedownloads/OctagaPlayer/current/Setup.Exe#Version=2,3,0,0standby="Loading..."> <PARAM NAME="SRC“VALUE="http://www.octaga.com/vrml/venus/venus.wrl"> <PARAM NAME="pluginspage" VALUE="http://www.octaga.com/"> <embed type="application/octaga“name="Octaga" pluginspage ="http://www.octaga.com/start/start.php?startpage=download_octaga" width="400" height="300" src="http://www.octaga.com/vrml/venus/venus.wrl" SplashScreen="True" > </embed> </object>

  25. Въвеждане на VRML сцена в web страница • Използване на OBJECT таг <OBJECT CLASSID="CLSID:86A88967-7A20-11d2-8EDA-00600818EDB1" CODEBASE="http://www.cortona3d.com/bin/cortona3d.cab#Version=6,0,0,179" WIDTH="128" HEIGHT="128"> <PARAM NAME="SRC" VALUE="/vrml/splines/cube3scriptless.wrl"> <PARAM NAME="VRML_BACKGROUND_COLOR" VALUE="#CDCDCD"> <PARAM NAME="VRML_DASHBOARD" VALUE="false"> <PARAM NAME="VRML_SPLASHSCREEN" VALUE="false"> <PARAM NAME="CONTEXTMENU" VALUE="false"> </OBJECT> • Използване на EMBED таг <embed src="/vrml/splines/cube3scriptless.wrl" width="128" height="128" type="application/x-cortona" pluginspage="http://www.cortona3d.com/cortona" vrml_splashscreen="false" vrml_dashboard="false" vrml_background_color="#CDCDCD" contextmenu="false">

More Related