Visualisierung und Animation im Web
Transcription
Visualisierung und Animation im Web
Vorlesungsreihe Entwicklung webbasierter Anwendungen Visualisierung und Animation im Web Prof. Dr.-Ing. Thomas Wiedemann email: [email protected] HOCHSCHULE FÜR TECHNIK UND WIRTSCHAFT DRESDEN (FH) Fachbereich Informatik/Mathematik Gliederung • Motivation • Allgemeine Optionen zur Grafikanzeige • SVG als 2D-Vektorformat • VRML (X3J • Java 3D • Fazit ¾ Hinweis: Aufgrund des sehr zahlreich und detailliert vor-liegenden Online-Materials stellen die folgenden Folien nur eine Übersicht und Zusammenfassung zum Thema dar. ¾ Details und konkrete Beispiele können den jeweils angegebenen Quellen entnommen werden. Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 2 1 Motivation Warum sind grafische Darstellungen, auch in 3D (meist) besser als rein textuelle Darstellungen ? • Menschen sind dreidimensionale Ansichten aus ihrer Umgebung gewöhnt – 3D-Computergrafiken werden zunehmend zum Aufbau virtueller Welten verwendet (siehe Werbung , "Matrix2" , ...) – Anteile und Zeitverläufe lassen sich grafisch mit einem Blick erfassen – Größer / Kleiner – Relationen sind schneller erfassbar – Wichtiges / Unwichtiges kann durch Größe ausgedrückt werden (-> LOD) • Komplexe Maschinen oder Bauwerke lassen sich mit 2D-Grafiken (=herkömmlicher technischer Zeichnung) nur schwer veranschaulichen – Komplizierte Blechabwicklungen können am 3D-Modell berechnet werden – Animation veranschaulichen den zeitlichen Ablauf – Animation können auch komplizierte Bewegungen und Zusammenhänge darstellen – Komplexe Umgebungen können durchwandert werden (Computerspiele)n Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 3 Spezifische Probleme im Web bei der Visualisierung • Problem Bandbreite • ein Vollbildschirm umfasst einige Megabyte • -> Content muß im Clientbrowser generiert oder stark komprimiert übertragen werden • -> Optionen : als komprimierte Bitmap oder als Vektorgrafik • Interaktionen bei komplexeren 2D/3D-Grafiken (Welten) • Behandlung komplexer Interaktionen ( Kollision, Ein-Schalter?) • Behandlung auf Server -> Grafikrückgabe ?? • Lokal : Beschreibung der neuen Szene ? Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 4 2 Generelle Optionen zur Visualisierung im Web • Anforderung : Lauffähigkeit im Browser • mit Bitmap-Grafiken oder Videosequenzen • Java –Applets als Animationsplayer (teilweise schon veraltet) siehe Java-Applet-Programmierung • + volle Freiheit bei der Animationssteuerung • - Probleme mit JRE-Versionen • SVG - 2D-Grafiken • VRML-3D-Grafiken (X3D) • Flash (siehe Vortrag) • Nicht im Browser, nur webkompatibel (portabel auf allen Rechnern ) • Java 3D Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 5 Bitmap-Grafiken • Standardanforderungen : • starke Kompression möglichst ohne Qualitätsverlust • geringe Lade- und Anzeigezeiten • Zusätzliche Anforderungen • Transparenz für Positionierung über anderen Grafiken • Animationssequenzen • Die nachfolgenden Grafiktypen sind entsprechend ihrer historischen Folge aufgelistet. Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 6 3 Bitmap-Grafiken - GIF - ( Graphics Interchange Format ) • Historie : • 1987 von CompuServe eingeführt • gute Resonanz durch gute Kompression mit LZW-Algorith. • offene Lizenz-Politik von CompuServe erlaubte freie Verwendung des Formats in eignen Anwendungen • 2 Versionen : „87a“ und „89a“, erkennbar im Dateiheader • ab 1994 Probleme mit Patent der Fa. Unisys von 1983 auf LZW • Einigung mit Compuserve und anderen Herstellern bzgl. Lizenzzahlungen, ab 1999 auch juristische Schritte von Unisys gegen Entwickler von freier Software • Ausgangspunkt für die Entwicklung des PNG-Formates • Patente sind 2003...2004 abgelaufen, damit ist GIF wieder frei verwendbar ohne zusätzliche Kosten Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 7 Bitmap-Grafiken - GIF - Technische Parameter • • • • • • max. Größe von GIF-Bildern 16bit x 16bit – ca. 4 Megapixel Farbtabelle mit nur 256 Einträgen (=Byte-Index) aus 24bit-Farbwert für einfache Grafiken und kleinere Fotos ggf. ausreichend bei größeren Fotos mit Farbverläufen ist Farbquantisierung -> Störungen durch Dithering-Effekte beim Wiederaufbau Definition einer Farbe als „Transparent“ möglich -> wird damit nicht gezeichnet -> Hintergrundanzeige • Unterstützung des Interlacing beim Bildaufbau (zuerst nur Übertragung jeder 8. Zeile und deren 8facher Anzeige, danach 4. Und 2 Zeile -> Grobansicht zu Beginn) • Animation durch Speicherung von Bildfolgen und deren zyklischer Wiedergabe Bewertung : • aus technischer Sicht veraltet, jedoch immer noch sehr weit verbreitet, da das modernere PNG-Format keine Animationen unterstützt Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 8 4 Bitmap-Grafiken - JPEG - JPEG File Interchange Format (JFIF) Historie • • Anfang der 90er Jahre entwickeltes Grafikformat zur Speicherung entsprechend der JPEG-Norm JPEG-Norm beschreibt verschiedene Verfahren Bildkompression (als Standard def. in ISO/IEC 10918-1 bzw. CCITT Recom. T.81) – mit über 41 Unterformaten • Nachfolgeformat JPEG2000 (technisch besser, jedoch noch nicht sehr verbreitet) Technische Parameter • • max. Größe 65.535×65.535 Pixel, meist Abdeckung von 24 bit-Farbräumen Die JPEG-Norm definiert eine Reihe von (teilweise verlustbehafteten) Konvertierungen : • • • • Farbraumumrechnung vom (meist) RGB-Farbraum ins YCbCr-Farbmodell (nach IEC 601) - > trennt Helligkeits- von der Farbinformation und erlaubt Anpassung an menschl. Auge • Tiefpassfilterung und Unterabtastung der Farbabweichungssignale Cb und Cr (verlustbe.). • Einteilung in 8×8-Blöcke und diskrete Kosinustransformation dieser Blöcke • Quantisierung (verlustbehaftet) und Umsortierung. • Entropiekodierung meist mit Huffman-Algorithmus Die Rückrechnung wir in umgekehrter Reihenfolge ausgeführt. (Achtung: Bei mehrfachen Zyklen kommt es auch zu wiederholten Verlusten (nur in Spezialsoftware vermeidbar beim Drehen/Schneiden )) In Abhängigkeit vom Bild (feine Strukturen /Farbverläufe) sind Kompressionsraten von ca. 15 für visuell noch einwandfrei erscheinende Bilder und bis zu 35 für Bilder mit akzeptabler Qualität möglich Einsatzoptionen : für Fotos und Foto-ähnliche Grafiken, nicht für Grafiken mit sehr hohen Kontrastsprüngen (Liniengrafiken, geditherte Zeitungsfotos, S/W-Fotos) Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 9 Bitmap-Grafiken - PNG - Portable Network Graphics Historie • • als Reaktion auf die Patentprobleme beim GIF-Format 1994 entstanden letzte Version 1.2 von 2003 als ISO-Standard ISO/IEC 15948:2003 und W3C-Empfehlung PNG (Second Edition) definiert, generell keine Patentbeschränkungen Technische Parameter • • • Unterschiedliche Farbpaletten : mit 256 Einträgen (wie GIF), Graustufenbilder mit 1, 2, 4, 8 oder 16 Bit, Farbbildern (RGB) mit 8 oder 16 Bit pro Kanal (=24 / 48 Bit pro Pixel) Verlustfreie Kompression von PNG in der Regel besser als bei GIF. KEINE Animationsfähigkeit, da 1995 als eigenes Format (MNG) vorgesehen -> hat sich jedoch nicht durchgesetzt -> damit auch ein Nachteil von PNG ( APNG als neue Option in Entwicklung) • • Unterstützung von Interlaced-Darstellung, Gammawertspeicherung zur optim. Farbdarst., Transparenzen möglich : entweder in Form eines Alphakanals (Zusatzbyte/Word pro Pixel mit Transparenzinfo – bei GIF kann´n nur eine Farbe transparent sein) • IE bis V6.0 hat noch Probleme mit Alphakanaldarst. (nur binär möglich), die neuesten Version der Browser unterstützen die PNG-Transparenz jedoch • Unterstützung von optionalen (versteckten Datenblöcke („Chunks“), welche Zusatzinformationen (z.B. Copyright (!!) oder Verarbeitungsoptionen enthalten können (bearbeitbar durch Autorenprogramme wie TweakPNG oder Adobe Fireworks) Bewertung : Durchdringung langsamer als erwartet, aber langfristig als Standardgrafikformat für „Nicht-Fotos“ vorstellbar Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 10 5 Bitmap-Grafiken - Lurawave • • proprietäres Dateiformat der Firma LuraTech für Pixelgrafiken - www.luratech.com durch Wavelet-Kompression deutlich bessere Bildqualität als beim JPEG-Format • günstig für für hoch auflösende Fotos und Bilder mit feinen Farbübergängen mit weiteren Zusatzoptionen : • skalierbare Größe: durch Wavelet-Kompression kann das Bild auch aus einem Bruchteil der Daten näherungsweise rekonstruiert werden bzw. ist ein Zoomen in die Pixelgrafik möglich • Passwortschutz für unterschiedliche Auflösungsgrade (geringe Qualität -> ohne PW, hohe Qualität gegen Bezahlung) • Anzeige durch kostenlose Plugins in den Browsern • Erstellung von LuraWave-Grafiken nur mit kostenpflichtigen LuraWave-Plugins in bekannten Tools (z.B. Photoshop ) oder Softwaretools erforderlich • Aktuell : Integration der Lurawave-Algor. in JPEG2000/Part1 Bewertung / Einsatz : • sehr günstig für qualitativ hochwertige Fotos (z.B. Verkauf von Profi-Fotos) • ggf. Probleme durch notwendige Installation der Plugins – durch JPEG2000Integrationb langfristig nicht mehr notwendig • gewisse Abhängigkeit von der Fa. Lurasoft, da kein offener Standard Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 11 SVG-Historie und Überblick Scalable Vector Graphics (SVG) (dt.: Skalierbare Vektorgrafiken) • ist ein Standard für zweidimensionale Vektorgrafiken • Version 1.0 im Jahr 2001 vom W3C als Empfehlung veröffentlicht • aktuell Version 1.2 von 2005 • Standard kann von den meisten Webbrowsern OHNE ZUSÄTZLICHE Plugins dargestellt werden (ggf. SVG-Viewer –Plugin) • liegt im XML-Format vor und kann mit anderen XML-Formaten kombiniert werden • Datei-Kennung (MIME-Type) .svg .svgz (gezippte Version) SVG unterstützt • alle grafischen Primitive • sehr ausgefeilte Farbverläufe und Schriftmanipulationen • Animationen • eine Veränderung der Grafiken zur LAUFZEIT über das SVG-DOM mit eingebetteten Funktionen über Skriptsprachen (Standardisierung läuft noch) Quellen: www.w3.org/TR/SVG12/ www.selfsvg.info/ svg.org http://www.mozilla.org/projects/svg/ www.croczilla.com/svg/samples/ Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 12 6 Einsatzoptionen von SVG • freie Alternative zu Flash • auch als Datenaustauschformat zwischen unterschiedlichen Grafikprogrammen immer interessanter • zusätzliche Impulse durch Mobile SVG : • SVG Tiny (SVGT) für Mobilfunktelefone u.ä. • SVG Basic (SVGB) für PDA´s • damit können folgende Bereiche abgedeckt werden • neue Benutzerschnittstellen im Web (2D, 2,5D) • eCommerce – animierte Dokumentationen • Unterhaltung (2D-Spiele) • GPS und mobile Kartographie • Multimedia Messaging Service (MMS) mit allen obigen Contents • Industrielle Anwendungen (z.B. grafische Anlagenüberwachung per PDA) Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 13 Vergleich SVG - Flash SWF-Format Eigenschaft SWF (Flash) SVG offener Standard nein - Macromedia Flash (SWF) and Flash Video (FLV) File Format Specification 8.0 [ Ado06] ja - Scalable Vector Graphics (SVG) 1.1 Specification [ W3C03] Datenformat binär textbasiert - XML-konform MIME-Type application/x-shockwave-flash image/svg+xml Kompression ja - zlib ja - gzip Native BrowserUnterstützung nein - Plugin notwendig teilweise - wird nach und nach in die wichtigsten Web-Browser integriert Style SheetUnterstützung ja - proprietäres Format, kleine CSS-Untermenge ja - CSS Skriptsprachen ActionScript ECMAScript, Python, etc. Document Object Model ja - nicht-standardkonformes DOM ja - SVG DOM Integration (XHTML, HTML, XML, etc.) nein ja - bislang jedoch nur von wenigen Betrachtern unterstützt Servergenerierung mit von Skriptsprachen ja - z.B. mit zusätzlichen Bibliotheken wie Ming ja - JSP, Perl, PHP, Python, etc. Indexierung durch Suchmaschinen ja - dazu ist allerdings Macromedias Search Engine SDK oder eigener Code erforderlich ja - wird jedoch noch nicht von allen großen Suchmaschinen unterstützt Import in/Export aus Grafiksoftware ja - einige Produkte besitzen Import- und Exportfilter ja - wurde zusätzlich als Grafikkaustauschformat entworfen Quelle: selfsvg.info Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 14 7 SVG -Beispieldefinitionen Beispiele zu Grundelementen <?xml version="1.0"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" xmlns="http://www.w3.org/2000/svg"> <rect x ="10" y ="10" width ="100" height ="50" rx ="15" ry ="15" /> <circle cx ="40" cy ="40" r ="20" /> <line x1="5" y1="5" x2="200" y2="100" style="stroke:red;stroke-width:3;" /> <polyline points="10,10 20,40 140,50 55,62 12,70 120,80" style="stroke:blue;stroke-width:2;fill:none" /> </svg> Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 15 SVG –Beispieldefinitionen - Text Text kann auch gegliedert und unterschiedlich formatiert werden : <text x="10" y="40" style="font-size:30"> <tspan style="font-weight:900">S</tspan> <tspan style="fill:silver">V</tspan> <tspan style="text-decoration:underline">G</tspan> <tspan x="10" y="75">inkl. Zeilenumbruch</tspan> </text> <text x="20" y="10" style="font-size:30" writing-mode="tb"> SVG </text> <svg version="1.1" xmlns="http://www.w3.org/2000/svg"> <text x="20" y="10" style="font-size:30;writing-mode:tb; glyph-orientation-vertical:360"> SVG </text> <text x="10" y="40" style="font-size:26px"> (a+b)<tspan style="baseline-shift:super;font-size:18px"> 2</tspan> </text> Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 16 8 SVG –Beispieldefinitionen - Füllen und Farbverläufe ... <defs> <radialGradient id="verlauf"> <stop offset="0%" stop-color="white" /> <stop offset="100%" stop-color="black" /> </radialGradient> </defs> <rect x="20" y="20" width="200" height="100" fill="url(#verlauf)" /> <defs> <pattern id="muster" x="10" y="10" width="20" height="20" patternUnits="userSpaceOnUse"> <circle cx="10" cy="10" r="5" fill="silver" stroke-width="1" stroke="black" /> </pattern> </defs> <rect x="20" y="20" width="200" height="100" stroke-width="2" stroke="black" fill="url(#muster)" /> </svg> <defs><pattern id="picture" x="20" y="20„ width="50" height="60" patternUnits="userSpaceOnUse"> <image x="0" y="0" width="50" height="60„ xlink:href="tux.png" /> </pattern> </defs> <rect x="20" y="20" width="200" height="120" fill="url(#picture)" stroke-width="2" stroke="black" /> Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 17 SVG –Beispieldefinitionen - Filter SVG besitzt bereits sehr viele Filter, welche teilweise an die Funktionen bekannter Grafikprogramme heranreichen : <svg version="1.1" xmlns="http://www.w3.org/2000/svg"> <defs> <filter id="button" x="-10%" y="30%" width="120%" height="40%"> <feGaussianBlur in="SourceAlpha" stdDeviation="4" result="blur" /> <feSpecularLighting in="blur" surfaceScale="6" specularConstant="0.4" specularExponent="4" result="spec" style="lighting-color:white"> <fePointLight x="-6000" y="-8000" z="20000" /> </feSpecularLighting> <feComposite in="spec" in2="SourceAlpha" operator="in" result="comp" /> <feComposite in="comp" in2="SourceGraphic" operator="arithmetic" k1="0" k2="1" k3="1" k4="0" result="comp2" /> </filter> </defs> <circle cx="60" cy="30" r="50" style="fill:blue;stroke:blue;stroke-width:3px" filter="url(#button)" /> </svg> Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 18 9 SVG –Beispieldefinitionen - Transformationen <rect x="0" y="0" width="200" height="100" style="fill:none;stroke:grey;stroke-width:2px" /> <!-- transformiertes Rechteck --> <rect x="0" y="0" width="200" height="100" style="fill:#00FF00;stroke:black;stroke-width:2px" transform="scale(0.5)" /> Transformationen können auch sequentiell abgearbeitet werden : (dabei aber ggf. Reihenfolge relevant !!) ... transform="translate(10, 10) scale(2) translate(-10, -10) rotate(22, 50, 200) ". Für Transformationen und Animationen sind Gruppierungen sehr nützlich : <g style="stroke:black;stroke-width:3px"> <rect x="10" y="10" height="75" width="150" fill="red" /> <rect x="25" y="25" height="75" width="150" fill="blue" /> </g> (analog auch use-Funktion, welche eine Wiederverwendung (Quasi-Vererbung gestattet) Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 19 Hintergrundwissen zu 3D-Transformationen • entsprechend der darstellenden Geometrie lassen sich Bewegungen von Objekten im Raum bzw. die räumliche Anordnung von Standardobjekten (Quader, Kreis, Ellipse ) auf Matrixoperationen abbilden • zur Vermeidung von Problemen durch den Koordinatenursprung (0,0,0) führt man eine künstliche 4. Dimension ein und homogenisiert damit die Daten (-> Mathemat.) • ein Punkt wird danach beschrieben durch | x y z 1 | T • Alle Transformationen lassen sich dann abbilden auf eine Matrixoperation der Form: x2 y2 z2 1 = a11 a21 a31 a41 a12 a13 a22 a23 a32 a33 a42 a43 a14 a24 a34 1 * x1 y1 z1 1 • Die Transformationsmatrix A kann für viele Standardtransformationen und auch deren Kombination (z.B. Drehen + Verschieben) relativ einfach bestimmt werden • Die einheitliche Berechnungsweise erlaubt in aktuellen 3D-Grafikkarten eine Realisierung dieser Berechnung per Hardware und damit maximale Performance ! • Diese Vorgehensweise ist bei Weglassen von Z auch für 2D-Operationen gültig ! • Bei der finalen Anzeige wird die 4. Dimension ignoriert. Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 20 10 3D-Transformationen als Matrixoperation Darstellung der Transformationsmatrix A für Standardtransformationen: • Verschiebung (engl. Translation) x+a y+b z+c 1 = 1 0 0 a 0 1 0 b 0 0 1 c 0 0 0 1 0 a 0 0 0 0 a 0 0 0 0 1 * x1 y1 z1 1 * x1 y1 z1 1 • Skalierung (engl. Zoom ) x*a y*a z*a 1 = • Drehung um α x2 y2 z2 1 a 0 0 0 (engl. Rotation ) – hier um X-Achse (andere Achsen analog) = 1 0 0 0 0 cos(α) sin(α) 0 0 -sin(α) cos(α) 0 0 0 0 1 * x1 y1 z1 1 • Spiegelung kann abgeleitet werden aus Drehung um 180° Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 21 SVG –Beispieldefinitionen - Pfadangaben Pfade werden zur Maskierung und zur Verlaufsangabe von Texten und Animationen mit eigenständiger Syntax im Attr. D verwendet : <path d="M20 200 C20 150 200 250 200 200" style="fill:none;stroke-width:3;stroke:black;" /> <path id="text_path" x="0" y="0" d="M10 10 C100 150 200 200 200 100 C200 100 200 20 250 20" fill="none" stroke="silver" /> <text style="font-size:24px"> <textPath xlink:href="#text_path">an einem Pfad ausgerichteter Text</textPath> </text> Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 22 11 SVG –Beispieldefinitionen - Animation Prinzipiell können fast alle Eigenschaften (XYZ, Farbe, Lage etc.)( verändert werden : <circle cx="100" cy="50" r="40" fill="red"> <animate attributeName="cx" begin="0" dur="1s" by="100" repeatCount="3" fill="freeze" /> </circle> <circle cx="100" cy="190" r="40" fill="red"> <animate attributeName="cx" begin="0" dur="1s" by="100" repeatCount="3" accumulate="sum" fill="freeze" /> </circle> <ellipse cx="140" cy="100" rx="120" ry="70" fill="green"> <animateColor attributeName="fill" from="green" to="gold" begin="0s" dur="2s" fill="freeze" /> </ellipse> <text x="75" y="40" text-anchor="middle" fill="#000" font-size="18px"> <set xlink:href="#extern" attributeName="fill" begin="mouseover" to="#0F0" /> <set xlink:href="#extern" attributeName="fill" begin="mouseout" to="#F00" /> Touch me! </text> <circle id="extern" cx="75" cy="75" r="25" fill="#F00" /> Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 23 SVG –Beispieldefinitionen - Nutzer-Interaktionen Über Events können Nutzeraktionen angebunden werden : <g id="gruppe" transform="scale(3)" style="font-size:12pt;text-anchor:middle;"> <text x="75" y="20" height="25" width="50" fill="#000"> <set xlink:href="#ext" attributeName="fill" begin="mouseover" to="#0F0" /> <set xlink:href="#ext" attributeName="fill" begin="mouseout" to="#F00" /> Touch me! </text> <circle id="ext" cx="75" cy="50" r="25" fill="#F00" /> <text x="75" y="55" > <tspan style="font-weight:bold;fill:#FFF;"> SVG </tspan> </text> </g> Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 24 12 SVG –Beispieldefinitionen - Nutzer-Interaktionen in HTML II <html > <head> <script> <![CDATA[ var dx,dy; var circle; function init() { circle = document.getElementById('circ'); circle.addEventListener("mousedown", mousedown_listener, false); } function mousedown_listener(evt) { dx = circle.cx.baseVal.value - evt.clientX; dy = circle.cy.baseVal.value - evt.clientY; document.addEventListener("mousemove", mousemove_listener, true); document.addEventListener("mouseup", mouseup_listener, true); } function mouseup_listener(evt) { document.removeEventListener("mousemove", mousemove_listener, true); document.removeEventListener("mouseup", mouseup_listener, true); } function mousemove_listener(evt) { var id = circle.ownerSVGElement.suspendRedraw(1000); circle.cx.baseVal.value = evt.clientX + dx; circle.cy.baseVal.value = evt.clientY + dy circle.ownerSVGElement.unsuspendRedraw(id); } ]]> </script> </head> <body onload="init();"> <h3>SVG + event handler demo</h3> <p>Drag the circle with the mouse!</p> <svg:svg width="600px" height="400px"> <svg:polyline points="0,0 600,0 600,400 0,400 0,0" style="stroke:black; fill:none;"/> <svg:circle id="circ" r="1cm" cx="5cm" cy="3cm" style="fill:red; stroke:blue; stroke-width:3;"/> </svg:svg> </body> </html> Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 25 VRML und X3D Virtual Reality Modeling Language (VRML) • standardisierte Beschreibungssprache für 3D-Szenen • basiert(e) vom Grundkonzept her auf OpenGL von Silicon Graphics • erste Version von 1995 von Silicon Graphics als Webversion eingeführt • 1997 wurde VRML 2.0 spezifiziert und nach kleineren Änderungen als VRML97-ISO 14772 Standard festgeschrieben (völlige Überarbeitung des Szenengraphenkonzepts, neue Sensorknoten für bessere Interaktivität, Animationsmöglichkeiten über TimeSensoren, Skriptfähigkeit mittels JavaScript (VRMLScript), Multimedia> Sounds, Animated GIF und MPEG-Movies) • 1999 VRML NG (Next Generation bzw. VRML99) mit Ziel Komplexitätsreduzierung (durch Ausstieg von SGI gewisse Stagnation ) • ab 2004 Entwicklung des VRML-Nachfolgers X3D als XML-Format, jedoch noch keine größere Marktdurchdringung (VRML ist KEIN XML !) • 3 Codierungsoptionen: VRML, X3D (XML), binär • Funktionalität und Stabilität hängen sehr stark vom Plugin ab ! • Dateierweiterungen : *.wrl *.wrz (gezippt) • Quellen : http://www.web3d.org/x3d/specifications/#vrml97 http://de.wikipedia.org/wiki/Vrml http://www.ai.sri.com/VRMLSets/ Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 26 13 VRML _ Basis – Elemente Viele Konzepte von VRML/X3D ähneln SVG ! • Basiskörper : Quader, Zylinder, Kegel und Kugel als eigene Knotentypen • Kompliziertere Graphikobjekte bauen auf Punktwolken, Flächen (IndexedFaceSet) oder Linien (IndexedLineSet) auf. • Zusammenfassung durch Transform-Knoten mit den Transformationsoperationen Skalierung, Rotation und Translation (auch kombiniert) • Anzeige Materialeigenschaften, auch mit transparenten Texturen möglich. • diverse Lichtquellen (Punkt- Fläschenquelle) + Schattierungsoptionen • Sensoren für Benutzeraktionen bzw. Time-sensor für Animationen. • Interpolatoren für Animation , auch für Bewegung des Betrachters ... • Knotenmanipulation durch Skripte • USE-Befehl für Wiederverwendung („DEF“ für Definiton) • LOD (Level of Detail) ermöglicht eine entfernungsabhängige Anzeige von Details (Betrachter: weit weg -> nur Quader+Prisma, nah: Haus mit Fenstern) • Billboards (Tafeln immer in Richtung Betrachter) für Visualisierung von Texten und Hilfen (Eingabe ???) ie dem Benutzer immer ihre Breitseite zudrehen • ... Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 27 VRML und X3D - Beispiel1 - Statische Codierung #VRML V2.0 utf8 # ^^^^^ this is the MANDATORY header line # The VRML Primer # 1997 Daniel K. Schneider, TECFA # No Copyright # Draw a blue cylinder - a first node specifying an object # Radius and height can be floating numbers Shape { geometry Cylinder { radius 0.1 height 3.0 } appearance Appearance { material Material { diffuseColor 0 0 1 } } } Transform { # Move the pen up - a second node specifying a translation translation 0 2 0 children [ Shape { geometry Sphere {} } ] } Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 28 14 VRML und X3D - Beispiel2 - Level of Detail ist eine Art Switch-Anweisung als Funktion der Betrachterentfernung LOD { center range level 0.0 0.0 0.0 [10, 15] [ # LEVEL III: Detail Inline { url "inter-persons-2.wrl" } # LEVEL II: The bunch as a whole Anchor { ...... } # LEVEL III: .... Shape { .... } - weitere Beispiele : siehe Quellen Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 29 Java3D • Java-Klassenbibliothek zur Erzeugung, Manipulation und Darstellung von 3D- in von Java-Anwendungsprogrammen und –Applets • Erste Version von Java 3D ab 1997 von Sun Microsystem, aktuell Version 1.4 • Sun hat 2004 die Weiterentwicklung eingestellt • seit Sommer 2004 ist Java 3d als Open Source freigegeben unter https://java3d.dev.java.net/ • Java 3D bildet 3D-Welt auf darunterliegende OpenGL- oder DirectX-Schnittstelle mit einem objektorientierten Szenengraphen ab (im Szenengraph sind Objekite und daruf angewendete Transformationen enthalten) • Versionen für OpenGL (Win/Unix) und Direct3D (nur Win..) • hoch wie bei direkter Programmierung mit C und OpenGL oder Direct3D. Daher besteht die Möglichkeit, leistungsfähige 3D-Szenarien zu entwickeln, welche auf der GUI visualisiert werden können. • Leider kein direkter Zugriff auf auf OpenGL- oder Direct3D-Funktionen möglich, daher ist die Einführung neuer Grafikartenfunktionen nur relativ zeitverzögert durch neue Java3D-Versionen möglich (Problem für Spieleentwickler) Bewertung : Nach Ausstieg von SUN kritisch, Beobachtung des Open-Sourceprojektes sinnvoll ! Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 30 15 Ausblick zu SVG , VRML und X3D Allgemeine Einschätzung : Nach einer Boomphase Ende der 90er Jahre ist es wieder relativ ruhig ! 1. Die realen Effekte rechtfertigen nicht immer die Aufwendungen, insbesondere Ärger mit den Plugins ... 2. Es gibt keine großen IT-Hersteller, welche die Standards richtig vorantreiben : 1. Adobe hat SVG bis zum Kauf vom Macromedia stark unterstützt, danach die Entwicklung eingestellt 2. SUN hat das Entwicklerteam von Java 3D gefeuert und erst nach großen Protesten der Community teilweise wieder eingestellt 3. Open-Source-Projekte laufen (aus der Not heraus) 4. 5. 6. 7. Langfristig könnte 2d/3D-Visualisierung sehr interessant werden: siehe Vista mit 3D-Menüs LOD als Formulareffekt (LOD klein -> nur wichtige Stammdaten, LOD -> groß : alle Daten zur einer Firma ... ) Rückseite eines Formulars -> vertrauliche Info für den Chef ... Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 31 16