Home

FACHHOCHSCHULE WEDEL Bachelor-Thesis Konvertierung der

image

Contents

1. viewer cpp Die WinMain und die main_loop Methoden werden zu den Methoden SLMainStart SLMainLoop und SLMainEnd SLMainStart f hrt einen normalen Programmstart von Second Life aus ohne dabei die Flashscreens anzuzeigen und initialisiert dabei die SLMainLoop Diese f hrt einen einzigen Durchlauf der fr heren main_loop durch die um das Handling von Benutzereingaben und Screenshots erleichtert wurde Die SLMainEnd Methode f hrt nur den Teil aus der in der fr heren WinMain Methode hinter dem Aufruf von main_loop stand und r umt somit Second Life wieder auf pipeline cpp unterst tzt die IIviewerdisplay cpp die IIdrawpoolsimple cpp und die IIdrawpoolavatar cpp indem der Renderingvorgang ebenfalls durch Weglassen von Methodenaufrufen erleichtert wird Au erdem wird eine Fallentscheidung modifiziert so dass nur Avatare und einfache Objekte gerendert werden nur zulassen von Avatare und einfachen Objekten if hasRenderType poolp gt getType kk poolp gt getNumPasses gt 0 amp amp poolp gt getType LLRenderTypeMask RENDER_TYPE_AVATAR poolp gt getType LLRenderTypeMask RENDER_TYPE_SIMPLE Ausschluss der Gegenstandsgruppe 6 mit der ID 3 die nicht ben tigt werden Gruppe 5 und 7 sind Avatare und ben tigte einfache Objekte if poolp gt getId 3 amp amp p gt g
2. Bedeutung Es existiert bereits ein HTTP Client der Daten an den weblin Server schickt oder geschickt hat Behebung Starten Sie das Programm neu und f hren Sie Verschicke XML aus e XML oder komprimiertes XML nicht gefunden Meldung Kann XML Datei oder komprimierte XML Datei nicht finden Bedeutung Die Datei welche zum weblin Server hochgeladen werden soll existiert nicht Behebung Falls Sie die Animationen bereits erfolgreich erstellt haben f hren Sie Erstelle XML erneut aus Andernfalls w hlen Sie im Anmeldedialog die Option Start e Zu kleine XML Datei Meldung Ung ltige XML Datei Die Datei ist zu klein Bedeutung Die XML Datei ist ung ltig da Ihre Gr e nicht ausreicht um Animationen darzustellen Behebung Generieren Sie die Bilder und die XML Datei neu Wenn dies nicht zur Behebung des Fehlers f hrt bearbeiten Sie bei ausreichender Kenntnis in XML die Dateien gestures xml und gesturesFemale xml Ansonsten installieren Sie bitte wSLGen neu 71 Vgl Kapitel 6 3 3 4 Benutzerhandbuch 57 e Falsche weblin Anmeldedaten Meldung Falscher weblin Benutzername oder Passwort Bedeutung Der von Ihnen angegebene Benutzername oder das Passwort ist falsch Behebung Geben Sie im Anmeldedialog Ihr richtigen Benutzernamen und das richtige Passwort an Wenn das Generieren der XML Datei bereits abgeschlossen wurde w hlen Sie danach nur Verschicke XML aus
3. f r weblin Diese Dateien die aus dem weblin Client bernommen wurden bilden die Basisfunktionalit ten ab 24 Portable Network Graphic 5 Vgl Viewer Source Link http wiki secondlife com wiki Viewer_source Entwicklung des weblin Second Life Generator 17 Aus dem weblin Client e wHTTPClient einfacher HTTP Client f r einmalige Anfrage e wSElem Strukturen und Klassen f r Schl ssel Wert Paare als Liste e wSString verwaltet UTF 8 Strings e wSSystem Speicher und Zeigerverwaltung e wStdAfx l dt einige ben tigte Windows Header Dateien e wThread abstrakte Darstellung eines Windows Threads Im Rahmen dieser Arbeit erstellte Dateien e wAvatarGenerator Hauptprogramm e wChooseLangDialog Sprachauswahldialog e wDialog Basis Windowsdialog e wGenerator Controller der Programmfunktionalit t e wGenXMLThread l dt Bilder und generiert eine XML Datei e wHTTPClientWrapper kapselt eine HTTP Anfrage e wLoginDialog zeigt den Anmeldedialog an e wProgressDialog zeigt den Fortschrittsdialog an e wSavePNGThread optimiert und speichert Bilder e wTools kleine Hilfsklassen e wTypes Makros Typen und Aufz hlungen e wPreprocessor Makros f r die vorkompilierten Header 26 HyperText Transfer Protocol 7 8 Bit Unicode Transformation Format Entwicklung des weblin Second Life Generator 18 2 4 2 2 Programmorganisationsplan Der Programmorganisationsplan ist in Abb 1 auf der folgenden
4. Entwicklung des weblin Second Life Generator 29 2 4 3 2 1 WHTTPClientWrapper Der WHTTPClientWrapper erbt von der WHTTPClient Klasse Diese wiederum erbt von der Thread Klasse und der WHTTPClient besitzt dadurch zwangsweise eine Execute Methode Diese Methode f hrt einen kompletten HTTP Request durch und ruft dabei die f nf vollst ndig virtuellen Methoden Opened Header Dataln Failed und Closed auf Diese sind in WHTTPClientWrapper zu implementieren Opened wird aufgerufen wenn die Verbindung ge ffnet werden konnte und der HTTP Request erfolgreich abgeschickt wurde In diesem Fall wird im WHTTPClientWrapper nur die Fortschrittsvariable gesetzt die vom Fortschrittsdialog ber getProgress ausgelesen werden kann Ebenso wird beim Aufruf von Closed verfahren Diese Methode wird aufgerufen wenn der HTTP Request vollst ndig abgeschlossen wurde Wenn ein HTTP Response Header empfangen wurde wird die Methode Header aufgerufen Sie aktualisiert ebenso wie Dataln die Fortschrittsvariable Zus tzlich reicht sie den HTTP Statuscode und die weiteren empfangenen Header ber eine Callbackfunktion die von der WGenerator Klasse ber die setHeaderCallback Methode gesetzt wurde an das Hauptprogramm weiter damit die Daten nach dem L schen des Threads nicht verloren gehen Wie f r die Header Methode gilt auch f r Dataln dass die eingegangenen Da
5. PREVIEW_WINDOW Makros beschreiben Position und Ausdehnung des OpenGL Fensters im Fortschrittsdialog welches die Voransicht f r die gerenderten Bilder des Avatar anzeigt PREV_WINDOW_WIDTH PREV_WINDOW_HEIGHT PREV_WINDOW_X PREV_WINDOW_Y Analog zu den PREVIEW_WINDOW Makros sind die SNAP_WINDOW Makros f r das Rendern in einer h heren Aufl sung zust ndig In dem durch diese Makros definierten Fenster werden die hochaufgel sten Bilddaten gerendert EE SNAP_WINDOW_WIDTH i SNAP_WINDOW_HEIGHT i SNAP_WINDOW_X l SNAP_WINDOW_Y i Anzahl der Bildkan le zum Rendern F r RGBA dem entsprechend vier Kan le SNAP_CHANNELS O O O OOOO Diese Makros beschreiben Farbwerte f r die Progressbar wenn die Standardfarbe die blau ist abge ndert wird OK enth lt den Farbcode f r gr n und NOTOK den f r rot a Open Graphics Library Link http www opengl org Entwicklung des weblin Second Life Generator 21 2 4 2 4 Hauptprogramm Das Hauptprogramm bezeichnet hier den Programmeinstiegspunkt sowie von diesem aufgerufene Methoden die nicht Bestandteil von Klassen sind Bei Programmstart werden zuerst die Windows Common Controls initialisiert um die Fortschrittsbalken und Listboxen verwenden zu k nnen Die RichEdit DLL wird hinzu geladen Wenn das Initialisieren und Laden erfolgreich verlaufen ist wird damit fortgefahren die eigene Initialisierungsdatei z
6. nschen einen komplett einmaligen Avatar generieren ohne Kenntnis von 3D Bearbeitungsprogrammen oder hnlichem zu haben Die bisherigen Mittel um einen eigenen Avatar f r weblin erstellen zu lassen sind zwar sehr einfach bedienbar aber nicht im gew nschten Ma e individualisierbar wie dies in Second Life der Fall ist Wenn dem Benutzer der erstellte Avatar nicht mehr zusagen sollte kann dieser einfach durch nderung des Second Life Avatar angepasst und neu f r weblin generiert werden Nat rlich ist ebenfalls m glich dass jemand in weblin und Second Life aktiv ist und die beiden oben aufgef hrten F lle verkn pfen will um sich einheitlich nach au en in die virtuellen Welten zu pr sentieren Zusammenfassung 44 4 Zusammenfassung Die Umsetzung der Aufgabenstellung als Plugin f r weblin war nicht m glich da der Umfang und die Gr e f r ein Plugin zu umfangreich waren Als eigenst ndige Applikation wurde das entwickelte Programm allerdings seiner Aufgabenstellung gerecht zu der noch serverseitig im Produktivbetrieb die Implementierung der Schnittstelle zum Hochladen der Daten erfolgen muss Mit der erstellten Applikation kann ein Benutzer auf einfache Weise per Knopfdruck seinen Avatar von Second Life nach weblin konvertieren und dort verwenden Die direkte Anzeige von 3D Avataren aus nahezu beliebigen virtuellen Welten ist zurzeit mit einem unverh ltnism ig hohen Aufwand verbunden Um die direkte Anzeige effizient
7. wie Geb ude oder B ume um nicht ins Hintertreffen im Verh ltnis zu den diversen neu entstandenen virtuellen Welten zu geraten 6 Animated PNG 62 Link http www second life info de sl endlich realistische grafiken in secondlife Benutzerhandbuch 48 6 Benutzerhandbuch 6 1 Anforderungen Die Anforderungen entsprechen grundlegend denen des Second Life Clients Dieses Programm ist nicht unter Mac OS oder Linux lauff hig und baut auf dem Second Life Client 1 18 2 1 auf Zus tzlich wird durch die Bilder mehr Arbeitsspeicher ben tigt Dementsprechend liegen die Anforderungen bei Komponente Anforderungen Internetanschluss DSL oder Kabel Betriebssystem Windows 2000 XP oder Vista Prozessor 1400 MHz Pentium IV Athlon oder besser Arbeitsspeicher 768 MB Grafikkarte 2000 XP NVIDIA GeForce 4 oder besser ATI Radeon 9250 oder besser Intel 945 Chipsatz Grafikkarte Vista NVIDIA GeForce 6600 oder besser neueste Treiber n tig ATI Radeon 9500 oder besser Intel 945 Chipsatz Festplattenplatz 300 MB davon 230 MB auf der Systempartition Tab 4 Systemanforderungen des Programms 6 2 Installation Starten Sie die wSLGen_setup exe und folgen Sie den Installationsanweisungen Sie sollten darauf achten die n tigen Rechte auf dem Betriebssystem zu besitzen sowie dass der Programmordner untergeordnete Ordner und der bergeordnete Ordner nicht schreibges
8. Einfluss genommen werden daher werden Fehler innerhalb des Second Life Clients nur soweit beseitigt wie sie auftreten reproduzierbar und lokalisierbar sind Ebenso gibt es zu diesen Fehlern keine genaueren Behebungsans tze im Benutzerhandbuch Fehler in neu erstellten Programmteilen werden durch verschiedene Kontrollen abgefangen und bei Auftreten wird der Variable sError_ der Klasse glob ein Fehlertext als Inhalt gesetzt Die Methoden besitzen wenn Fehler auftreten k nnen eine bool sche Variable bOk Diese wird im Fehlerfall auf false gesetzt und alle nachfolgenden Teile der Methode werden nicht mehr ausgef hrt Meistens wird im Fehlerfall zus tzlich die bLeaveDialog_ oder die bQuit_ Variable der glob Klasse gesetzt Ist der Programmablauf wieder in der Hauptschleife z B vom DI Fortschrittsdialog angekommen wird die Variable sError_ berpr ft ob sie Fehlermeldungen enth lt Ist dies der Fall werden diese ber ein Dialogfenster ausgegeben Wenn es sich nicht um kritische Fehler handelt wird nur bLeaveDialog_ auf true gesetzt und der Fortschrittsdialog verlassen um wieder zum Anmeldedialog zur ckzukehren Trat hingegen ein schwerwiegender Fehler auf und die bQuit_ Variable besitzt den Wahrheitswert true wird versucht das Programm so weit wie m glich aufzur umen und ordnungsgem zu beenden Spezielle Fehlerklassen z B f r Ausnahmen existieren nic
9. Eingabefelder sind f r die Zugangsdaten zu Ihrem weblin Account Daf r ben tigen Sie die kostenlose weblin Vollversion mit der Trial Version ist dies nicht m glich Diese Felder sind nur f r die Optionen Start und Verschicke XML notwendig da nur unter diesen beiden Optionen eine Verbindung zum weblin Server aufgebaut wird In dem ersten Feld tragen Sie ihre E Mail Adresse ein mit der Sie bei weblin angemeldet sind in das zweite Feld das dazugeh rige Passwort Die drei Felder darunter sind f r Ihre Second Life Anmeldungsdaten In das erste Feld geben Sie den Vor in das zweite den Nachnamen ihrer Figur ein und in das dritte Feld das dazugeh rige Passwort Diese Felder werden nur f r die Optionen Start und Erstelle Bilder ben tigt Benutzerhandbuch 51 6 3 2 2 Fortschrittsdialog weblin Second Life Figurgenerator f x Speichere Second Life Daten zwischen Lade Figurdaten und getragene Gegenst nde Warte bis du alle Gegenst nde an deiner Figur sehen kannst klicke dann auf den Start Knopf Anmeldung bei Second Life EI Speichere Second Life Daten zwischen Animiere Figur Generiere PNG s Generiere XML Schicke an weblin Start Warte auf dr cken des Startknopfes UUBDNAUUERNENRUNAHNLUNAUHNNNDRUGONNNDNAUDNNNDNRUNNNED Abb 6 Fortschrittsdialog Der Fortschrittsdialog allgemein besteht aus einer Kopfzeile in der textuell die momentane Aktion und eine Kurzbeschreibung dazu festgehalten werden Mitti
10. Seite dargestellt Folgende Anmerkungen dienen dem besseren Verst ndnis und der Nachvollziehbarkeit der Darstelung Die wTools Datei ist eine Sammlung von Hilfsklassen die von allen anderen Programmteilen verwendet wird In ihr ist die glob Klasse das zentrale Element Im Programmorganisationsplan wurde bewusst auf eine genauere Darstellung der Zugriffe von au erhalb der wTools verzichtet um die bersicht zu gewahren Die Threads die von der abstrakten Thread Klasse erben werden von WGenerator aufgerufen Die Pfeile sind hier beidseitig da die Threadklassen ber Callbackmethoden den WGenerator aufrufen Ebenso wie bei der abstrakten Thread Klasse bedeutet es bei der abstrakten WDialog Klasse dass die erbenden Klassen Zugriff auf die wTools haben 19 Entwicklung des weblin Second Life Generator Jsddeimusl9dLLHM PeSsJULONdSABSM PesJyuL71NXUs3DM Bojeilau bo7Mm Y pesuyL Bojeig buerj3sooysM Bojeigsss1 oldM Bojeiaxog V 3171 puo2 WE oof Bole am JOoyEI19UIHIEJEAYM Abb 1 Programmablaufplan Entwicklung des weblin Second Life Generator 20 2 4 2 3 Makros In den folgenden Abschnitten werden die verwendeten Makros nach ihrer Funktion geordnet dargestellt Die Compiler Flag Makros verhindern dass Quellcode f r Audio und Video mitkompiliert sowie dass die Umgebung in Second Life angepasst wird WEBLIN_AUDIO WEBLIN_VIDEO BEE Die
11. chat Das type Attribut gibt an ob die Animation ein Status eine Basisanimation eine Geste oder eine bergangsanimation zwischen zwei Status ist z B vom Stehen zum Sitzen definiert Basis und Statusanimationen werden beim Betreten des Raumes geladen Gesten und bergangsanimationen auf Anfrage wenn diese ausf hrt werden in und out definieren welcher Status vor bzw nach der Animation gilt Die normale Avatarkonfigurationsdatei besitzt anstatt mehrerer image Tags nur ein animation Tag welches ein src Attribut besitzt in dem sich der absolute Pfad zu dem Bild befindet 16 Vgl Kapitel 2 4 1 6 Entwicklung des weblin Second Life Generator 14 2 4 1 4 Speicherverwaltung Es wird im Besonderen darauf geachtet dass kritischer Speicher oder gro e Mengen an Speicher sauber wieder freigegeben werden So m ssen z B alle GDI Objekte wieder freigegeben werden da die Applikation ansonsten nach wenigen Sekunden so viele dieser Objekte besitzen kann dass keine andere Anwendung mehr arbeiten kann Au erdem m ssen alle generierten Bilder sowie deren Kopien komplett freigegeben werden da die Auslagerungsdatei ansonsten sehr schnell vollst ndig belegt ist Die Speicherverwaltung wird ansonsten durch die Objektorientierung erreicht Es gibt z B die glob Klasse die ein Singleton ist und somit nur eine Instanz dieser Klasse w hrend der gesamten Programmlaufzeit existiert Auf die Smartheap Bibliothek die von S
12. kann indirekt ber das LLVOAvatar Objekt des eigenen Avatars auf das Geschlecht zugegriffen werden um die entsprechende Animationsdefinitionsdatei zu laden Im Folgenden werden einige Codebeispiele f r Zugriffe aufgef hrt erstellt eine neue Animation im Cache gAgent getAvatarObject gt createMotion mMotionID startet eine erstellte Animation anhand der ID gAgent getAvatarObject gt startMotion standID gibt die globale Position des Charakters zur ck f r die Kameraausrichtung gAgent getAvatarobject gt getCharacterPosition gibt das Geschlecht des Avatars zur ck gAgent getAvatarObject gt getSex EE EE 54 Vgl Kapitel 2 4 1 3 Entwicklung des weblin Second Life Generator 36 2 4 3 5 2 LLBVHLoader Der LLBVHLoader wird verwendet um BVH Dateien zu laden und die Animationen in den Second Life Cache zu laden W hrenddessen erm glicht er mit Hilfe einer LLTransactionID die zugeh rige LLUUID der Animation zu ermitteln 2 4 3 5 3 LLKeyframeMotion LLKeyframeMotion verarbeitet die Animationsdaten aus dem Cache und wendet sie auf die einzelnen Gelenke des Avatars an Wenn Zwischenschritte n tig sind wird interpoliert Da die Animationen aber meist f r zehn Frames pro Sekunde ausgelegt ist und der Second Life interne Timer so umgeschrieben wurde dass er die Animation simuliert dass alle 0 1 Sekunden ein Animationsschritt gerendert wird ist es
13. m ssen eigene Animationen erstellt werden die sich auf einen solchen Aktionsbereich beschr nken um die Gr e der Darstellung des Avatars zu erh hen Diese Animationen m ssen selbstst ndig im modifizierten Second Life Client abgespielt werden da sie nicht f r andere Benutzer von Second Life sichtbar sein und zudem nichts kosten sollen Das Hochladen von Animationen auf den Second Life Server ist aber kostenpflichtig Entwicklung des weblin Second Life Generator 10 Es stellt kein Problem dar auf Basis des Second Life Clients zu arbeiten da dieser unter der GPL steht und somit open source ist Es ist in diesem Fall auch nicht mehr m glich sich als fremde Identit t auszugeben da zum Generieren der Bilder die Authentifizierung am Second Life Server notwendig ist Das Problem der Aktionsdimensionen wir in jedem Fall in der Art gel st dass die Animation aus der gew hlten Kameraperspektive nur zweidimensional erfolgt Die verwendeten Animationen m ssen dementsprechend darauf ausgelegt sein den Avatar nicht in die Tiefe zu bewegen In der H he darf der Avatar nur im Rahmen der 100 mal 100 Pixel bewegt werden 12 General Public Licence Entwicklung des weblin Second Life Generator 11 2 4 Realisation 2 4 1 Grundlegendes 2 4 1 1 Programmiersprachen Aus der Realisationsanalyse geht hervor dass die Aufgabe durch eine eigenst ndige Applikation zu l sen ist Unabh ngig von der ausgew hlten Realisation wird die
14. meistens nicht n tig die Animationen zu interpolieren 2 4 3 5 4 LLimageRaw LLimageRaw Objekte stellen wunkomprimierte Bilder dar die einige Basisfunktionalit ten besitzen Sie k nnen skalieren ausschneiden H he Breite und Gr e auslesen oder Zeiger auf die eigentlichen Bilddaten erhalten um diese zu bearbeiten Diese Klasse wird verwendet um alle generierten Bilder zu speichern ob f r die Vorschau oder um sie sp ter zu den finalen Einzelbildern der Animationen zu bearbeiten 2 4 3 5 5 LLUUID LLUUIDs sind Zeichenketten aus Nummernpaaren die durch Minus verbunden sind UUID steht f r Universal Unique Identifier Also eindeutige Identifikationsnummern die f r etliche Zwecke verwendet werden beispielsweise um eine Textur ein Objekt einen Avatar eine Animation oder hnliches zu identifizieren ber diese IDs k nnen aus dem virtuellen Dateisystem von Second Life oder seinem Cache Daten auf Anfrage erhalten werden die eindeutig zuzuordnen sind 55 Bounding Volume Hierarchies 58 Universal Unique Identifier Entwicklung des weblin Second Life Generator 37 2 4 3 5 6 LLViewerCamera Die LLViewerCamera bestimmt unter anderem Blickrichtung und Sichtweite auf den Avatar Daher ist sie sehr wichtig weil ihr point of view immer genau auf die Mitte des Avatars gerichtet sein sollte und sie nicht zu weit weg von dem Avatar sein darf so dass Objekte nicht mehr gezeichnet werden Die Entfernung in der O
15. nicht eigenen Avatare vom Rendervorgan aus if single_avatar amp amp avatarp gt mIsSelf avatarp single_avatar e Idrawable cpp Bei der berpr fung auf Sichtbarkeit des Objektes werden alle Objekte ausgeschlossen die nicht zu dem eigenen Avatar geh ren LLVOAvatar av LLVOAvatar findAvatarFromAttachment LLViewerObject getVObj if av amp amp av gt isSelf return FALSE ee ee ee ee OEE EOE E E BOERE LE EEOAE TETEE e Iwindowwin32 cpp Erstellen der OpenGL Fenster f r das Rendern und das Vorschaubild Weiterleiten der MessageBox Nachrichten an die erstellte Second Life umfassende Applikation und Unterbinden der Anzeige des Logoscreens beim Laden vom Second Life e Ilfsthread cpp IIvfsthread cpp Ver nderung des Destruktors so dass dieser sicher ist und keine Speicherzugriffsfehler mehr verursachen kann e Idir_win32 cpp Wenn Second Life gestartet wird und im Ordner des Benutzers noch keine settings xml existiert wird diese angelegt e Ifloater cpp Imodaldialog cpp Iview cpp Die Zeichenmethoden wurden umgangen da die erzeugten Dialoge den Avatar berdecken w rden wenn sie auftreten Die Mitteilungen die im LLModalDialog angezeigt w rden werden direkt an den Fortschrittsdialog weitergeleitet Entwicklung des weblin Second Life Generator 41 e frametimer cpp Der Applikationstimer von Second Life
16. noch viel weiter Matrix beschreibt nur eine idealisierte Form davon Eine virtuelle Welt in der es den Bewohnern nicht auff llt dass sie sich in einer solchen befinden Virtuelle Welten sind in diesem Sinne alle nicht real existierenden Umgebungen Diese k nnen computerbasiert sein oder zum Beispiel nur im Kopf eines einzelnen Menschen oder eine Gruppe existieren wie beispielsweise bei dem Rollenspiel Das schwarze Auge Computerbasierte simulierte Welten besitzen f r gew hnlich physikalische oder topologische Eigenschaften der realen Welt und simulieren meist in Echtzeit Es z hlen alle Applikationen zu virtuellen Welten in denen der Benutzer mit dieser Welt interagieren kann Tetris oder Pong als virtuelle Welten einzuordnen w rde zu weit gehen aber einfache Spiele wie Super Mario sind durchaus denkbar Sie stellen eine virtuelle Umgebung dar in der relativ frei agiert werden kann Zur Interaktion in der Welt ist es nicht zwingend n tig eine grafische Darstellung in 2D oder 3D zu haben Virtuelle Welten k nnen auch rein textbasiert sein Heute unterscheiden sich die computerbasierten virtuellen Welten grob in drei Kategorien Einerseits die Singleplayer Welten in denen der Benutzer nicht mit virtuellen Charakteren interagieren kann die von anderen realen Benutzern gesteuert werden Andererseits zwei Arten der Multiplayer Welten Zum einen die Spiele in denen es klare Ziele zu erreichen gilt Zum
17. nutzen zu k nnen m ssen sich erst die gerade in der Entwicklung befindlichen Standards durchsetzen so dass nicht f r jede virtuelle Welt ein eigenst ndiges Programm oder Plugin welches auf dem Nutzercomputer vorinstallierte Programmteile nutzt ben tigt wird Wobei der gr te Teil des Aufwands f r die entwickelte Applikation die Einarbeitung in den Quellcode des Second Life Clients die Kommunikation mit dem Second Life Server und die WinAPI war Ausblick 45 5 Ausblick 5 1 weblin Second Life Generator 5 1 1 M gliche Erweiterungen Die XML Datei f r Gestiken k nnte z B um einen Status sitzen erweitert werden F r diese w ren allerdings sehr viele bergangsanimationen zu allen im stehen ausgef hrten Animationen n tig was auch die XML Datei enorm vergr ern w rde Die Eingabefelder k nnen vor dem Starten einer spezifischeren berpr fung unterzogen werden z B durch Anfragen am Server ob das eingegebene Konto existiert Die Dialoge f r das ausschlie liche Erstellen von XML oder des Hochladens k nnen angepasst werden da die Freir ume auf diesen Dialogen sehr gro sind 5 1 2 Ansatzpunkte f r Optimierungen Die Berechnung f r die Ermittlung der optimalen Bildausma e aus dem Originalbild kann optimiert werden auch wenn der Avatar nahezu beliebiger Struktur sein kann ist es nicht notwendig jeden Pixel zu berpr fen Die Variablen die von Threadaufrufen oder indirekt durch deren Call
18. wird stellt gleichzeitig eine Avatarkonfiguration dar ebenso wie sie die Bilder der Animationen enth lt Um diese Datei zu erstellen wird der normale Baum einer Avatarkonfiguration erstellt und die einzelnen sequence Tags werden mit image Tags gef llt je nachdem wie viele Bilder diese Animationssequenz besitzt Die image Tags sind mit den Bilddaten des jeweiligen Bildes als PNG codiert gef llt Dazu werden die Bilddateien welche vom WSavePNGThread generiert wurden bin r geladen und Base64 enkodiert Base64 verzichtet auf zwei Bits je Byte und schafft so eine Bin rdarstellung die in Textdateien abgebildet werden kann und dabei ausschlie lich 64 Zeichen verwendet die in jeder Zeichencodierung dargestellt werden k nnen Daf r werden die 26 Klein und 26 Gro buchstaben die Zahlen null bis neun und zwei zus tzliche Zeichen verwendet die in den ersten 128 Zeichen ASCII liegen und keine Steuerzeichen sind Die als PNG abgespeicherten Bilder k nnen durch Komprimierung nur sehr minimal in der Dateigr e optimiert werden Die fertige XML Datei wird dennoch per gzip komprimiert da die Komprimierung die um 25 Prozent erh hte Dateigr e welche durch die Base64 Enkodierung entstanden ist wieder aufhebt Sobald dieser Vorgang abgeschlossen ist wird die Callbackmethode ausgef hrt die das Hauptprogramm benachrichtigt dass der Thread erfolgreich ausgef hrt wurde und das Threadobjekt l scht 7 Vgl Kapitel 2 4 1 3 48 American Standa
19. wurde so manipuliert dass Second Life suggeriert wird es w rde alle 0 1 Sekunden aufgerufen Dies ist n tig um eine bestimmte Anzahl an Bildern pro Animation vorherzubestimmen und diese auch zu generieren Dadurch l uft das Rendern der Avatare auf unterschiedlichen Maschinen nat rlich unterschiedlich schnell Es besteht aber nicht der Anspruch von Echtzeit in dem Rendervorgang total_time ist in Mikrosekunden angegeben 100000 entspricht 0 1 Sekunden U64 total_time sStartTotalTime sFrameCount 100000 EE e error cpp In der Log flush Methode wurde der Aufruf der crashFunction verhindert und stattdessen das Programm normal beendet ohne gezielt einen Speicherzugriffsfehler zu verursachen Die crashAndLoop Methode des Second Life Clients crash 0 while true d Loop forever in case the crash didn t work Entwicklung des weblin Second Life Generator 42 2 4 5 Fehlerbehandlung Generell wird versucht Fehler von vornherein zu vermeiden Diese sind aber bei Benutzereingaben verwendeten anderen Softwarest cken und erst recht bei der Kommunikation ber ein Netzwerk nicht immer zu vermeiden Da das entwickelte Programm auf dem Second Life Client 1 18 2 1 basiert und die Oberfl che eine komplett andere ist ist es n tig alle im Second Life Client behandelten Fehler an die neue Oberfl che weiter zu leiten um diese dem Benutzer mitzuteilen Auf Fehler in Second Life kann kaum
20. 00444000000000RR0HRRRHRnHHRHn HR Bann aan aan nn nn nun kun anna nun V Tabellenverzeichnis u u ee nenn V 1 Einleitung sanken 1 1 1 Virtuelle Welten uussssssnannnnnnnannnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 1 1 2 Virtuelle Pr senzen E 2 E DW UI 3 1 4 Second Life aan na an aa 4 U D 5 1 6 AUTGaBE 5 4 0500 inne ne een 5 2 Entwicklung des weblin Second Life Generator uuusuusnensnnnnnnnennnnnnnnnnnnnnnn 6 2 1 Entwicklungskonfiguration 444444444RRR nn 6 2 1 1 Hardware aussen 6 212 SOMWA EE 6 2 2 Problemanalyse 1 0224u 0n0uns21200n00unnA0Ann nn ann En snnTnn nun nenn nun Annan nananne 7 2 3 Realisationsanalyse und beschreibung ussreresnnnnnnannnnennennnnnnnannnnnenn 8 2 4 Realisation 004 2020 20040 EEER nun ann annahm han nn anna anna ann 11 2 4 1 E wiele Een E 11 2 4 1 1 Geelen see an 11 24 1 2 Datentypen aussen einen 11 2 4 1 3 Dateistirukturen nee 12 2 4 1 4 Gpeichervenwaltung ENNEN 14 2 4 1 5 CGompilereinstellungen AAA 14 E ee Ee 15 E e e e ee 16 2 4 2 tele T ru Ee TT 16 2 4 2 1 Dateien 16 2 4 2 2 Programmorganisationsplan EE 18 2 4 2 3 Makros 000200444044nennnennnnnnnnnnnnnnnnnnnnnnnennnnnnnnnnnnnnnennnnnnnnnnnnnnnnnnnne 20 24 242 Halplprogami a ee a eR EAER EEEE R 21 2432 EE Eege 24 2 4 3 1 ET 24 2 4 3 2 Threacdklaseen nenn nnn nenna 28 2 4 3 2 1 WHTTPClientWrapper uk 29 24 322 WSavePN
21. 02 Service Pack 2 Microsoft Visual Studio NET Professional 2003 Microsoft NET Framework 1 1 Service Pack 1 Microsoft Plattform SDK 2003 Microsoft DirectX SDK Dezember 2006 Nullsoft Scriptable Install System ActivePython 2 5 1 1 QAvimator Vgl Kapitel 2 4 1 6 Tab 2 Entwicklungssoftware Entwicklung des weblin Second Life Generator 7 2 2 Problemanalyse Bei dieser recht groben aber doch sehr speziellen Aufgabenstellung treten diverse Problemf lle auf die es zu l sen gilt Figuren in Second Life oder weblin im Folgenden Avatare genannt bestehen bei Second Life aus einer Definition f r das Aussehen des Avatar selbst welches im so genannten Genpool beschrieben wird und aus seinen Attachments Dies sind die in Second Life verwendeten Objekte die ein Avatar tr gt beispielsweise Gegenst nde wie Kleidung Schmuck eine Per cke oder Vergleichbares Diese Attachments k nnen zus tzlich noch Eigenschaften haben die durch Skripte definiert sind die ber die LSL die Linden Scripting Language beschrieben werden k nnen Das erste und vorrangige Problem besteht in der Datenbeschaffung da diese nicht einzeln direkt und beliebig vom Second Life Server abgefragt werden k nnen Die Daten die zur Darstellung eines Avatar ben tigt werden umfassen eine enorme Gr e Dabei gilt es das Problem zu l sen wie der Benutzer gleichzeitig das Programm verwenden und sich ohn
22. Falls Sie kein weblin Konto besitzen k nnen Sie auf der weblin Webseite eines erstellen e HTTP Fehler Meldung HTTP Fehler Bedeutung Beim Senden der Animationen in der XML Datei ist ein HTTP Fehler aufgetreten Der zugeh rige Statuscode ist mit angegeben Behebung Versichern Sie sich dass Ihre Internetverbindung aktiv ist und Sie eine Verbindung zur Seite von weblin aufbauen k nnen sowie dass Sie keine Firewall aktiv haben die wSLGen blockt e Fehlen der settings xmI Meldung Second Life Error ERROR Invalid name for LLDir setLindenUserDir Bedeutung Die Datei settings xml ist weder im WeblinAvatar Ordner noch in Anwendungsdaten wSLGen user_settings zu finden oder besch digt Behebung Bitte installieren Sie wSLGen neu oder kopieren Sie aus demselben Ordner des Second Life Verzeichnisses die settings xm Datei e Andere Second Life Fehler Meldung Second Life Fehler Bedeutung Dies ist ein Fehler der von dem Second Life Client ausgel st wurde Behebung Um diesen Fehler zu beheben wenden Sie sich bitte an Linden Labs vorausgesetzt er wurde hier nicht weiter beschrieben 7 Vgl Kapitel 6 3 3 4 73 Link zur Herstellerseite http www weblin com 74 Link zur Herstellerseite http www weblin com Benutzerhandbuch 58 6 5 Wiederanlaufbedingungen Nach einem Absturz oder Beendigung des Programms durch einen Fehler reicht es im Norma
23. G Thread E 29 2 4 3 2 3 WOENAMLThrSaB een 31 2 4 3 3 DialogklaSS ME 32 2 4 3 3 1 WLoginDialog runs en ieor eiis 32 21332 WProgressDialOg nu ee 32 2 4 3 3 3 WChoosel angtalog e 33 2 4 3 4 HIIISKIASSEN EE 33 Inhaltsverzeichnis IV 2 43 41 BoxDi8l89 E 33 24 342 E 33 E BE An 0 EE 34 24344A N idee EE 34 2A 232 e een 34 24 3460 E nee ee 35 2 4 3 5 Wichtige verwendete Second Life Klassen 35 2 4 33 1 LLAgEN nen aaa 35 24352 EE E 36 2 2 3 9 3 LLRevirameMOlon EE 36 24 334 len ee einen 36 243 GI LEN ee ee 36 2 4 3 5 6 LLViewerCamera seuseineneianaen 37 2 4 3 5 7 LLVISWSrOBJSCHLBl ae Eeee ERR 37 2 4 4 Wichtige Anderungen an Second Life Dateien 38 2 4 5 FehlerDehiandlUNd E 42 E E ET 43 4 Zusammenlassung E 44 5 AUSDliCK QPBRNBNERBEREENDENNEEIEEEENEEEEEREEEEEE DEF REREERUEEENEEEEEEEEEEEEFENEBEEREEEUEREEEEREEEEREEEEEKENERFERERFER 45 5 1 weblin Second Life Generator uursssnsssnannannnnnnnnnnnnnnnnnnnnnnnnnnnnnennnnnnnn 45 5 1 1 M gliche Erweiterungen ner sea a a 45 5 1 2 Ansatzpunkte f r Optimierungen sa 45 5 2 Virtuelle Welten allgemein esxsssetssusssukEKAERESRSREEESSERESEREREEESEESEKEREEEEEREEEEEEENRESEN 46 5 3 Virtuelle Pr senzen allgemein uursssnnsenannonnnnnnnnnnnnnnnnnnnnnnnnnnnnnennnnnnnn 46 5 4 weblin und Second Life snesreesstesengegeegge gege esgsgegtengegehete ege eeee kee 47 E Benutzerhandbuch uns nun ne 48 6 1 Anforderungen unse 48 6 2 Installation acscn
24. Programmiersprache C verwendet da sowohl der Second Life Client als auch der weblin Client in C geschrieben sind und bestehende Klassen somit problemlos wieder verwendet werden k nnen F r die serverseitige Verarbeitung wird PHP der PHP Hypertext Preprocessor verwendet und das bestehende Portal um dieses Skript erweitert Da f r die eigenst ndige Applikation auf Basis des Second Life Clients gearbeitet wird ist f r die Generierung der Installationsdatei die Skriptsprache Python vorgegeben 2 4 1 2 Datentypen Mit einer Ausnahme gibt es keine eigenen Datentypen da die Programmstruktur ansonsten komplett objektorientiert aufgebaut ist Diese eine Ausnahme ist der TAnimation Datentyp Er repr sentiert eine Animation und enth lt die Teilbilder als Zeiger auf eine Standardliste mit LLImageRaw Objekten den Animationsschl ssel als LLUUID um die Animation aufzurufen einen vorzeichenlosen 32 Bit Wert mit der Anzahl der Bilder die f r diese Animation gerendert werden m ssen und den Namen der Animation als nullterminierte Zeichenkette struct TAnimation std list lt LLImageRaw gt plmagelist LLUUID animID U32 nAnimSteps char szAnimName 13 Vgl Kapitel 2 4 3 5 4 14 Vgl Kapitel 2 4 3 5 5 Entwicklung des weblin Second Life Generator 12 2 4 1 3 Dateistrukturen Alle Dateien die hier behandelt werden werden w hrend des Programmablaufs erstellt oder geladen Zudem sind sie ausschlie lich f r die d
25. Wenn das Hochladen erfolgreich abgeschlossen wurde wird ein dementsprechendes Nachrichtenfenster angezeigt 65 Vgl Kapitel 2 4 2 1 68 Vgl Kapitel 6 3 3 3 Benutzerhandbuch 54 6 4 Fehlermeldungen e weblin Anmeldungsdaten unvollst ndig Meldung Bitte geben Sie Ihre weblin Anmeldungsdaten ein Bedeutung Sie haben die Anmeldungsdaten f r Ihre Anmeldung bei weblin nicht vollst ndig angegeben Behebung Tragen Sie Ihre Angaben vollst ndig in die daf r vorgesehenen Felder ein e Second Life Anmeldungsdaten unvollst ndig Meldung Bitte geben Sie Ihre Second Life Anmeldungsdaten ein Bedeutung Sie haben die Anmeldungsdaten f r Ihre Anmeldung bei Second Life nicht vollst ndig angegeben Behebung Tragen Sie Ihre Angaben vollst ndig in die daf r vorgesehenen Felder ein e Second Life Anmeldung fehlgeschlagen Meldung Anmeldung Fehlgeschlagen als Vorname Nachname falscher Benutzername oder Passwort Bedeutung Das Anmelden am Second Life Anmeldeserver ist fehlgeschlagen Entweder Benutzername oder Passwort sind falsch oder Sie wurden tempor r gebannt Behebung Geben Sie im Anmeldedialog Ihre richtigen Zugangsdaten f r Second Life an Wenn Sie kein Second Life Konto besitzen k nnen Sie sich unter http www secondlife com eines erstellen Wenn Sie gebannt wurden versuchen Sie es sp ter noch einmal e Parsen der Animationsdefinitionsdatei fehlgeschlagen Meldung Parsen der Def
26. anderen Multiplayer Welten in denen ohne definiertes Ziel jeder Benutzer selbst entscheidet und wie in der wirklichen Welt frei interagieren kann Zwischen den beiden Kategorien von Multiplayer Welten gibt es nat rlich jede Art von Abstufung Der gesamte Bereich der MMOGS ist zwischen diesen beiden Kategorien angeordnet So ist es in World of Warcraft z B unabh ngig von den Aufgaben m glich sich zu bewegen oder 1 Massive Multiplayer Online Gaming Einleitung 2 auch nur mit Mitspielern kommunizieren sowie sich ein Haus einzurichten was den Benutzer dem Ziel des Spiels nicht n her bringt Die Kommunikation in virtuellen Welten erfolgt in jeder erdenklichen Form Text Ton Gestik oder Mimik des Repr sentanten des Benutzers in der Welt 1 2 Virtuelle Pr senzen Virtuelle Pr senzen sind haupts chlich Pr senzen in der virtuellen Welt des World Wide Web Dabei werden Personen die sich zur gleichen Zeit auf der gleichen Webseite bewegen f r den jeweils Anderen sichtbar gemacht Dies kann rein textbasiert geschehen oder aber durch Figuren die den jeweiligen Benutzer repr sentieren Im Vordergrund steht hier die Kommunikation der Benutzer die sich auf dieser Seite aufhalten Diese Kommunikation kann per Text Video oder Audio sein Ein weiterer wesentlicher Aspekt der virtuellen Pr senz ist dass diese dem wirklichen Leben m glichst nahe nachempfunden werden soll Es sollen nur an den Orten hier Webseiten andere Per
27. ate unsigned char glob sSLPass_ c_str glob sSLPass_ bytes passmd5 finalize passmd5 hex_digest hexpass gUserAuthp gt authenticate auth_uris auth_uri_num c_str auth_method c_str globi 8SLEFIFSE_ Ce_str glob sSLLast_ c_str hexpass e IIpreviewanim cpp Alle Animationen werden nur lokal abgespielt die Daten werden nicht an den Second Life Server geschickt e Idrawpoolsimple cpp Das Rendern des Leuchtens von Gegenst nden ist entfernt und das Rendern der Gegenst nde wird auf die aktiven durch Auskommentieren der Anderen beschr nkt 58 Message Digest Algorithm 5 Hashfunktion zum Verschl sseln von Daten Entwicklung des weblin Second Life Generator 40 e Idrawpoolbump cpp Idrawpoolground cpp Idrawpoolsky cpp Idrawpoolterrain cpp Idrawpooltree cpp IIdrawpoolwater cpp In diesen Dateien sind f r die Klassen die render Methoden entfernt worden da solche Objekte nicht ben tigt werden e Idrawpoolavatar cpp Das Rendern der Schatten ist auskommentiert worden da der Avatar sonst ber der Browserleiste schweben k nnte weil der Schatten mit in die Berechnung des Schnittrahmens fallen w rde Au erdem ist beim Rendern die berpr fung ob der zu rendernde Avatar wirklich gerendert werden soll so weit eingeschr nkt dass diese nur bei dem eigenen Avatar zutrifft diese berpr fung schlie t alle nicht
28. backs verwendet werden k nnen durch einsetzen von Semaphoren komplett threadsicher gemacht werden Ausblick 46 5 2 Virtuelle Welten allgemein Bei den bestehenden virtuellen Welten dr ngen besonders seit Second Life so stark in den Medien pr sent wurde immer mehr neue Welten in den Markt die v llig neue Aspekte abdecken Wie anfangs schon beschrieben haben sich Second Life und IBM zusammengetan um Standards zu entwickeln die das Reisen zwischen virtuellen Welten erm glichen Voraussichtlich wird es in naher Zukunft Gruppen von virtuellen Welten geben zwischen denen sich ein Benutzer mit seinem Avatar nahezu frei bewegen kann Es wird zu dieser Gruppenbildung kommen da die Standards nicht durch eine unabh ngige Instanz in den Markt eingebracht werden sondern von den Marktf hrern IBM besch ftigt mittlerweile mehr als 5000 Mitarbeiter in virtuellen Welten Die Bedeutung von virtuellen Welten wird im Allgemeinen zunehmen Es wird dort mit Freunden gespielt eingekauft oder sich einfach nur unterhalten Und zwar in wesentlich weiterem Umfang als es bisher der Fall ist da die virtuellen Welten das Internet im Internet werden k nnen die ebenso rapide zunehmen wie das Internet im letzten Jahrzehnt gewachsen ist 5 3 Virtuelle Pr senzen allgemein Virtuelle Pr senzen sind im Vergleich zu virtuellen Welten oder Webseiten noch relativ unbekannt Sie werden aber zunehmend bekannter da viele Benutzer nicht nur surfen w
29. bjekte noch gezeichnet werden darf aber nicht zu gro sein da es bei Objekten in gr erer Entfernung vorkommen kann dass diese noch keine Zuweisung zu einer Gruppe haben und deshalb durch die nderungen in der display Methode nicht gefiltert werden Desto weiter die Objekte weg sind desto l nger wird es dauern bis die Gruppenzuordnung empfangen und das Objekt vom Zeichnen ausgeschlossen wird Ebenso wird die Kamera ben tigt um die walk Animationen zu rendern da auf die Kamera keine physikalischen Kr fte einwirken und der Avatar sich fl ssig bewegen soll 2 4 3 5 7 LLViewerObjectList Die LLViewerObjectList verwaltet alle Objekte und ist somit der ideale Ansatzpunkt Objekte die nicht zum eigenen Avatar geh ren nicht anzuzeigen L schen ist hier leider nicht m glich da nur L schaktionen m glich sind die dem Server sofort mitgeteilt werden Der Benutzer erh lt daraufhin unn tig viele Nachrichten wenn versucht wird Objekte zu l schen die dieser in der Second Life Welt nicht besitzt Daher werden die Objekte mit null skaliert und sind somit auch nicht mehr visualisierbar LLVOAvatar av LLVOAvatar findAvatarFromAttachment objectp wenn der Avatar zu dem Objekt nicht der eigene ist if av amp amp av gt mIsSelf av gt mVisible false objectp gt setScale LLVector3 0 0 0 Entwicklung des weblin Second Life Generator 38 2 4 4 Wichtige nderungen an Second Life Dateien
30. ch tzt sind Wenn die Installation erfolgreich abgeschlossen 64 wurde k nnen Sie wSLGen sofort starten oder dies manuell machen 63 Systemanforderungen des Second Life Clients Link http secondlife com corporate sysreqs php 6 Vgl Kapitel 6 3 3 16 3 1 Benutzerhandbuch 49 6 3 Bedienungsanleitung 6 3 1 Programmstart Um das Programm zu starten klicken Sie auf den Start Knopf in ihrer Taskleiste auf Programme und w hlen Sie dann den Ordner wSLGen aus Klicken Sie auf wSLGen um das Programm zu starten Sie k nnen das Programm auch direkt aus dem Installationsordner ausf hren Wenn dieser zum Beispiel C Programme wSLGen ist gehen Sie in diesen Ordner und starten die wSLGen exe Benutzerhandbuch 50 6 3 2 Dialoge 6 3 2 1 Anmeldedialog weblin Second Life Figurgenerator x Anmeldung Gib deine Anmeldungsdaten ein und w hle eine Option weblin Second Life Nachname Passwort Generiert die Figuranimationen XML und sendet dieses zu weblin Erstelle xML Generiert xML aus den gespeicherten Bildern Verschicke XML Schickt die XML Datei an den weblin Server Erstelle Bilder Generiert die Figuranimation und speichert sie auf der Festplatte Die Animationsgenerierung ben tigt die Second Life Anmeldungsdaten Die weblin Anmeldungsdaten werden zum verschicken ben tigt Abb 5 Anmeldedialog Der Anmeldedialog besteht aus f nf Eingabefeldern und vier Kn pfen Die ersten beiden
31. den Hierf r muss die settings xml im Anwendungsdaten Ordner existieren ansonsten wird das Programm beendet Wenn die Verbindung erfolgreich ist wird auf der rechten Seite ein Vorschaubild angezeigt Sie m ssen nun warten bis Ihre Figur vollst ndig inklusive aller Texturen und Objekte geladen ist Notiz Wenn andere Objekte die nicht zu Ihrer Figur geh ren auf dem Vorschaubild sichtbar sind und nicht nach drei Sekunden verschwunden sind starten sie an dieser Stelle bitte das Programm neu Falls der gleiche Fehler nach dem Start immer noch auftritt m ssen Sie ihre Figur an einer anderen Stelle in der Second Life Welt positionieren Diese sollte m glichst leer sein W hlen Sie die Option Start um das Rendern der Animationen zu Starten Dazu werden die einzelnen Animationsdateien geladen diese enden auf bvh und beschreiben wie die Figuren sich f r die einzelnen Animationen bewegen m ssen Gegen Ende des Renderns der Animationssequenzen kann es sein dass ihr Rechner langsam wird da ca 340 Megabyte Arbeitsspeicher f r die Bilder ben tigt werden Zus tzlich werden ca 140 Megabyte von Second Life ben tigt Im Folgenden werden die Bilder auf 100x100 Pixel optimiert und als PNG auf der Festplatte gespeichert Wenn alle Punkte erfolgreich durchlaufen wurden wird ein entsprechendes Nachrichtenfenster angezeigt es sei denn es wurde auf dem Benutzerhandbuch 53 Anmeldedialog Start ausgew hlt In diesem Fall wi
32. deren Personen auf derselben Seite nur die URls um sich die Bilddaten eigenst ndig vom weblin Server zu laden Die Figuren werden bisher als Standbilder oder animierte GIFs dargestellt und k nnen beliebiger Art sein wie z B Tiere Menschen Fantasiewesen oder ein Foto des Benutzers Da weblin browserbasiert ist haben die Figuren maximal zwei Aktionsdimensionen von denen eine noch nicht verf gbar ist da die Avatare sich immer auf der Statusleiste bewegen m ssen Link zur offiziellen Webseite http www jabber org 3 Eindeutige Identit tsbezeichnung meist numerisch Unique Resource Identifier Link http www w83 org MarkUp htmI3 terms html S Graphics Interchange Format Einleitung 4 1 4 Second Life Second Life ist heute eine der bekanntesten virtuellen Online Welten in der freies nicht zwangsweise zielgerichtetes Interagieren m glich ist Sie wird von dem Unternehmen Linden Labs betrieben Die Figuren werden dreidimensional dargestellt und k nnen sich frei in der Welt und im dreidimensionalen Raum bewegen Sie besitzen somit zwei Aktionsdimensionen mehr als in weblin Dabei k nnen Sie ebenso wie in weblin beliebiger Art sein sind aber bis auf einen verschwindend geringen Anteil humanoid Die Benutzer k nnen per Chat oder Voice Chat kommunizieren Jeder Benutzer von Second Life kann Objekte erstellen damit handeln Land mieten oder kaufen und vieles mehr Die Welt selbst ist in Regionen aufgeteilt in denen die kompl
33. die Bilder zentriert in den 100 Pixel liegen Wenn das Verh ltnis positiv ist werden die Bilder nach oben hin aufgef llt da der Avatar sp ter auf der Browserleiste stehen soll und nicht schweben darf Dies wird durch die folgenden sieben Codezeilen errechnet LEE if nWidth gt nHeight nMinHeight nWidth nHeight nHeight nWidth set to width because not normalized to 100 Pix yet if nWidth lt nHeight nMinWidth nHeight nWidth 2 nMaxWidth nHeight nWidth 2 nWidth nHeight EH Da Bilder sehr gro e Mengen an Speicherplatz und zum Verarbeiten unter Umst nden viel Zeit ben tigen wird wird hier besonders darauf geachtet dass alle Bildobjekte und ihre Daten wieder freigegeben werden sowie dass keine unn tigen Operationen wie berpr fungen die nicht unbedingt notwendig sind abgearbeitet werden m ssen Es ist leider notwendig die aus dem Grafikbuffer gelesenen RGBA Daten zu manipulieren und den roten mit dem blauen Kanal zu vertauschen da die Bilder ansonsten von der Cximage Bibliothek als Falschfarben Bild abgespeichert werden was nicht gew nscht ist Entwicklung des weblin Second Life Generator 31 2 4 3 2 3 WGenXMLThread WGenXMLThread ist eine normale von der Thread Klasse erbende Klasse die nicht ber Zwischenstufen erbt Sie dient wie der Name schon andeutet dazu eine XML Datei zu generieren Diese XML Datei die sp ter als send xml abgelegt
34. e e dolmagesToXml l dt alle Animationen neu falls diese noch nicht geladen wurden und startet den WGenXMLThread Darauf wird der Status f r die doltXWait Methode angepasst JX steht hier f r ImagesToXml 41 Vgl Kapitel 2 4 3 2 2 42 Vgl Kapitel 6 3 3 2 Vgl Kapitel 2 4 3 2 3 Entwicklung des weblin Second Life Generator 27 e doltXWait existiert nur f r die Lesbarkeit des Programmcodes da sie dieselbe Funktionalit t besitzt wie doSaveWait und keine Operationen ausf hrt Die Verz gerung besteht solange bis WGenXMlLThread die imageToXmiFinished Methode startet Diese funktioniert analog zur saveFinished Methode Sie gibt die Liste der Animationen frei l scht den aufrufenden Thread erh ht den Status 44 oder wenn nur Erstelle XML ausgew hlt wurde sorgt sie daf r dass der Dialog angezeigt wird dass das Erstellen abgeschlossen ist e doUploadXmi l dt die XML Datei initialisiert den HTTP Client und setzt URI Header und Body zum Verschicken der Datei an den weblin Server Dann wird der WHTTPClientWrapper gestartet und wie in den vorherigen F llen auch der Status gesetzt so dass waitUploadEnd ausgef hrt wird e waitUploadEnd hat eine etwas andere Funktionalit t als die beiden vorherigen Methoden zum Warten auf den jeweiligen Thread Sie aktualisiert in jedem Schritt die Fortschrittsvariable und fragt eventuelle Fehler ab Erst wenn der Fo
35. e Einschr nkungen im Internet aufhalten kann Vorausgesetzt die Daten sind vollst ndig bei allen Benutzern des weblin Clients angekommen stellt sich die Frage wie diese visualisiert werden sollten Die Bewegungen sind kinetische nderungen der einzelnen Gelenke und es ist m glich an diesen Gelenken oder den einzelnen K rperteilen Attachments zu platzieren Da es nicht sehr komfortabel ist sich im Internet fortzubewegen wenn permanent eine Applikation viele Ressourcen verwendet sollte die Applikation m glichst minimale Ressourcen im Sinne von Arbeitsspeicher und Rechenleistung ben tigen Zu diesen zu l senden Problemen kommt hinzu dass gew hrleistet werden muss dass Benutzer nicht den Avatar eines Anderen verwenden k nnen Zudem das Aktionsdimensionsproblem da Avatare in Second Life in drei Dimensionen interagieren k nnen in weblin hingegen nur in einer Dimension Die Zielgruppe f r das Programm ist sehr weit gef chert da weblin wie auch Second Life eine sehr breite Zielgruppe ansprechen und sich diese zu einem Gro teil berschneidet Diese Schnittmenge ist die Zielgruppe des zu entwickelnden Programms also in diesem Sinne jede Person die das Internet nutzt und ber einen ausreichend schnelle Verbindung verf gt Entwicklung des weblin Second Life Generator 8 2 3 Realisationsanalyse und beschreibung Ideal w re es einen kompletten eigenen Client f r Second Life zu programmieren der als Avatar Plugin f r den webl
36. e das Vorschaubild zeichnet vorausgesetzt Second Life wurde gestartet und es existiert eine aktive Bildreferenz auf ein LLimageRaw im glob pLastlmage_ Dieses Bild wird ber mehrere Windows Funktionen in den Buffer eines OpenGL Fensters kopiert welches auf dem Dialog angezeigt wird Hier wird sehr darauf geachtet dass alle Bildressourcen wieder freigegeben werden da diese einige GDI Objekte ben tigen die wenn sie nicht wieder freigegeben werden an dieser Stelle innerhalb von Sekunden dazu f hren k nnen dass keine Applikation auf dem ausf hrenden Rechner mehr fehlerfrei l uft 50 Windows Application Programming Interface Entwicklung des weblin Second Life Generator 33 2 4 3 3 3 WChooseLangDialog Dieser sehr einfache Dialog bietet eine aufklappbare Auswahlbox die beim Initialisieren des Dialogs mit den verf gbaren Sprachen gef llt wird Der Dialog kann nur modal aufgerufen werden es wird also die restliche Applikation blockiert solange dieser Dialog angezeigt wird Der Vorteil dabei ist dass keine Schleife ben tigt wird die die Ereignisse verarbeitet sondern die Methode auf das Beenden des Dialogs wartet und die Auswahl die in der Auswahlbox getroffen wurde verarbeitet Die aufrufende Funktion kann die Auswahl so weiterarbeiten 2 4 3 4 Hilfsklassen Die Hilfsklassen sind kleine Klassen die Funktionalit t auslagern um sie einfach in mehreren anderen Klassen verwenden zu k nnen Dabei sind die einzelnen Method
37. ealer Weise auch Standards ben tigt werden Diese sind aber wesentlich schwerer umzusetzen da diese virtuellen Welten in ihrer Beschaffenheit enorm unterschiedlich sind 1 6 Aufgabe Um aber zu berpr fen ob Benutzer von barrierefreiem Verwenden von Avataren berhaupt Gebrauch machen w rden und ob etwas derartiges auch dauerhaft angenommen wird muss dies an einem Beispiel berpr ft werden An dieser Stelle setzt diese im Rahmen eines Praktikums bei der Zweitgeist GmbH entstandene Bachelor Thesis an Es soll eine Konvertierung zwischen den sehr popul ren Programmen f r virtuelle Welten und virtuelle Pr senzen Second Life und weblin stattfinden so dass die Benutzer ihre virtuellen Repr sentanten aus Second Life weiter verwenden k nnen Link zur Unternehmenssseite http lindenlab com 7 International Business Machines Link zur Unternehmensseite http www ibm com Link http www ibm com press us en pressrelease 22428 wss Entwicklung des weblin Second Life Generator 2 Entwicklung des weblin Second Life Generator 2 1 Entwicklungskonfiguration 2 1 1 Hardware Komponente Eigenschaften Prozessor Intel Core2 Duo CPU E6550 2 33 GHz Arbeitsspeicher 1 0 GB DDR2 333 MHz RAM Mainboard Asus P5K SE mit Intel Bearlake P35 Chipsatz Grafikkarte ATI Radeon X1550 512 MB Netzwerk 10 100 1000 Ethernet 2 1 2 Software Tab 1 Entwicklungshardware Windows XP Professional Version 20
38. econd Life verwendet wird wurde bewusst verzichtet da diese propriet r ist Die Speicherverwaltung w re mit dieser Bibliothek nur minimal besser 2 4 1 5 Compilereinstellungen 13 ist in der von Linden Labs Das Microsoft Visual Studio 2003 Projekt newview mitgelieferten Projektmappe als Startprojekt definiert und gibt somit alle Compileroptionen f r die anderen Projekte vor Hier werden nur die wichtigsten Einstellungen behandelt Alles Weitere kann in den beiliegenden Projektdateien eingesehen werden 17 Graphics Device Interface 18 Link http www fhwedel de si vorlesungen softwaredesign Erzeugungsmuster Singleton html 19 Vgl Kapitel 2 4 2 1 Entwicklung des weblin Second Life Generator Allgemein Konfigurationstyp Anwendung MFC und ATL Nicht verwenden da nicht ben tigt Zeichensatz Unicode ucs 2 Compiler Warnungsebene Level 3 W3 Warnungen als Fehler behandeln Ja WX Optimierung F r Geschwindigkeit O2 ansonsten f r nichts optimieren Laufzeitbibliothek Multithreaded MT Vorkompilierte Header erstellen verwenden Ja Yu wird f r Second Life ben tigt Linker Ausgabedatei wSLGen exe Subsystem Nicht festgelegt f r Intel AMD Support Zielcomputer Nicht festgelegt f r Intel AMD Support Tab 3 Compilereinstellungen Aus den Projektdateien werden die Projekte Ilaudio und IImedia entfernt s
39. econd Life vorgegebene verwendet So sind libraries und indra als wesentliche Ordner zu nennen libraries enth lt alle externen Bibliotheken und ihre Header Dateien die von Second Life verwendet werden indra ist der Ordner welcher alle Quellcode Dateien von Second Life selbst enth lt und in Unterordner nach Funktionalit t strukturiert ist Je Unterordner existiert ein eigenst ndig kompilierbares Projekt Zus tzlich gibt es einen Unterordner der eine Visual Studio Projektmappendefinition enth lt in der alle Einzelprojekte enthalten sind Kurzbeschreibungen zu den einzelnen Projekten sind im Second Life Wiki zu finden Innerhalb der Objektordner existiert f r die Quelldateien keine weitere Struktur Es werden lediglich bei Bedarf Ausgabeordner erstellt Von den existierenden Projekten werden llaudio und IImedia entfernt da diese nicht ben tigt werden Das Hauptprojekt welches auch den Programmeinstiegspunkt darstellt nennt sich newview und besitzt eine erweiterte Unterstruktur die neben den Ausgabeordnern noch zus tzliche enth lt um die Ausf hrung des Programms f r Debuggingzwecke zu erm glichen sowie zus tzliche Dateien und Ordner um diese dem Installationsprogramm hinzuzuf gen Dieses Projekt enth lt ebenfalls alle selbst erstellten Dateien Dabei besitzen die selbst erstellten Dateien im Gegensatz zu denen von Second Life nicht das Pr fix LL f r Linden Labs sondern W
40. eldedialog angezeigt sofern das Programm nicht auf Grund eines Fehlers beendet werden muss In jedem Fall werden beim Aufr umen die erstellten Objekte und der alloziierte Speicher als auch die von Second Life verwendeten Ressourcen wieder ber die SLMainEnd Methode freigegeben 33 Vgl Kapitel 6 3 3 1 38 Vgl Kapitel 2 4 3 1 37 Vgl Kapitel 2 4 4 Entwicklung des weblin Second Life Generator initialisiere r ume auf verarbeite Dialogereignisse Vorschaubild zeichnen generiere lade hoch starte Second Life aktualisiere Fortschritt Second Life Hauptschleife Abb 3 Fortschrittsdialogschleife 23 Entwicklung des weblin Second Life Generator 24 2 4 3 Klassen Im Folgenden sind die Aufgaben und Funktionalit ten der Klassen der wSLGen Applikation beschrieben wSLGen ist die Kurzform von weblin Second Life Generator F r eine Beschreibung der einzelnen Funktionen steht die Schnittstellendokumentation zur Verf gung 2 4 3 1 WGenerator Die WGenerator Klasse ist die zentrale Klasse dieser Applikation Sie delegiert ber eigene Methoden an Second Life oder eine der drei Threadklassen Ganz zentral ist die run Methode die eine switch Anweisung ber die globale Statusvariable definiert und f r jeden Status eine Methode aufruft Diese Methode wird wie schon beschrieben aus der Hauptschleife des Hauptprogramms zum Anzeigen des Fortschrittsdialogs auf
41. em Second Life Client hinzugef gten Funktionalit ten und wurden nicht von Linden Labs definiert ng Die Dateiformate ini und lang sind gleich aufgebaut Sie bestehen aus Schl ssel Wert Paaren die durch Zeilenumbr che getrennt sind Zwischen Schl ssel und Wert befindet sich immer ein Gleichheitszeichen Im lang Format werden die Schl ssel generell nur in Gro buchstaben getrennt von Unterstrichen geschrieben Zus tzlich gibt es im lang Format die M glichkeit im Wert eines Paares W rter zu definieren die zu ersetzen sind Dazu wird der zu ersetzende Wert wie ein Schl ssel in Gro buchstaben geschrieben und von doppelten eckigen Klammern umrahmt Beispiel Das XML Dateiformat f r Gestiken gestures xm gesturesFemale xm besitzt wie die erweiterte Avatarkonfigurationdatei send xml eine sehr flache XML Struktur Das Format f r Gestiken besitzt genau ein gestures_def Tag in dem beliebig viele gesture Tags vorkommen k nnen Diese gesture Tags besitzen die folgenden Attribute e name der Name der Animation der in jeder Datei eindeutig sein muss e capture_steps die Anzahl der Renderingschritte bis diese Animation abgebrochen werden soll wobei null bedeutet dass die Animation bis zu ihrem Ende abgespielt wird 15 eXtensible Markup Language Link http www w3 org XML Entwicklung des weblin Second Life Generator 13 Zus tzlich zu den beiden genannten Attributen muss eines d
42. en anhand ihrer Funktionalit t in die einzelnen Klassen unterteilt Alle Hilfsklassen fungieren nach dem Singleton Muster d h es gibt im Speicher nicht mehr als eine Instanz dieser Klasse da alle Methoden und Variablen der jeweiligen Klasse statisch sind und somit nur einmalig beim Starten der Applikation geladen werden 2 4 3 4 1 BoxDialog Diese Klasse k nnte den Dialogklassen zugeordnet werden sofern sie eigenst ndige Windowsdialoge erzeugen w rde Die Boxdialog Klasse kapselt in diesem Sinne die WinAPI Funktion MessageBox um verschiedene Arten von Dialogen zu erzeugen ohne die Parameter f r die Art der MessageBox angeben zu m ssen wie z B welche Buttons angezeigt werden sollen und welches Symbol der Dialog haben soll 2 4 3 4 2 File Die File Klasse bietet einige Basisdateioperationen wie das berpr fen ob eine Datei mit gegebenem Namen existiert oder das Ermitteln der Gr e einer geladenen Datei Zus tzlich bietet sie die M glichkeit eine Textdatei mit Schl ssel Wert Paaren in eine Liste aus solchen Paaren zu parsen Es ist dabei m glich eine komplette Datei oder einzelne Zeilen zu verarbeiten wobei bei der Datei darauf zu 51 Vgl Kapitel 2 4 3 4 5 Entwicklung des weblin Second Life Generator 34 achten ist dass die einzelnen Paare durch Zeilenumbr che oder einfache Abs tze Carriage return line feet getrennt sind Die Werte der Schl ssel Wert Paare werden zudem noch auf zu ersetzende Zeichenketten u
43. ennen nn anna 48 6 3 BedienungsanleitUmg uununsssasassansirnncnnnn sauna neun nnEn ing En una nn Aura EnaEn Nenn 49 6 3 1 Programmsta een else 49 6 3 2 Dial g une re een 50 6321 Anmededilg na ea een 50 6 322 Fonschle0a09 een ale 51 6 3 2 3 Sprachauswahldialog nn nnnnennnnnnnnnnnnnnnnnnnnnnnnnn 51 6339F POIs ee er 52 GE E Rn sein neues 52 6 3 3 2 Erstelle Bilder u ken 52 BIS Erstelle A EE 53 5 3 3 4 Verschicke AN nee ee 53 6 4 Fehlermeldungen uuunuuss0 2u0000unun00s0nuauunu0 na HnunaHnunanaaAns nun na nuna Has annanannanaann 54 6 5 Wiederanlaufbedingungen r0000000000n00n0nunnnnnn0nnnnnnnnn nnmnnn nnna 58 Eiteratlirverzeichniis sea sauna ea En en Tue gees 59 Schnittstellendokumentation urs 20000n0000nannnnnnnnnnannnnannnnannnnnannnn nenn anne 60 Abbildungsverzeichnis V Abbildungsverzeichnis Abb 1 Programmablaufplan ses ra N 19 Abb 2 Hauptprogr aM E 21 Abb 3 Fortschrittsdialogschleife un u u 0e een 23 EE 49 Abb 5 Ar meldedial89 E 50 Abb 6 F rtschritsdialog ee 51 Tabellenverzeichnis Tab 1 Entwicklungshardware E 6 Tab 2 tee ie ee 6 Tab 3 Compilereinstellungen aan nennen 15 Tab 4 Systemanforderungen des Programmes 48 Einleitung 1 1 Einleitung 1 1 Virtuelle Welten Bei virtuellen Welten wird heutzutage an die Fiktionen aus der Mats Trilogie oder an virtuelle Onlinewelten wie Second Life gedacht Virtuelle Welten reichen aber
44. er beiden Attribute anim_file oder anim_name im Tag enthalten sein anim_file sorgt daf r dass eine erstellte Animationsdatei bvh geladen wird wohingegen anim_name eine vordefinierte Animation von Second Life ausf hrt Beispiel i lt xml version 1 0 encoding utf 8 standalone yes gt lt gestures_def gt lt gesture name idle anim_file stand_1 bvh capture_steps 1 gt lt gesture name idlel anim_name stand_1 capture_steps 0 gt Die erweiterte Avatarkonfigurationsdatei wird beim Generieren der XML Datei f r das Hochladen zum weblin Server erzeugt Sie enth lt einen umschlie enden config Tag mit einem version Attribut welches die Version der Konfigurationsdatei angibt Dieser Tag enth lt beliebig viele param und sequence Tags Die param Tags besitzen ein name und ein value Attribut stellen also einfache Schl ssel Wert Paare dar sequence Tags sind umfangreicher sie besitzen die Attribute group name probability type in und out und hier als Inhalt zus tzlich noch image Tags die ein Attribut num besitzen welches die Nummer des Bildes in der jeweiligen Sequenz beschreibt In dem image Tag befinden sich die Daten des Bildes Base64 enkodiert Die Attribute group und name des sequence Tags sind gleichzusetzen sie enthalten den Animationsnamen probability ist die Wahrscheinlichkeit mit der diese Animation abgespielt wird wenn es mehrere Animationen f r dieselbe Aktion gibt wie bei idle oder
45. etType 6 if p gt getType cur_type break p gt render i SITE IIvoavatar cpp Normale Bewegungen wie z B blinzeln werden bei der Animation unterdr ckt da diese auch zu ungewollten Bewegungen des K rpers f hren k nnen die in den Animationen sp ter Ruckeln verursachen k nnen IIviewerwindow cpp Alle HUD Elemente werden nicht in die Liste der zu zeichnenden Elemente aufgenommen so dass keine Men s sichtbar sind 57 Head Up Display Entwicklung des weblin Second Life Generator 39 e Iviewerobjectlist cpp Vgl Kapitel 2 4 3 5 7 e IIviewerdisplay cpp Die display Methode die in der doSnapshot Methode des WGenerator verwendet wird wird so modifiziert dass w hrend des Ladens nichts angezeigt wird und ist weitestgehend optimiert so dass keine unben tigten Elemente wie HUD Elemente mehr angezeigt werden e Iiviewercamera cpp Hier wurde die Sichtweite der Kamera angepasst Sie wurde von f nfzig auf vier Meter gesetzt e IIstartup cpp Das Anzeigen des Second Life Anmeldedialogs wird bergangen und die Daten die auf dem WLoginDialog eingegeben wurden werden anstatt derer die ehemals ber den Anmeldedialog eingegeben wurden an den Server geschickt Dazu muss das Passwort MD5 kodiert und zum Hexadezimalwert konvertiert werden EHE EEE EFF HEERES FH REFRESH ERS char hexpass MD5HEX_STR_SIZE LLMD5 passmd5 passmd5 upd
46. ette Umgebung durch den Besitzer bestimmt wird Ebenso ist es in Second Life m glich beliebige Objekte zu erstellen und diesen z B mit Hilfe von Skripten bestimmte Funktionalit ten aufzupr gen Einleitung 5 1 5 Motivation Es gibt enorm viele teilweise sehr unterschiedliche virtuelle Welten Diese werden in absehbarer Zukunft an ihre Wachstumsgrenzen sto en da sie nicht alle M glichkeiten von virtuellen Welten in einer abbilden und somit nicht mehr Benutzer binden k nnen Die Benutzer wollen sich aber in Zukunft frei zwischen den verschiedensten Arten virtueller Welten bewegen Ihre Figur im folgenden als Avatar bezeichnet die Ausr stung und das Geld aus den Welten wollen sie dabei nat rlich mitnehmen und berall verwenden k nnen Diese angenommenen Verhaltensweisen sind vergleichbar mit jemandem der im wirklichen Leben aus seinem Heimatland auswandert Auf diesen Trend hin haben sich Linden Labs und das IT Unternehmen IBM entschlossen gemeinsam Standards zu entwickeln die das Wechseln zwischen virtuellen Welten die sich an diese Standards halten erm glichen sollen Virtuelle Pr senz ist vergleichbar mit der virtuellen Welt des Internets in der sich wesentlich mehr Personen bewegen als in jeder anderen virtuellen Welt Auch in diesen speziellen virtuellen Welten besteht der Wunsch der Benutzer ihren Avatar auch in diese virtuelle Welt mitnehmen und dort mit Anderen kommunizieren zu k nnen Das bedeutet dass hier id
47. etten Programmfunktionalit t durch Dr cken des Startknopfes auf dem Anmeldedialog werden bei jedem Schleifendurchlauf der durch Rendervorg nge sehr unterschiedlich lange dauern kann zuerst die Dialogereignisse wie Starten der Animation verarbeitet Darauf wird direkt eine Dialogfunktion aufgerufen die feststellt ob ein Vorschaubild bereits existiert Wenn dieses existiert wird es auf dem Dialog angezeigt Je nach Auswahl wird nun direkt das Generieren der XML Datei oder das Hochladen dieser Datei ber die run Methode des WGenerator gestartet wenn im Anmeldedialog Erstelle XML oder Verschicke XML ausgew hlt wurde Anderenfalls wird nun ein Timeout gesetzt um die Anzeige des Windows Dialogs zu initialisieren da darauf die ehemalige Programmeinstiegsmethode des Second Life Clients aufgerufen wird Es ist nicht m glich diese in einem eigenen Thread auszuf hren daher wird die Anwendung blockiert solange die SLMainStart Methode ausgef hrt wird Sobald das Laden des Second Life Client abgeschlossen ist wird bei jedem Schleifendurchlauf die SLMainLoop Methode aufgerufen Diese ist eine vereinfachte Variante der Hauptschleife des Second Life Clients Sie enth lt aber im Gegensatz zu dieser keine eigene Schleife da diese schon durch die umfassende Methode gegeben ist Wenn ein Fehler aufgetreten ist oder der Prozess erfolgreich durchlaufen wurde wird die Fortschrittsdialogschleife verlassen und der Anm
48. fen Sie nach der Installation die Zugriffsrechte e Alte Bilder l schen Meldung L schen von existierenden Dateien fehlgeschlagen kann Dateien ohne Schreibrechte nicht speichern Bedeutung Sie haben keine Schreibrechte f r den WeblinAvatar Ordner die Unterordner und deren Dateien Behebung Heben Sie den Schreibschutz f r diesen Ordner und die Unterordner auf Wenden Sie sich im Zweifelsfall an den Systemadministrator e Datei l sst sich nicht ffnen Meldung Fehler beim ffnen der Datei Bedeutung Eine Bilddatei konnte nicht angelegt werden Behebung Beenden Sie das Programm und berpr fen Sie Ihre Zugriffsrechte f r den WeblinAvatar Ordner und seine Unterordner 7 Vgl Kapitel 2 4 1 3 Benutzerhandbuch 56 e Speichern fehlgeschlagen Meldung Fehler beim Speichern aufgetreten Bedeutung Der Speichervorgang konnte nicht initialisiert werden Behebung Starten Sie das Programm oder gegebenenfalls auch das Betriebssystem neu e Lesbare Datei die nicht ge ffnet werden kann Meldung Datei ist lesbar kann aber nicht ge ffnet werden Bedeutung Ein Bild einer Animation konnte als lesbar ge ffnet werden kann aber nicht gelesen werden Behebung Beenden Sie das Programm berpr fen Sie ihre Zugriffsrechte und kontaktieren Sie im Zweifelsfall den Systemadministrator e Daten werden schon geschickt Meldung Die Daten werden bereits an den weblin Server geschickt
49. fnwedel Sf weitgeist FACHHOCHSCHULE WEDEL Bachelor Thesis im Fachbereich Medieninformatik Thema Konvertierung der Darstellung von virtuellen Welten zu virtuellen Pr senzen am Beispiel von Avataren in weblin und Second Life Gepr ft durch Prof Dr Christian A Bohn Betreut durch Dr Heiner Wolf Alexander Treptow 21 Februar 2007 Alexander Treptow Prof Dr Christian A Bohn Dr Heiner Wolf Fachhochschule Wedel Zweitgeist GmbH Tannenallee 43 Feldstra e 143 Stahltwiete 23 22844 Norderstedt 22880 Wedel 22761 Hamburg Tel 0 40 5225751 Tel 0 41 03 80 48 40 Tel 0 40 374 236 090 alextreptow gmx de bo fh wedel de wolf zweitgeist com Eidesstattliche Erkl rung Il Eidesstattliche Erkl rung Ich Alexander Treptow Matrikelnummer 2622 erkl re hiermit an Eides Statt dass ich die vorliegende Arbeit selbstst ndig und ohne Benutzung anderer als der angegebenen Hilfsmittel angefertigt habe die aus fremden Quellen direkt oder indirekt bernommenen Gedanken sind als solche kenntlich gemacht Die Arbeit wurde bisher in gleicher oder hnlicher Form keiner anderen Pr fungskommission vorgelegt und auch nicht ver ffentlicht Ort Datum Unterschrift Inhaltsverzeichnis II Inhaltsverzeichnis Eidesstattliche Erkl rung uuu 244440000000000nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn ll Inhaltsverzeichnis u uu044444 nn nn ann ann ann anna I Abbildungsverzeichnis 44000
50. g auf der linken Seite ist eine bersicht ber die zu erledigenden und erledigten Aktionen aufgef hrt Auf der rechten Seite ist ggf ein Vorschaufenster zu sehen in dem Ihre Figur angezeigt wird Unten ber dem Fortschrittsbalken steht im Detail woran gerade gearbeitet wird Dazu zeigt der Fortschrittsbalken den Fortschritt der aktuellen Aktion an 6 3 2 3 Sprachauswahldialog Der Sprachauswahldialog bietet beim Programmstart die M glichkeit eine der in der Auswahlbox gegebenen Sprachen auszuw hlen Dieser Dialog wird nur angezeigt wenn durch die eingestellte Systemsprache keine Vorauswahl getroffen werden konnte Benutzerhandbuch 52 6 3 3 Optionen 6 3 3 1 Start Die Option Start auf dem Anmeldebildschirm f hrt die Optionen des Bilder Generierens Konvertierens zu XML und gepacktem XML sowie des Hochladens zum weblin Server aus Hierf r ist es erforderlich dass alle Eingabefelder korrekt ausgef llt sind Alle drei anderen Optionen werden in der Reihenfolge Erstelle Bilder Erstelle XML und Verschicke XML ausgef hrt 6 3 3 2 Erstelle Bilder Um diese Option ausf hren zu k nnen m ssen Sie die Second Life Anmeldedaten angeben Bis der Dialog das erste Mal reagiert kann es unter Umst nden ein paar Sekunden dauern da im Hintergrund der Second Life Client geladen wird der sich sofort versucht mit den angegebenen Daten beim Second Life Server anzumelden und zum Second Life Grid agni zu verbin
51. gerufen oder aber aus der SLMainLoop Methode die einen Durchlauf der Second Life Hauptschleife darstellt Ist ein Status z B das Starten der ersten Animation inklusive Setzen der Klassenvariablen auf Defaultwerte beendet wird der Status neu gesetzt Die Methode delegiert an die n chste Methode die eine andere Funktionalit t erf llt Im Beispiel w rde die aufgerufene Methode alle Animationen abspielen und die Rohdaten der Bilder speichern sowie bei jedem Renderschritt ein Vorschaubild generieren Das Rendern selbst findet in einer Membermethode der WGenerator Klasse der doSnapshot Methode statt Diese Methode ruft die display Methode von Second Life auf Diese rendert ein Bild welches danach mit der OpenGL Methode glReadPixels als RGBA und Alpha ausgelesen wird Da beim Rendern in Second Life keine Alpha oder Transparenzwertangabe f r den Hintergrund m glich ist wird der Tiefenwert Buffers als Alpha Wert verwendet und jeder A Kanal Wert durch 255 ersetzt wenn der Tiefenwert maximal ist also kein Objekt an dieser Stelle existiert Ansonsten wird der Wert auf null gesetzt Da der Second Life Client noch keine Anti Aliasing bei Figuren unterst tzt st ren diese harten Kanten nicht da sie durch das Skalieren vor der Speicherung neutralisiert werden 38 Vgl Kapitel Schnittstellendokumentation 39 Vgl Kapitel 2 4 3 2 a Akronym f r Red Green Blue Alpha vier Kanaldarstellung eines Pixel Entwicklung des web
52. ht da die Fehler alle auf die oben beschriebene Weise behandelt werden und somit keine globalen berechneten Spr nge notwendig sind 59 Vgl Kapitel 6 4 Anwendungsf lle 43 3 Anwendungsf lle F r das erstellte Programm existieren zwei m gliche Anwendungsszenarien ebenso wie eine Kombination aus beiden Der erste Fall ist der Benutzer ist in der virtuellen Welt von Second Life sehr aktiv und m chte seinen Avatar auch nutzen wenn er sich auf Webseiten Dies kann diverse Gr nde haben Vielleicht m chte er Andere dazu animieren bei Second Life mitzumachen ihnen auf seiner eigenen Webseite Tipps zu Second Life geben oder Werbung f r Gegenst nde Leistungen oder Skripte machen die er in Second Life besitzt Oder aber er m chte einfach nur zeigen wie sch n und einmalig sein Avatar ist Um dies zu realisieren kann sich der Benutzer nun einen weblin Konto anlegen und seinen Avatar aus Second Life in weblin mit verwenden Wenn sich der Avatar in Second Life ver ndert kann ein neuer generiert werden Im weiteren Verlauf kann dieser verwendet oder weiterhin der alte benutzt werden Der andere Fall ist dass der Benutzer bereits bei weblin angemeldet und dort sehr aktiv ist sich aber einen vollst ndig eigenen Avatar w nscht der ihm vielleicht sogar m glichst hnlich sieht Second Life bietet f r einen Avatar enorm viele Einstellungen um diesen zu modellieren und auszustatten Daher kann sich der Benutzer hier nach eigenen W
53. in fungiert Dieser Client bezieht im besten Fall alle notwendigen Daten um einen beliebigen Avatar darzustellen direkt vom Second Life Server Daf r ist eine Beschreibungsdatei der Charaktereigenschaften n tig die Daten von Gr e ber Hautfarbe bis hin zur Ausrichtung der Augenbrauen enth lt Au erdem ist eine Liste aller Attachments erforderlich die dieser Avatar tr gt mit der Zusatzinformation an welcher Position diese getragen werden Zus tzlich ist es notwendig die Texturen f r den Avatar sowie die seiner getragenen Attachments vom Server zu beziehen UD Daten ber die Position der Avatare ber den weblin Server w rde anstatt der VP in der weblin Datenbank wie es bei normalen eigenen Avataren der Fall ist nur der Name der Second Life Figur ber die Konfigurationsdatei kommuniziert werden Das Plugin w rde je weblin Client den vollst ndigen Bezug der Daten vom Second Life Server sowie deren Verarbeitung und Visualisierung bernehmen Diese Avatare w rden als dreidimensionale Modelle innerhalb des weblin Clients verarbeitet und dargestellt werden Die Umsetzung auf diese Weise ist in dem beschriebenen Umfang nicht m glich da die Kenntnis ber die Struktur der Daten sowie der Kommunikation nicht gegeben und auch in dem gegebenen Zeitrahmen nicht zu erlangen und umzusetzen ist Die Daten k nnen nicht direkt vom Second Life Server abgefragt werden Es ist nur m glich die Daten der Avatare und Objekte einer Regio
54. initionsdatei f r Animationen fehlgeschlagen Bedeutung Die Datei gestures xml oder gesturesFemale xm im WeblinAvatar Ordner existiert nicht oder ist fehlerhaft Behebung Installieren Sie das Programm neu wenn Sie nicht mit dem XML Format vertraut sind 67 Vgl Kapitel 6 3 2 1 68 Vgl Kapitel 6 3 2 1 Vgl Kapitel 2 4 1 3 Benutzerhandbuch 55 e Laden einer Animation fehlgeschlagen Meldung Laden der Animation fehlgeschlagen Bedeutung Die Animationsdatei welche auf bvh endet konnte nicht geladen werden Behebung Wenn diese Datei nicht existiert nicht lesbar oder fehlerhaft ist m ssen Sie entweder die Datei ersetzen z B durch Neuinstallation oder den entsprechenden Eintrag in der gestures xml bzw gesturesFemale xmi 7 korrigieren e Speichern laufender Animationen Meldung Kann laufende Animationen nicht speichern Bedeutung W hrend Animationen gerendert werden k nnen diese nicht abgespeichert werden da alle Animationen fertig gerendert sein m ssen um optimiert zu werden Behebung Starten Sie das Programm neu und versuchen Sie es erneut e Ordner konnte nicht erstellt werden Meldung Erstellen des Ordners Fehlgeschlagen Bedeutung Der Ordner WeblinAvatar existiert nicht und konnte auch nicht erstellt werden Behebung Nur eine Neuinstallation kann diesen Fehler beheben da einige wichtige Definitionsdateien nicht existieren berpr
55. lfall aus das Programm wieder zu starten Wenn dabei Dateien besch digt wurden und der normale Programmstart nicht funktionieren sollte versuchen Sie das Programm zu deinstallieren und erneut zu installieren Nur in diesem Fall kann die Integrit t der Daten gew hrleistet werden Dabei gilt immer die Voraussetzung dass Sie die n tigen Schreibrechte auf Ihrem System besitzen und keine ben tigten Ordner gegen das Beschreiben gesch tzt sind 75 Vgl Kapitel 6 3 1 Literaturverzeichnis 59 Literaturverzeichnis Wolf Heiner 2005 Virtual Presence Internet http virtual presence org Stand 2008 02 15 Abruf 2008 02 15 Schnittstellendokumentation 60 Schnittstellendokumentation F r die Schnittstellendokumentation sind zwei Referenzen vorhanden Die komplette Referenz und eine stark gek rzte Version die nur komplett neu erstellte Dateien des weblin Second Life Generator enth lt nicht aber ver nderte Dateien des Second Life Clients e Komplettreferenz Die Komplettreferenz ist im auf der beiliegenden CD befindlichen Ordner Schnittstellendokumentation mit der index html Datei abzurufen und umfasst den kompletten Quellenordner des modifizierten Second Life Programms e Kurzreferenz Die Kurzreferenz ist im auf der beiliegenden CD befindlichen Ordner Schnittstellendokumentation mit der index_short html Datei abzurufen und umfasst ausschlie lich die neu erstellten Dateien
56. lin Second Life Generator 25 Die einzelnen Methoden die von run aufgerufen werden sind e initiImageGen initialisiert das Rendern Sie holt beim ersten Ausf hren wenn Second Life soweit gestartet wurde dass gerendert werden kann die Kamera und Avatardaten setzt den Sonnestand auf mittags ebenso wie sie die Standard stehen Animation l dt und ausf hrt In den folgenden Durchl ufen ruft sie die beschriebene doSnapshot Methode auf die aber keine Animationsbilder abspeichert Es werden nur Vorschaubilder f r den Fortschrittsdialog generiert da noch keine Animationen geladen wurden und gerade ausgef hrt werden Diese Methode wird bei jedem Schleifendurchlauf aufgerufen bis der Benutzer den Startknopf auf dem Fortschrittsdialog dr ckt Dadurch wird der Status erh ht und startImageGen ausgef hrt e startlmageGen wird falls kein Fehler auftritt nur ein Mal ausgef hrt Sie ruft unter anderem die lIoadAnimations Methode auf die als Parameter das Geschlecht des Avatars bekommt und die dementsprechende XML Datei l dt gestures xml oder gesturesFemale xml Daf r wird die XML Datei geparsed und die Animation in die Liste aller Animationen eingetragen Wenn die zu ladende Animation eine Datei und keine vordefinierte Animation ist wird die loadAnimFromFile Methode aufgerufen die einen LLBvhloader erzeugt und die Animation in den Cache l dt Die Zugriffs ID als LLUUID Objekt wird zu
57. mageGen im n chsten Schleifendurchlauf der Fortschrittsdialogsschleife ausgef hrt wird ERT EE E E T TEE EEE EE laufende Animation sofort abbrechen true gAgent getAvatarObject gt stopMotion pAnimation_ gt animID true if standID notNull bewege Avatar zur Ausgansposition gAgent getAvatarObject gt startMotion standID else Wenn keine standard Stehen Animation exisitert gAgent getAvatarObject gt startMotion ANIM_AGENT_STAND_1 d nextAnimation n chste Animation starten e savelmageGen l scht zuerst alle existierenden Bilder die in Ordnern liegen die durch das Speichern mit neuen Bildern gef llt werden damit es nicht zu eventuellen Namenskollisionen mit anderen Animationen die gleich benannt wurden aber mehr Bilder generiert haben kommt Sind die Bilder erfolgreich gel scht worden wird der WSavePNGThread gestartet und der Status erh ht um die doSaveWait Methode auszuf hren e doSaveWait verz gert um eine Millisekunde solange der WSavePNGThread ausgef hrt wird Wird vom Thread die saveFinished Methode aufgerufen die sich in der gleichen Quellcodedatei wie der WGenerator befindet so wird je nach Modus in dem das Programm betrieben wird der Dialog angezeigt Dieser besagt dass das Erstellen erfolgreich war oder es wird mit dolmagesToXml 42 fortgefahren Der Dialog erscheint nur wenn Erstelle Bilder ausgew hlt wurd
58. n zu erhalten wobei die Reihenfolge serverseitig bestimmt wird und es somit ausgeschlossen ist alle Benutzer des weblin Client in eine Region der Second Life Welt zu teleportieren Zumal die Second Life Server bei ber einhundert Benutzern eine Leistungsgrenze erreichen Eine weitere M glichkeit besteht darin die eigenen Daten vom Second Life Grid zu beziehen und diese direkt an alle weblin Benutzer die dieses Plugin besitzen und sich in demselben Chatraum befinden zu schicken Da dies aber bedeuten w rde dass je nach Avatar und Anzahl der Benutzer in dem Raum mehrere Megabyte an 1 Virtual Path Identifier u Hostservergruppe einer Second Life Welt Link https wiki secondlife com wiki Glossary Entwicklung des weblin Second Life Generator 9 einen Neuank mmling geschickt w rden aber vor allem dieser Benutzer seine Daten an eine beliebige Zahl andere Benutzer h tte schicken m ssen ist dies ebenfalls nicht praktikabel Die Verbindungen w rden dabei zu stark ausgelastet Zudem w ren selbst solche Plugins zu gro um sie mit dem weblin Client als solche auszuliefern da Basisdaten des Second Life Clients nicht vom Server bezogen werden sondern mit dem Client ausgeliefert werden Das sind unter anderem mehrere Megabyte an Texturdaten Aufgrund der dargestellten Restriktionen soll die Funktionalit t einen Avatar von Second Life nach weblin zu portieren durch eine eigenst ndige Applikation gel st werden Diese Applikation i
59. ntersucht So wird z B aus BR in der Textdatei ein Zeilenumbruch n in der verarbeiteten Zeichenkette da in der Datei keine Zeilenumbr che im Schl ssel oder Wert enthalten darf wie in den Dateistrukturen beschrieben 2 4 3 4 3 glob Die Klasse glob h lt Objekte vor die an verschiedenen Stellen in der Applikation ben tigt werden Da diese Stellen teilweise sehr tief in der Klassenhierarchie von Second Life liegen oder an anderen Stellen sehr viele der Variablen ben tigt werden sind diese Variablen global verf gbar Dies f hrt dazu dass die Schnittstellen klein gehalten werden und z B auf das Open Fenster in welches Second Life rendert direkt zugegriffen werden kann Zus tzlich dient die Klasse dazu die Dialogfenster mit Informationen zu versorgen da diese unabh ngig von der Datenverarbeitung behandelt werden wechselseitig aber Einfluss nehmen k nnen Dieser Einfluss beschr nkt sich vom Dialog aus auf Textfeldeingaben und dem Aktivieren von Kn pfen 2 4 3 4 4 Ini Die Ini Klasse wird ben tigt um die config ini Datei zu laden oder falls diese nicht existiert sie zu erstellen und mit Standardwerten zu f llen 2 4 3 4 5 Lang Wie der Klassenname schon andeutet koordiniert die Lang Klasse die Steuerung der Texte in der jeweiligen Sprache Daf r wird beim Programmstart die Initialisierungsmethode dieser Klasse aufgerufen um die entsprechende Sprachdatei zu laden Schl gt das Laden fehl
60. ollen sondern auch kommunizieren oder Hilfe suchen Diese erhalten sie leichter wenn sich eine Person dort auf der Seite aufh lt die firm in der auf der Seite dargestellten Materie ist F r virtuelle Pr senzen ist eine enorme Infrastruktur notwendig die auf offenen Standards und dezentralisiert nicht wie bei bekannten Instant Messagern funktionalisieren muss Ebenso wie das Internet selbst aufgebaut ist Dabei wird es n tig sein die diversen Clients nicht von einem Protokoll abh ngig zu machen so dass diverse Server verwendet werden k nnen 60 Vgl http www heise de newsticker meldung 96688 Abgerufen 2008 02 18 Ausblick 47 5 4 weblin und Second Life Wenn die erw hnten Standards von Linden Labs und IBM durchgesetzt werden und es m glich ist direkt auf Modell und Grafikdaten von den Servern zuzugreifen ist in Zukunft eine barrierefreie Nutzung von Avataren m glich Weblin wie auch Second Life werden dabei parallel ihre Systemunabh ngigkeit erweitern Weblin wird auf die zweite m gliche Aktionsdimension ausgedehnt und die Avatare werden durch Verwendung von APNG weichere Kanten aufweisen Second Life hat mit dem Windlight Client schon einen Schritt in die Richtung von grafisch aufw ndigeren und realistischeren Darstellungen getan Diese bezieht sich aber nur auf Shader die z B Wasser Nebel oder Leuchteffekte besser darstellen Besonders wichtig ist hier Anti Aliasing bei Avataren deren Attachments und Objekten
61. owie die Bibliotheken FMOD KDU Smartheap und Quicktime da diese nicht ben tigt werden Au erdem sind sie propriet r sind und stehen somit nicht unter der GPL Des Weiteren d rfen sie nicht ohne die zugeh rigen Lizenzen weitergegeben werden 2 4 1 6 QAvimator QAvimator ist eine Applikation die es erm glicht BVH Animationen zu erstellen und zu bearbeiten Sie ist zwar noch im Alpha Status aber ausreichend m chtig Der Vorteil dieser Applikation ist dass sie speziell f r Second Life Animationen ausgelegt ist Aufgrund dessen bietet sie zwei Modelle f r welche die jeweiligen Keyframe Eigenschaften gesetzt werden k nnen Komplette erstellte Animationen lassen sich so als BVH Dateien abspeichern und in Second Life verwenden 20 Audio Bibliothek Link zur Herstellerseite http www fmod org 21 JPEG2000 Bibliothek Link zur Herstellerseite http www kakadusoftware com 22 ink zur Herstellerseite http www gavimator org Bounding Volume Hierarchies Entwicklung des weblin Second Life Generator 16 2 4 1 7 Cxlimage CxImage ist eine offene C Bildbibliotnek zum Laden Speichern Anzeigen und Transformieren von Bilddaten z B in den Formaten PNG oder GIF Sie bietet somit die M glichkeit Rohdaten zum Beispiel als PNG abzuspeichern und wird daher verwendet um die erstellten Bilder f r den Transport zu optimieren 2 4 2 Programmaufbau 2 4 2 1 Dateien Bei der Ordnerstruktur wird die durch S
62. r ckliefert und kann somit in die Liste der Animationen mit aufgenommen werden Nachdem die Animationen vollst ndig geladen sind wird die erste Animation gestartet und der Status erh ht so dass dolmageGen ausgef hrt wird e dolmageGen f llt die Animationen in der Animationsliste mit Bildern Dabei werden entweder so viele Bilder gerendert bis die Animation abgeschlossen ist oder wenn eine feste Anzahl von Bildern f r die Animation angegeben ist wird genau diese Anzahl gerendert Die Bilder werden in der doSnapshot Methode in die Bilderliste gespeichert wobei jeweils das letzte gerenderte Bild zus tzlich auf die pLastlmage_ Variable zugewiesen wird nachdem es auf die Gr e des Vorschaubildes verkleinert wurde Dieser Schritt wird in der initImageGen ebenfalls ausgef hrt Sobald eine Animation abgeschlossen ist wird der Avatar in jedem Fall wieder in die Ausgangsposition bewegt f r den Fall dass er sich zu sehr von dieser entfernt haben sollte Durch dieses Vorgehen startet die folgende Entwicklung des weblin Second Life Generator 26 Animation fl ssig im Verh ltnis zur Ausgangsposition Die dolmageGen Methode wird so lange aufgerufen bis die letzte Animation erreicht wurde Sie iteriert mit Hilfe der Methoden startAnimation next Animation und stopAnimation ber die gesamte Liste Wenn der Laufzeiger keine aktuelle Animation mehr enth lt wird der Status gesetzt so dass savel
63. rd Code for Information Interchange 7 GNU zip Link http www gzip org Entwicklung des weblin Second Life Generator 32 2 4 3 3 Dialogklassen WDialog ist eine abstrakte Klasse die ber ihre Create Methode einen normalen Dialog oder ber die DoModal Methode einen modalen Windowsdialog erstellt Au erdem wird die Callbackfunktion registriert ber die einzelne Methoden wie OnlnitDialog OnCommand OnLButtonDown oder OnQuit aufgerufen werden wenn das entsprechende Ereignis aufgetreten ist Diese Methoden sind bereits alle in der abstrakten Klasse implementiert besitzen aber keine Funktionalit t Das Benutzerinterface verwendet zur Darstellung ausschlie lich WinAPI Methoden 2 4 3 3 1 WLoginDialog Der WLoginDialog besitzt keine besondere Funktionalit t da hier nur das Dr cken der Kn pfe Ereignisse ausl st die verarbeitet werden Wenn ein anderer Knopf als Erstelle XML gedr ckt wurde werden die Benutzereingaben in den Dialogfeldern auf Existenz berpr ft Die Pr fung auf die Richtigkeit der angegebenen Daten wird anderen Programmteilen bzw den Autorisationsskripten auf den Servern berlassen 2 4 3 3 2 WProgressDialog F r den WProgressDialog ist der gr te Teil des Aufwands die Aktivierung und Deaktivierung der Dialogelemente die in der initMode Methode bei jedem Wechsel vom WLoginDialog gesetzt werden Besonders hervorzuheben ist die OnRedraw Methode di
64. rd mit dem n chsten Schritt dem erstellen der XML Datei fortgefahren 6 3 3 3 Erstelle XML Um diese Option ausf hren zu k nnen m ssen Sie keine Anmeldedaten angeben Es ist auch keine aktive Verbindung zum Internet notwendig Es wird hierf r die XML Datei mit den Gestiken geladen sowie alle Bilder die Sie im vorherigen Schritt generiert haben Diese Bilder werden so konvertiert dass sie in eine XML Datei eingef gt werden k nnen Diese Datei wird einmal als normale XML Datei send xml und komprimierte Datei abgespeichert send xml gz Wenn die gepackte Datei existiert wird diese im n chsten Schritt an den Server geschickt da sie circa um ein Viertel kleiner ist Sie sollten daher die gepackte Datei nicht l schen und auf Grund der Integrit t der XML Datei weder diese noch die gepackte bearbeiten Wenn das Erstellen der Dateien erfolgreich war wird ein entsprechendes Informationsfenster ge ffnet es sei denn im Anmeldedialog wurde die Option Start ausgew hlt In diesem Fall wird mit dem n chsten Schritt dem Verschicken der XML Datei fortgefahren 6 3 3 4 Verschicke XML Um diese Option ausf hren zu k nnen m ssen Sie die weblin Anmeldedaten angeben Es muss ebenfalls eine generierte XML Datei existieren Diese wird vom weblin Second Life Generator geladen und mit den Zugangsdaten an den weblin Server geschickt Dies kann unter Umst nden etwas dauern da die Datei gr er als ein paar Kilobyte sein kann
65. rtschritt 100 Prozent erreicht hat wird in jedem Fall ein Dialog angezeigt dass das Hochladen erfolgreich abgeschlossen wurde Der Thread wird ebenfalls beendet und das Objekt entfernt 44 Vgl Kapitel 6 3 3 3 Vgl Kapitel 2 4 3 2 1 Entwicklung des weblin Second Life Generator 28 2 4 3 2 Threadklassen Threads sind sozusagen Unterprozesse einer Applikation welche aber unabh ngig von dieser vom System bearbeitet werden Somit ist es m glich eine Berechnung durchzuf hren die unter Umst nden mehrere Minuten in Anspruch nimmt und nahezu zeitgleich den Anzeigedialog zu aktualisieren damit es f r den Benutzer nicht so aussieht als ob die Applikation nicht reagieren w rde Zus tzlich k nnen Hauptprogramm und Thread kommunizieren um z B in dem Dialog den Fortschritt einer Berechnung anzuzeigen w hrend diese l uft F r die Kommunikation m ssen Funktionen oder Variable definiert werden Die Thread Klasse erzeugt hierf r durch Aufrufen der Start Methode einen Windows Thread der wiederum die vollst ndig virtuelle Methode Execute aufruft Diese muss in jeder von der Thread Klasse erbenden Klasse implementiert sein und in ihr muss die komplette Funktionalit t des Threads abgehandelt werden Das bedeutet bei den drei aufgef hrten Klassen dass diese wie eine normale Methode durchlaufen werden da diese Threads nur Programmfunktionalit t auslagern um den Fortschrittsdialog nicht zu blockieren
66. sonen zu sehen sein die sich zur gleichen Zeit auf derselben Webseite befinden Als Beispiele e Eine Person betritt eine Webseite eines Versandhauses Hier befindet sich eine f r sie sichtbare andere Person die einen Servicemitarbeiter der Webseite darstellt Die Beratung des Kunden kann so direkt erfolgen wie in einer Filiale e Der Autor einer privaten Webseite trifft auf die Besucher dieser Seite die wahrscheinlich seine Freunde sind oder sich f r auf der Webseite dargestellte Themen interessieren Analog dazu k nnen Freunde nachhause eingeladen werden oder bei der Gartenarbeit eine Unterhaltung mit Passanten ber Floristik gef hrt werden Diese Beispiele lassen sich beliebig fortf hren und sind in sehr weitem Sinne aus dem wirklichen Leben in die virtuellen Pr senzen und virtuellen Pl tze bertragbar Einleitung 3 1 3 weblin Weblin ist ein Chat Client und ein Internetportal das versucht sich sehr stark an dem Idealtyp von virtuellen Pr senzen zu orientieren Der Client erm glicht es andere Benutzer die sich zur gleichen Zeit auf der gleichen Webseite aufhalten zu sehen und mit Ihnen kommunizieren F r die Kommunikation wird das offene Jabber Protokoll verwendet Alle n tigen Daten um die jeweils andere Pr senz in Form von Text und Bild darzustellen werden ber dieses Formular bertragen Der Text f r die Kommunikation Is Benutzername und hnliches wird direkt bertragen Um Bilder darzustellen bekommen die an
67. st auf Grund der wenig dokumentierten Kommunikation von Second Life Client und Server sowie der internen Datenstrukturen eher auf Basis des Second Life Clients selbst zu erstellen Weblin besitzt bereits ein Plugin welches animierte Avatare im GIF Format darstellt Es ist m glich auf der Webseite mit eigenen Animationen eigene Avatare zu erstellen die serverseitig gespeichert werden und direkt vom weblin Server abgerufen werden Dementsprechend k nnen die Avatare auf Basis des Second Life Clients herunter geladen animiert und die einzelnen Animationen als animierte Bilder auf den weblin Server hochgeladen werden um diese dort wie einen selbst erstellten Avatar zu behandeln Durch die GIF Formatierung und das einmalige Hochladen vom Benutzer werden die Datenmengen die kommuniziert werden immens verringert Die Visualisierung soll dabei einmalig in 3D durch den Second Life Client erfolgen In weblin selbst werden nur die animierten Grafiken ebenso behandelt wie hauseigene und durch das GIF Avatar Plugin visualisiert Die Kommunikation der Bilder findet dabei von weblin ber bestehende Formate statt Bliebe noch das Problem der Animation zu l sen Es gibt vordefinierte Animationen in Second Life Diese werden serverseitig kommuniziert es ist aber m glich eigene Animationen hoch zu laden Da die Avatare in weblin relativ klein sind einen maximalen Aktionsbereich von 100 mal 100 Pixel haben und sich nur im zweidimensionalen Raum bewegen k nnen
68. ten des Body und deren L nge ber die von der setDataCallback Methode gesetzten Funktionsreferenz zur ck an das Hauptprogramm gegeben werden 2 4 3 2 2 WSavePNGThread Diese Kindklasse der Thread Klasse speichert die als unkomprimierte 500 mal 500 Pixel vorliegenden Einzelbilder aller Animationen sortiert nach der jeweiligen Animation in einzelnen Unterordnern ab Die Bilder sind in ihrem Rohzustand noch viel zu gro als dass es sinnvoll w re sie hoch zu laden ca 340 Megabyte Daher werden sie auf eine Gr e von 100 mal 100 Pixel herunter skaliert und mit Hilfe der Cximage Bibliothek beim Speichern als PNG enkodiert Ohne weitere Bearbeitung w re der Avatar nur klein in der Mitte zu sehen Daher m ssen die Bilder vor dem Skalieren auf genau 100 mal 100 Pixel beschnitten werden Wichtig ist dass alle Vgl Kapitel 2 4 1 7 Entwicklung des weblin Second Life Generator 30 gleicherma en bearbeitet werden damit die Animationen fl ssig abgespielt werden k nnen Daf r wird bei jedem Bild ber alle Pixel iteriert und gepr ft ob die Alpha Komponente ungleich null ist Null bedeutet hier vollst ndig transparent Solche Pixel k nnen folglich vernachl ssigt werden Somit wird die absolute Ausdehnung des Avatar in allen Animationen wird ermittelt Wenn das Verh ltnis der Bilder von H he zu Breite nach der Beschneidung negativ ist wird die Breite auf 100 Pixel aufgef llt und dabei darauf geachtet dass
69. u laden um die eingetragene Sprache zu ermitteln um diese zu laden Nach diesen initialen Schritten k nnen der Fortschrittsdialog und der Anmeldedialog erstellt und initialisiert werden Wenn bis zu diesem Punkt keine Fehler aufgetreten sind wird die Hauptschleife betreten die die beiden Dialoge abwechselnd anzeigt Dies geschieht solange wie der Benutzer das Programm nicht beendet oder dieses durch Auftreten eines Fehlers beendet wird Initialisiere Logindialog Progressdialog Aufr umen Abb 2 Hauptprogramm Beide Dialoge werden in einzelnen Funktionen speziell behandelt und besitzen ein eigene Schleife die in beiden F llen die Systemmitteilungen verarbeitet und ber 7 Dynamic Link Library http www microsoft com technet archive wfw 7_agloss mspx 30 Vgl Kapitel 2 4 3 4 4 31 Vgl Kapitel 2 4 3 4 5 32 Vgl Kapitel 2 4 3 3 2 33 Vgl Kapitel 2 4 3 3 1 34 Vgl Kapitel 6 4 Entwicklung des weblin Second Life Generator 22 die Callback Funktionen an die Klassen weiterreicht Als Beispiel w ren hier das Zeichnen des Dialogs als Ereignis oder die Tastatur oder Mauseingabe bei aktivem Dialogfenster zu nennen In der Verarbeitungsschleife des Fortschrittdialogs findet zus tzlich zu der Verarbeitung der Mitteilungen die vom System kommen noch eine Vorverarbeitung der Bearbeitung der eigentlichen Funktionalit t statt welche ausgef hrt werden soll Im speziellen Falle des Durchlaufens der kompl
70. wird versucht die Sprachdatei f r Englisch zu laden en lang Schl gt dies ebenfalls fehl wird das Programm trotzdem gestartet Alle zu bersetzenden Texte werden in diesem Fall durch Unknown translation ersetzt Wenn eine Sprachdatei erfolgreich geladen wurde kann durch die Methode Translate und die Angabe des Schl ssels der Text in der richtigen Sprache 52 Vgl Kapitel 2 4 1 3 53 Vgl Kapitel 2 4 1 3 Entwicklung des weblin Second Life Generator 35 gefunden und somit im Dialog angezeigt werden Die Schl ssel m ssen dementsprechend in jeder Sprachdatei gleich sein 2 4 3 4 6 Tools Tools enth lt Methoden die keiner anderen Klasse eindeutig zuzuordnen sind wie z B das Erstellen von Teilen von Dateipfaden f r die zu speichernden Bilder die genau aus einer vierstelligen Nummer bestehen sollen und somit mit Nullen von vorne aufgef llt werden m ssen Des Weiteren ist das Setzen von Dialogtexten je nach Status der Applikation enthalten 2 4 3 5 Wichtige verwendete Second Life Klassen Die unter diesem Punkt aufgef hrten Klassen geh ren zu Second Life werden direkt oder indirekt von den erstellten Klassen verwendet und nehmen eine zentrale Position im Programma blauf ein 2 4 3 5 1 LLAgent LLAgent ist die Repr sentation des Clients in einem Objekt ber das in Second Life global definierte Objekt gAgent kann von berall auf den eigenen Avatar und hnliches zugegriffen werden Beispielsweise

Download Pdf Manuals

image

Related Search

Related Contents

Frye Microscope & Magnifier TheTime-Frequency-Amplitude Microscope User's Manual  Samsung DVD-VR370 Užívateľská príručka  人工呼吸器 HAMILTON  MEDITRoad ver. 1.0 User's Manual    

Copyright © All rights reserved.
Failed to retrieve file