Anwendungs-Gedanken

Jetzt haben wir also eine Möglichkeit, Bilder aus dem Web im Simulator darstellen zu können. Eine feine Sache muss ich zugeben. Da die Wünsche stets mit der Realisierung wachsen bei den Menschen ^^ möchten wir auch gerne HTML-Seiten zeigen können. Die eine Variante ist es, OpenSim wiederum aufzubohren und sozusagen das vollständige „WebOnAPrim“ zu implementieren, aber zunächst hab ich mich an einer anderen Variante ausgetobt.

Anwendungs-Gedanken weiterlesen

Second Life bald im Webbrowser?

Zumindest verdichten sich Informationen, wonach LindenLabs genau das im November testen will. Möglicher Hintergrund ist, dass SL auf diesem Wege neue Nutzer bekommen soll, denen es ansonsten zu beschwerlich wäre, den Viewer zu installieren. Für den Test sollen zunächst Zeitraum, Nutzerkreis und besuchbare Orte beschränkt sein.

Vom Ausgang des Tests hängt dann vermutlich ab, ob dieses Projekt mit dem Arbeitstitel „Skylight“ weiterverfolgt wird. Sollte „SL im Browser“ kommen, dürfte es wohl nur eine Frage der zeit sein, ehe auch der Zugriff auf OpenSim über Browser möglich ist.

(via kueperpunk)

Gar nicht so übel

Erste Impressionen von – na wie sollen wir es nennen? Da fällt sicherlich jemandem was zu ein. Das Bild spricht jedenfalls für sich, oder? Es ist noch große Vorsicht geboten, da die Timer wohl nicht sauber implementiert sind. Aber das können wir ja über LSL-Timer realisieren. EDIT: Es baut auf der 0.7.1er (GIT, DEV) mit einer eigenen Funktion da die dort originär implementierten Versionen noch nicht klappen. Name zur Zeit zur Verwendung in Scripten: wbDisplayWebimage. Und es bekommt als Parameter lediglich die URL. Zurück liefert es den String der UUID des erzeugten Images. Und im Moment arbeitet es auf allen „Faces“ (Oberflächen), werde ich wahrscheinlich noch ändern aber im Moment reicht es mal so.

Und hier nun der notwendige Minimal-Code ohne Refresh, das ja bei normalen statischen Bildern nicht notwendig ist :):

[code lang="c"]
string rc;
default {
    state_entry() {
        rc = wbDisplayWebimage("http://wolfsbone.de/download/public/xsyonNomadsSigns/snake.png");
    }
}
[/code]

Ausstellungsvorbereitungen

Meine Idee einer Fotoausstellung auf Utopia nimmt erste konkretere Formen an. Ich habe jetzt mal eine Bildertafel gebastelt, auf der die Fotos dargestellt werden können. Die Tafel ist vier Meter Breit und 3 Meter hoch (ohne Standfüße). Genügend Platz also, die Fotos ansprechend darzustellen.

Jetzt muss ich die in Frage kommenden Bilder mal sortieren und auswählen. Ich denke, in den nächsten tagen wird sich noch einiges tun.

Nicht denken, testen!

Nun ja, manches ist so einfach. Und manchmal spielt einem die Erfahrung auch einen Streich. Viele Optionen werden dadurch deaktiviert, dass sie auf 0 gesetzt werden statt eines höheren Wertes, nach dem Motto: Ist es grösser als 0 dann bildet es eine Grenze, ist es gleich 0, dann ist diese Option nicht wirksam.

Es ist – wie gesagt – oft so. Bei der absoluten non-physischen Primgrösse in einer Region ist es auch so. Nicht jedoch bei der physischen maximalen Grösse. Und so bedurfte es erweiterten Debuggens um festzustellen, dass der simple Parameter in den regions-XMLs „physical_prim_max“ – wenn 0 – tatsächlich 0 bedeutet: Die Option einen Prim physisch zu machen wird damit also abgeschaltet.

Und was ist das Ergebnis? Nun, wir haben jetzt Physics. 😀 Aber natürlich werden wir sparsam damit umgehen, denn wie bekannt gibt es kaum ein leichteres Mittel eine Region lahm zu legen als etwas gesteigerte Verwendung davon. Da ich aber Robotics mag und Vehicles und das Basteln damit, und auch Bewegungen mit Physis und dem dann möglichen „moveTo“ viel eleganter sind als explizites Setzen der Positionen, machen wir es grundsätzlich möglich und ich darf mich über den nächsten erreichten Punkt freuen. 🙂 Yeah.

Was zum Spielen, was zum Basteln …

… und was zum Lachen mal in diesem Fall. Einen kleinen Einblick in die Vielfalt eines OpenSource-Projektes liefert folgender Schnipsel:

[code lang="csharp"]public void ResetChildPrimPhysicsPositions()
{
AbsolutePosition = AbsolutePosition; // could someone in the know please explain how this works?

// teravus: AbsolutePosition is NOT a normal property!
// the code in the getter of AbsolutePosition is significantly different then the code in the setter!
}[/code]

Schauen wir uns das mal an: Der Inhalt einer Variable wird ohne weitere Modifikation derselben zugewiesen. Und jemand schreibt dazu: Kann mir ein Wissender einmal erklären, wie das funktionieren soll? Zu Recht, glaubt man zunächst. Ich finde das „in the know“ wirklich Klasse, viel netter als im Deutschen und humorvoll. Und auch das „how“ ist nett, denn DASS es klappt ist ja eh klar, die Frage ist nur: Was soll das überhaupt?

Die Antwort dazu liefert nicht wirklich Aufschluss, ist auch ziemlich trocken, lediglich sagt sie im Prinzip: „Macht Sinn“. Sicherlich mag nicht jeder darüber schmunzeln können, ich jedoch musste herzhaft lachen als ich über diesen kleinen Ausschnitt des OpenSim-Projekts gestolpert bin.

Mein Kommentar dazu: Oh ja, es mag tatsächlich Sinn machen. Und zwar dann, wenn der Inhalt der Variable vorher nicht „sauber“ war. Wir kennen das von arithmetischen Zuweisungen im Shell-Bereich. Nehmen wir einmal folgenden Befehl:

[code lang=“bash“] zahl = “     5″[/code]

Damit steht in der Variable „zahl“ ein String der hinten nach einer Zahl riecht. Sauber ist das natürlich nicht, und das simple Statement:

[code lang=“bash“]zahl = `expr $zahl`[/code]

bereinigt die Situation. Jetzt steht tatsächlich nur noch die Ziffer 5 in der Variable zahl. Eine Art trimmen hat stattgefunden. Jetzt mag man sagen, aber das steht doch oben nicht im Code, da fehlt doch der Aufruf eines Programms wie „expr“. Dabei vergisst man aber, dass Hochsprachen-Compiler Code generieren der das sogenannte Coercion ausführt, eine Typwandlung zum möglichst Passenden. So wird ein String „5“ der durch irgendeinen dummen Zufall in einer Integer-Variable enthalten sein mag durch eine erneute Zuweisung zu einer echten Zahl. Allerdings hätte da bei der primären Zuweisung schon dasselbe passieren sollen aber das hat möglicherweise ein Dritter gebaut 😉

Und nein, ich werde meine Gedanken dazu nicht in die Quelldateien einbauen, erstens bin ich nicht Mitglied des ehrenwerten Gremiums und zweitens – bei allem Verständnis für humorvolles Arbeiten – finde ich einen chat über die Sourcen dann doch etwas mühsam. ^^

Umzugsservice von A nach B

Mit der Zeit häufen sich auch im virtuellen Dasein eine Menge Güter an. Die alte Erkenntnis aus der materiellen Welt – je größer die Wohnung, desto mehr Plunder – gilt auch, und erst recht, für die virtuelle Welt, denn das Inventar ist riesig.

Es lohnt sich, Ordnung in diesem Inventar zu halten. Nicht nur, während man sich in der virtuellen Welt aufhält („Wo waren noch einmal diese tollen Schuhe, die ich vor einem halben Jahr mal gekauft habe?“), sondern auch für den Fall, dass man mal umzieht.

Second Life ist diesbezüglich mal wieder etwas „kastriert“, denn nach den neuesten Spielregeln von Linden Lab dürfen nur solche Objekte exportiert werden, die man selbst erstellt hat. Fast könnte man meinen, die Lindens hätten sich das bei einem anderen Weltenschöpfer abgeguckt, denn bekanntermaßen nimmt man auch aus diesem ganz unvirtuellen Leben nichts mit.

Für OpenSim gelten diese Beschränkungen nicht. Einen Weg, Ländereien, Güter und Besitztümer von A nach B zu transportieren, stellt die Möglichkeit einer OAR-Datei dar. Wie das funktioniert, habe ich bereits an anderer Stelle geschildert.

Allerdings haben manche Viewer auch eingebaute Möglichkeiten, virtuelle Gegenstände zu exportieren und in einem anderen Grid wieder zu importieren. Der offizielle Linden-Viewer bietet diese Möglichkeit nicht, aber der Hippo Viewer beherrscht den Export von Objekten, ebenso der Imprudence-Viewer, der von OSGrid als Standardviewer empfohlen wird.

Über die Konsole gibt s zwar auch die (experiementelle) Möglichkeit, ein komplettes Inventar zu exportieren, beim Export über den Viewer jedoch mus das Objekt gerezzt sein. Anschließend muss das Objekt noch markiert, sein, ehe man mit dem Export beginnen kann. Die Position der jeweiligen Prims wird ebenso mitexportiert wie die Information, ob die Prims verlinkt sind. Gespeichert wird das Ganze in einer XML-Datei.

Ebenfalls mitexportiert werden die Texturen, die der Viewer jeweils in Dateien ablegt, die die bisherige UUID als Dateinamen tragen.

Beim Import hat man dann die Wahl, entweder nur das Objekt selbst oder die Texturen gleich mit zu importieren.

Nach meinem subjektiven Empfinden beherrscht der Imprudence Viewer den Im- und Export ein wenig besser als der Hippo Viewer. Zumindest erhielt ich beim Imprudence keine Fehlermeldung, während der Hippo meckerte, dass er die eine oder andere Textur nicht tranportieren konnte.

Nicht mit exportiert werden Skripte und Animationen, die in den Prims enthalten sind. Während Skripte einfach per Copy & Paste neu angelegt werden können (sofern man die notwendigen Rechte auf das Skript hat), muss man die Animation als Kopie auf der Festplatte haben und sie neu hochladen.

Wichtig zu wissen ist noch: Im Zielgrid wird der importierende Avatar auch als Creator eingetragen.

Informationen zu WordPress

Weil ich gerade etwas suchen musste um es letztlich zu finden: WordPress braucht die gd-Library um Thumbs (diese miniaturisierten Grafiken) zu erstellen, und bei Debian ist das das Package „php5-gd“, weil WordPress natürlich php und so … 😉

Und um im guten alten Brenner-Stil weiterzumachen: Aber wenn du jetzt denkst, das geht so ohne weiteres, dann Irrtum, weil:

[code lang=“dos“]dpkg: libgd2-noxpm: dependency problems, but removing anyway as you request[/code]

und da

[code lang=“dos“] webalizer depends on libgd2-noxpm (>= 2.0.36~rc1~dfsg) | libgd2-xpm (>= 2.0.36~rc1~dfsg); however:
Package libgd2-noxpm is to be removed.
Package libgd2-xpm is not installed.
(Reading database … 38287 files and directories currently installed.)
Removing libgd2-noxpm …
Selecting previously deselected package libgd2-xpm.
(Reading database … 38276 files and directories currently installed.)
Unpacking libgd2-xpm (from …/libgd2-xpm_2.0.36~rc1~dfsg-3+lenny1_amd64.deb) …
Selecting previously deselected package libt1-5.
Unpacking libt1-5 (from …/libt1-5_5.1.2-3_amd64.deb) …
Selecting previously deselected package php5-gd.
Unpacking php5-gd (from …/php5-gd_5.2.6.dfsg.1-1+lenny9_amd64.deb) …
Setting up libgd2-xpm (2.0.36~rc1~dfsg-3+lenny1) …
Setting up libt1-5 (5.1.2-3) …
Setting up php5-gd (5.2.6.dfsg.1-1+lenny9) …[/code]

könnten wir jetzt ein Problem mit WebAlyzer haben … ,) … nun, das sehen wir dann morgen nach dem nächsten Lauf. 🙂

Solution – was für ein treffender Name

„Solution“ nennt Microsoft bei ihren IDEs (Integrated Development Environment) – und davon gibt es schon bei den VisualStudio-Express-Varianten vier Stück  (Basic, C++, C# und das andere hab ich grad vergessen) – eine Sammlung von Projekten unter einem Dach. Es gibt also, anders als bei anderen Entwicklungsumgebungen noch etwas über dem „Projekt“, und bei den OpenSim-Entwicklungen wurde das hinreichend genutzt. Das Programm eignet sich sicherlich recht gut für Teamarbeiten. Eine gute Sache, dass M$ diese Express-Version kostenlos zur Verfügung stellt für private Nutzungen, so kann man reinschnuppern und erste Gehversuche damit machen. Tja, wäre es so leicht für iPhone Apps zu entwickeln … aber das ist eine andere Geschichte. 🙂 Solution – was für ein treffender Name weiterlesen

Viel Raum für eine Ausstellung?

Vor ein paar Tagen habe ich die Bilbliothek von unserem Standalone-Grid nach Metropolis geholt. An dem Gebäude liegt mir wirklich viel, weil ich einiges an Arbeit und Kreativität darauf verwendet habe.

Nun steht es also da. Heute habe ich mal eine Allee hin zum Haupteingang gezimmert – mit Straße und Bäumen. Doch das Innere des Gebäudes ist derzeit hässlich leer. Fragt sich also, wie es verwendet werden kann (denn als pure Kulisse fände ich es etwas schade).

Im Hinterkopf ist ja immer noch die Überlegung, eines Tages wirklich eine Bibliothek daraus zu machen. Das wird jedoch erst passieren, wenn wir mal eine vernünftige Art und Weise gefunden haben, Inhalte darzustellen.

Bis dahin bietet sich der Raum vielleicht an, eine Fotoausstellung auszurichten. Denn für solche Zwecke ist die Opensim-Umgebung wirklich sehr gut geeignet.