Custom Libraries/de

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
 
Line 4: Line 4:
 
= Bibliotheksübersicht =
 
= Bibliotheksübersicht =
  
Die Bibliothek in OpenSimulator wird in der Datei <tt>bin/inventory/Libraries.xml</tt> beschrieben. Diese Datei definiert eine Anzahl anderer Bibliotheken, von denen jede eine Datei für Ordner und eine Datei für Objekte hat. Die in <tt>Libraries.xml</tt> beschriebenen Dateien werden jedes Mal gelesen, wenn der Server startet. (Beachten Sie jedoch, dass der Viewer Bibliotheksinformationen zwischenspeichert, sodass Sie möglicherweise den Cache des Viewers löschen müssen, um Änderungen zu sehen.)
+
Die Bibliothek in OpenSimulator wird in der Datei <tt>bin/inventory/Libraries.xml</tt> beschrieben. Diese Datei definiert eine Reihe weiterer Bibliotheken, von denen jede eine Datei für Ordner und eine Datei für Inhalte besitzt. Die in <tt>Libraries.xml</tt> beschriebenen Dateien werden bei jedem Serverstart eingelesen. (Beachte jedoch, dass der Viewer Bibliotheksinformationen zwischenspeichert. Du musst also möglicherweise den Cache im Viewer löschen, um Änderungen zu sehen.)
  
Wenn Sie Assets zur Bibliothek auf Ihrem OpenSimulator-Server hinzufügen möchten, gibt es zwei grundlegende Schritte. Der erste besteht darin, die Assets zu erstellen, der zweite darin, diese Inventar-XML-Dateien zu generieren. Die Assets enthalten Informationen über die Objekte selbst; die Geometrie der Prims, das Bild der Texturen, den Text von Notecards usw. Die Inventarobjekte sind Einträge in den Ordnern, die es Benutzern ermöglichen, auf die Assets tatsächlich zuzugreifen.
+
Wenn du Assets zur Bibliothek deines OpenSimulator-Servers hinzufügen möchtest, gibt es zwei grundlegende Schritte: Zuerst müssen die Assets erstellt, dann die entsprechenden Inventar-XML-Dateien erzeugt werden. Die Assets enthalten Informationen über die Objekte selbst die Geometrie von Prims, das Bild von Texturen, den Text von Notecards usw. Die Inventarobjekte sind Einträge in Ordnern, die es Benutzern ermöglichen, auf die Assets zuzugreifen.
  
Wenn Sie vorgefertigte Bibliotheken importieren möchten, können Sie den Abschnitt [[Free Assets]] überprüfen...
+
Wenn du sofort importierbare Bibliotheken möchtest, sieh dir den Abschnitt [[Free Assets]] an...
  
= Assets Generieren =
+
= Assets erzeugen =
  
Der Server kann auch Asset-Sets in großen Mengen importieren. Diese Asset-Sets werden in der Datei <tt>bin/assets/AssetSets.xml</tt> beschrieben. Jedes Asset-Set hat eine eigene XML-Datei, die die Assets beschreibt, zusammen mit einer anderen Datei, die die eigentlichen Asset-Daten (Bild- oder Textdaten) enthält. Sie können neue Asset-Sets definieren und die XML-Datei, die sie beschreibt, zu <tt>AssetSets.xml</tt> hinzufügen. Wenn Robust (im Grid-Modus) oder OpenSimulator (im Standalone-Modus) startet, schaut er sich die Datei AssetSets.xml an. Er findet heraus, welche der Assets in den Asset-Sets nicht in seinem Asset-Speicher vorhanden sind, und fügt sie hinzu.
+
Der Server kann auch Asset-Sätze im Bulk importieren. Diese Asset-Sätze sind in der Datei <tt>bin/assets/AssetSets.xml</tt> beschrieben. Jeder Asset-Satz hat eine eigene XML-Datei, die die Assets beschreibt, zusammen mit einer weiteren Datei, die die eigentlichen Asset-Daten enthält (Bild- oder Textdaten). Du kannst neue Asset-Sätze definieren und deren XML-Dateien zu <tt>AssetSets.xml</tt> hinzufügen. Wenn Robust (im Grid-Modus) oder OpenSimulator (im Standalone-Modus) startet, prüft es die <tt>AssetSets.xml</tt> und importiert alle Assets, die noch nicht im Asset-Store vorhanden sind.
  
== Assets mit dem Viewer Generieren ==
+
== Assets mit dem Viewer erzeugen ==
  
Der einfachste Weg, Assets zu generieren, besteht darin, sie einfach in-world zu erstellen oder sie mit dem Viewer hochzuladen. Wenn Sie dies tun, müssen Sie sich nicht mit Asset-Sets herumschlagen.
+
Die einfachste Methode zur Asset-Erstellung besteht darin, sie direkt in-world zu erzeugen oder über den Viewer hochzuladen. In diesem Fall ist kein Asset-Set notwendig.
  
== In großen Mengen ==
+
== Im Bulk-Verfahren ==
  
Wenn Sie jedoch Assets in großen Mengen erstellen möchten, müssen Sie Ihr eigenes Asset-Set definieren. Schauen Sie sich einige der in <tt>AssetSets.xml</tt> definierten Asset-Sets an, um ein Gefühl dafür zu bekommen, wie eine Asset-Set-XML-Datei aussieht.
+
Wenn du Assets im Bulk erzeugen möchtest, musst du dein eigenes Asset-Set definieren. Schau dir bestehende Einträge in <tt>AssetSets.xml</tt> an, um ein Gefühl für das Format zu bekommen.
  
Praktisch gesprochen können Sie im Moment nur LSL-Skripte, Notecards und Texturen auf diese Weise importieren. Es gibt zwei Schritte. Zuerst müssen Sie die Assets in das richtige Format bringen. Zweitens müssen Sie die XML-Dateien für die Assets generieren.
+
Praktisch betrachtet kannst du derzeit nur LSL-Skripte, Notecards und Texturen auf diese Weise importieren. Es gibt zwei Schritte: Zuerst müssen die Assets in das richtige Format gebracht werden. Zweitens müssen die XML-Dateien für die Assets erstellt werden.
  
=== Assets in das Richtige Format Bringen ===
+
=== Assets in das richtige Format bringen ===
  
 
Notecards und LSL-Dateien sind einfache Textdateien.
 
Notecards und LSL-Dateien sind einfache Textdateien.
  
Bilder haben eine Größe, die eine Potenz von zwei auf jeder Seite ist. Das heißt, sowohl die Breite als auch die Höhe müssen 16, 32, 64, 128, 256, 512 oder 1024 betragen. Sie müssen auch im JPEG2000 .j2k-Format vorliegen. Sie können die [http://www.openjpeg.org/ OpenJPEG]-Dienstprogramme verwenden, um von anderen Formaten nach JPEG2000 zu konvertieren. Beachten Sie, dass Version 1.3 der OpenJPEG-Bibliotheken keine Graustufenbilder oder Transparenz unterstützt. Es wird bei Graustufenbildern nicht funktionieren und alle Alphakanäle aus transparenten Bildern entfernen. Ab Revision 824 in den OpenJPEG-SVN-Archiven unterstützt es auch Transparenz und kann möglicherweise PNG-Dateien direkt lesen und (zumindest bei PNG-Dateien) Graustufenbilder verarbeiten. Es lohnt sich, eine neuere Version [http://code.google.com/p/openjpeg/source/checkout aus den SVN-Archiven] zu kompilieren, zumindest bis eine Version von OpenJPEG offiziell veröffentlicht wird, die diese Funktionen unterstützt.
+
Bilder müssen eine Seitenlänge haben, die eine Zweierpotenz ist, d.h. Breite und Höhe müssen eine der folgenden Größen sein: 16, 32, 64, 128, 256, 512 oder 1024. Sie müssen im JPEG2000-Format (.j2k) vorliegen. Mit den [http://www.openjpeg.org/ OpenJPEG]-Tools kannst du Bilder in das richtige Format konvertieren. Beachte, dass Version 1.3 der OpenJPEG-Bibliothek keine Graustufenbilder oder Transparenz unterstützt. Ab Revision 824 im OpenJPEG-SVN-Archiv werden Transparenz und PNG-Dateien unterstützt. Es lohnt sich also, eine neuere Version [http://code.google.com/p/openjpeg/source/checkout aus dem SVN-Archiv] zu kompilieren, bis eine offizielle Version diese Funktionen enthält.
  
Konvertieren Sie eine einzelne Bilddatei nach OpenJPEG mit
+
Um eine Bilddatei zu konvertieren:
  
 
   <tt>image_to_j2k -i ''inputfile'' -o ''outputbase''.j2k -r 100,30,10</tt>
 
   <tt>image_to_j2k -i ''inputfile'' -o ''outputbase''.j2k -r 100,30,10</tt>
  
Eine Anmerkung zur Komprimierung: Die Werte nach "-r" sind die Kompressionsverhältnisse, die in der OpenJPEG-Datei gespeichert werden. Wenn Sie ein Bild mit dem Viewer hochladen (zumindest mit Imprudence), ist die Liste der verwendeten Kompressionsverhältnisse 1920,480,120,30,10. Größere Zahlen bedeuten mehr Kompression und daher unschärfere Bilder. Der Vorteil der Speicherung mehrerer Kompressionsstufen besteht darin, dass, wenn die (geringe) Datenmenge für eine hohe Kompressionsstufe heruntergeladen wird, zumindest so viel gerendert werden kann. Dies ist der Grund, warum eine Textur beim Laden zuerst unscharf erscheint und (zumindest wenn Sie Glück haben) schließlich scharf wird. Ein Kompressionsverhältnis von 1 ist verlustfrei... und verwendet auch viel Platz im Asset-Speicher und viel Bandbreite, wenn es heruntergeladen wird. Ein niedrigstes Kompressionsverhältnis von 10 sollte für die meisten Zwecke ausreichen. Für Dinge wie Sculpt Maps (oder kleine, präzise Texturen) möchten Sie jedoch möglicherweise ein Kompressionsverhältnis von 1 am Ende der Argumente hinzufügen.
+
Ein Hinweis zur Kompression: Die Werte nach -r“ sind Kompressionsraten. Wenn du ein Bild über den Viewer hochlädst (z.B. mit Imprudence), werden in der Regel folgende Raten verwendet: 1920,480,120,30,10. Höhere Zahlen bedeuten stärkere Kompression und daher unschärfere Bilder. Der Vorteil mehrerer Kompressionsstufen ist, dass zunächst die niedrig aufgelösten Daten übertragen werden – was ein schnelles, wenn auch verschwommenes Vorschaubild ermöglicht. Eine Rate von 1 ist verlustfrei, verbraucht jedoch viel Speicherplatz und Bandbreite. Eine niedrigste Rate von 10 ist für die meisten Zwecke ausreichend. Für Sculpt Maps oder sehr präzise Texturen kann auch eine Rate von 1 sinnvoll sein.
  
Es gibt zwei Skripte, ein [[jp2 batch converter|Linux-Skript]] oder ein [[Jp2 batch converter for windows|Windows-Skript]] in Perl. Sie verwenden ImageMagick und image_to_j2k, um Bilddateien auf die entsprechende Größe zu skalieren und in j2k-Dateien zu konvertieren (obwohl sie mit einer .jp2-Erweiterung benannt sind, da der Viewer dies aus irgendeinem Grund erwartet). Wenn Sie dies verwenden möchten, sollten Sie sich jedoch einiger Einschränkungen bewusst sein:
+
Es gibt zwei Skripte zur Massenkonvertierung – ein [[jp2 batch converter|Linux-Skript]] und ein [[Jp2 batch converter for windows|Windows-Skript]] in Perl. Diese verwenden ImageMagick und image_to_j2k zur Größenanpassung und Konvertierung in das j2k-Format (trotzdem mit der Endung .jp2, da der Viewer dies erwartet). Aber Vorsicht:
  
* Das Skript ''löscht'' Ihre ursprüngliche Bilddatei.
+
* Das Skript ''löscht'' deine Originaldateien.
* Das Skript ''führt keine Fehlerprüfung durch''. Das bedeutet, dass, wenn aus irgendeinem Grund (und es gibt mehrere Gründe dafür!) die image_to_j2k-Datei fehlschlägt, das Skript Ihre Bilddatei ''trotzdem'' löscht. Dies könnte Sie traurig machen, wenn Sie, wie ein gewisser dummer Wiki-Seiten-Editor, keine Sicherungskopien gemacht haben.
+
* Das Skript ''prüft nicht auf Fehler''. Wenn die Konvertierung fehlschlägt, wird das Bild trotzdem gelöscht. Das kann frustrierend sein, wenn du keine Sicherung gemacht hast.
* Das Skript erstellt j2k-Dateien mit den Kompressionsverhältnissen 20,10,1. Während dies für Bilddateien, die mit dem Viewer gebündelt sind, großartig ist, ist es nicht gut für serverseitige Bilddateien. Diese verlustfreie Kompression bedeutet eine übermäßige Nutzung des Asset-Speichers des Servers und der Bandbreite.
+
* Das Skript nutzt die Kompressionsraten 20,10,1 – gut für Viewer-Bilder, schlecht für serverseitige Bilder, da die verlustfreie Kompression viel Speicher benötigt.
  
Vielleicht gibt es eines Tages ein aktualisiertes Skript...
+
Vielleicht gibt es irgendwann ein besseres Skript...
  
=== Asset-Set-XML-Dateien Erstellen ===
+
<source lang="python">
 +
# Python-Skript siehe Originaltext
 +
</source>
  
Sobald Sie alle Ihre Assets im richtigen Format haben, müssen Sie die Asset-Set-XML-Datei erstellen. Letztendlich möchten Sie ein neues Unterverzeichnis unter <tt>bin/assets</tt> erstellen. Angenommen, Sie erstellen ein neues Asset-Set namens <tt>MyAwesomeAssetSet</tt>. Sie müssen in diesem Verzeichnis eine Datei <tt>MyAwesomeAssetSet.xml</tt> erstellen. Sie können das Python-Skript [[updatelibrary.py]] verwenden, um diese Datei zu generieren. Es wird auch die benötigten Inventar-XML-Dateien generieren. Dieses Skript ist [[#Generating_Inventory_and_Asset_Files|unten]] dokumentiert.
+
=== Asset-Set-XML-Dateien erstellen ===
  
== Gelände ==
+
Wenn alle Assets im richtigen Format sind, musst du eine AssetSet-XML-Datei erstellen. Lege dazu ein Unterverzeichnis in <tt>bin/assets</tt> an, z. B. <tt>MyAwesomeAssetSet</tt>. In diesem Verzeichnis erstellst du die Datei <tt>MyAwesomeAssetSet.xml</tt>. Du kannst das Python-Skript [[updatelibrary.py]] verwenden, um diese Datei sowie die benötigten Inventar-XML-Dateien zu erstellen. Weitere Infos dazu gibt es [[#Generating_Inventory_and_Asset_Files|unten]].
=== Eine Gelände-Höhenkarte Erstellen ===
+
  
* [[Using L3DT|Erstellen benutzerdefinierter Gelände mit L3DT]]
+
== Terrains ==
 +
=== Terrain-Höhenkarte erstellen ===
  
= Inventarobjekte Generieren =
+
* [[Using L3DT|Eigene Terrains mit L3DT erstellen]]
  
Die Ordner, die in der Bibliothek angezeigt werden, sind in <tt>bin/inventory/Libraries.xml</tt> definiert. Diese XML-Datei hat einen Eintrag für jede Bibliothek; jede Bibliothek wird durch zwei XML-Dateien definiert. Eine beschreibt die Ordner in der Bibliothek (d. h. Unterordner unter einem Hauptordner, der unter der OpenSimulator Library angezeigt wird), und die andere beschreibt die Objekte in diesen Ordnern. Was Sie wahrscheinlich tun möchten, ist eine neue Bibliothek zu erstellen. Erstellen Sie ein Unterverzeichnis für diese Bibliothek. Generieren Sie die beiden XML-Dateien, die die Ordner und Objekte in dieser Bibliothek beschreiben. Fügen Sie einen Eintrag zu <tt>Libraries.xml</tt> hinzu, der die Namen der beiden XML-Dateien für Ihre Bibliothek angibt. Sie sind fertig! Das ist jedoch sehr mühsam, da es das Kopieren und Generieren vieler UUIDs erfordert. Daher möchten Sie dies, außer für die trivialsten Bibliotheken, nicht von Hand tun.
+
= Inventarobjekte erzeugen =
  
== Inventar- und Asset-Dateien Generieren ==
+
Die Ordner, die in der Bibliothek erscheinen, sind in <tt>bin/inventory/Libraries.xml</tt> definiert. Jede Bibliothek besteht aus zwei XML-Dateien – eine für Ordnerstruktur, eine für die Inhalte. Was du vermutlich tun willst, ist eine neue Bibliothek zu erstellen. Erstelle dafür ein Unterverzeichnis, erzeuge die zwei XML-Dateien, und füge einen Eintrag in <tt>Libraries.xml</tt> hinzu. Fertig! (Aber sehr aufwendig – UUIDs müssen manuell generiert und eingefügt werden.)
  
Das Python-Skript <tt>[[updatelibrary.py]]</tt> kann gleichzeitig Asset- und Inventar-XML-Dateien generieren. Im Grunde genommen pflegen Sie einen Baum von Assets in einem Asset-Set-Verzeichnis und führen dieses Skript aus, um die XML-Dateien mit Ihrem Baum zu synchronisieren. (Beachten Sie, dass es im Moment nur ''Assets hinzufügen'' kann; es wird sie nicht löschen, wenn Sie sie aus Ihrem Baum entfernen.) Es kann sowohl neue Assets in Ihrem Asset-Set hinzufügen als auch vorhandene Assets, die sich bereits im Asset-Speicher Ihres Grids befinden (für die Sie nichts zu einem Asset-Set hinzufügen müssen).
+
== Inventar- und Asset-Dateien erzeugen ==
  
Um
+
Das Python-Skript <tt>[[updatelibrary.py]]</tt> kann Asset- und Inventar-XML-Dateien gleichzeitig erzeugen. Du verwaltest eine Verzeichnisstruktur mit deinen Assets und führst das Skript aus, um die XML-Dateien zu synchronisieren. (Es werden nur neue Assets hinzugefügt – nicht entfernt.)
  
es zu verwenden, müssen Sie:
+
Vorgehen:
* Ein Asset-Set-Verzeichnis erstellen
+
* Lege ein Asset-Set-Verzeichnis an.
* Alle Ihre Asset-Dateien (Textdateien für Skripte und Notecards, richtig formatierte j2k-Dateien für Texturen) in Verzeichnissen unter diesem Asset-Set-Verzeichnis anordnen, die den Ordnern und Unterordnern unter Ihrem Bibliothek-Hauptverzeichnis entsprechen.
+
* Ordne deine Dateien (.txt für Notecards/Skripte, .j2k für Texturen) in Ordner ein, die später den Inventarordnern entsprechen.
* Den Namen Ihrer Bibliothek und eine kurze Version (ohne Leerzeichen), die für Dateinamen verwendet wird, festlegen.
+
* Wähle einen Namen für deine Bibliothek und eine Kurzform ohne Leerzeichen.
  
Wenn Sie beispielsweise eine Bibliothek erstellen, die als Ordner unter dem OpenSimulator-Bibliotheksordner als "My Awesome Library" angezeigt wird, könnten Sie sie im MyAwesomeAssetSet-Verzeichnis erstellen. Unter diesem Verzeichnis erstellen Sie Unterverzeichnisse mit den Namen Textures, Clothing, Objects und so weiter. In das Textures-Verzeichnis legen Sie Ihre richtig formatierten j2k-Dateien. Im Moment verarbeitet das Skript nur Texturen (.j2k), Notecards (.txt) und Skripte (.lsl).
+
Beispiel: Du willst eine Bibliothek „My Awesome Library“ erstellen. Nutze das Verzeichnis <tt>MyAwesomeAssetSet</tt>, darunter z. B. <tt>Textures</tt>, <tt>Clothing</tt>, <tt>Objects</tt>. Dort hinein kommen die passenden Dateien.
  
Zusätzlich können Sie in jedem Verzeichnis eine Datei namens "addassets.lis" ablegen. Sie können Assets auflisten, die sich bereits im Asset-Speicher Ihres Grids befinden und die der Bibliothek im entsprechenden Ordner des Verzeichnisses der jeweiligen addassets.lis-Datei hinzugefügt werden sollen. ''Jeder'' Asset-Typ kann auf diese Weise zur Bibliothek hinzugefügt werden. Diese Datei ist eine Reihe von Zeilen, die jeweils das Format
+
Zusätzlich kannst du in jedem Verzeichnis eine Datei „addassets.lis“ anlegen. Dort können vorhandene Assets aus dem Grid gelistet werden. Das Format:
  
   asset_uuid  asset_type  inventory_type  name of object in inventory
+
   asset_uuid  asset_type  inventory_type  Name im Inventar
  
verwenden. Ein Viewer wie Imprudence kann Ihnen die asset_uuid von allem in Ihrem Inventar anzeigen; Sie können dies einfach in die addassets.lis-Datei kopieren. asset_type ist eine Zahl, die vom Asset-Typ abhängt:
+
Ein Viewer wie Imprudence zeigt dir die asset_uuid. Die Typen:
  
 
{|border="2" cellpadding="2" cellspacing="2"
 
{|border="2" cellpadding="2" cellspacing="2"
!Typ des Objekts
+
!Objekttyp
 
!asset_type
 
!asset_type
 
!
 
!
!Typ des Objekts
+
!Objekttyp
 
!asset_type
 
!asset_type
 
|-
 
|-
Line 92: Line 94:
 
|1
 
|1
 
|
 
|
|LSL Text
+
|LSL-Text
 
|10
 
|10
 
|-
 
|-
Line 98: Line 100:
 
|2
 
|2
 
|
 
|
|LSL Bytecode
+
|LSL-Bytecode
 
|11
 
|11
 
|-
 
|-
Line 104: Line 106:
 
|3
 
|3
 
|
 
|
|Körperteil
+
|Bodypart
 
|13
 
|13
 
|-
 
|-
Line 113: Line 115:
 
|20
 
|20
 
|-
 
|-
|Primitive
+
|Objekt (Prim)
 
|6
 
|6
 
|
 
|
|Gestik
+
|Geste
 
|21
 
|21
 
|}
 
|}
  
inventory_type ist eine andere Zahl, die wiederum vom Inventartyp abhängt. (Inventartyp und Asset-Typ sind nicht dasselbe, obwohl sie oft eng miteinander verbunden sind. Der Inventartyp bestimmt, welches Symbol der Viewer neben dem Namen des Inventarobjekts anzeigt.)
+
Inventory_type unterscheidet sich ggf.:
  
 
{| border="2" cellpadding="2" cellspacing="2"
 
{| border="2" cellpadding="2" cellspacing="2"
!Typ des Objekts
+
!Objekttyp
 
!inventory_type
 
!inventory_type
 
!
 
!
!Typ des Objekts
+
!Objekttyp
 
!inventory_type
 
!inventory_type
 
|-
 
|-
Line 132: Line 134:
 
|0
 
|0
 
|
 
|
|Hauptkategorie
+
|Root-Kategorie
 
|9
 
|9
 
|-
 
|-
Line 138: Line 140:
 
|1
 
|1
 
|
 
|
|LSL Skript
+
|LSL-Skript
 
|10
 
|10
 
|-
 
|-
Line 144: Line 146:
 
|2
 
|2
 
|
 
|
|Schnappschuss
+
|Snapshot
 
|15
 
|15
 
|-
 
|-
Line 150: Line 152:
 
|3
 
|3
 
|
 
|
|Anhang
+
|Attachment
 
|17
 
|17
 
|-
 
|-
Line 168: Line 170:
 
|8
 
|8
 
|
 
|
|Gestik
+
|Geste
 
|20
 
|20
 
|}
 
|}
  
(Es gibt auch den "Keine" Inventartyp, der die Nummer -1 hat. Körperteile und Kleidung sind beides Wearables.)
+
(Es gibt auch „None“ mit -1. Bodyparts und Kleidung = Wearables.)
  
Führen Sie das Skript aus. (Führen Sie es mit <tt>--help</tt> aus, um die Benutzungsanweisungen zu erhalten.) Es wird das gesamte Verzeichnis durchgehen, in dem Sie Ihre Asset-Dateien abgelegt haben. Es wird die bereits vorhandenen Asset-Set-, Inventarordner- und Inventarobjekt-XML-Dateien lesen. Es wird dann Einträge nach Bedarf zu diesen Dateien für alle neuen .j2k-, .txt- oder .lsl-Dateien in Ihrem Verzeichnisbaum sowie für alle neuen Einträge in einer addassets.lis-Datei hinzufügen.
+
Führe das Skript aus (mit <tt>--help</tt> für Hilfe). Es durchsucht dein Verzeichnis und ergänzt die XML-Dateien. Danach musst du nur noch <tt>inventory/Libraries.xml</tt> und <tt>assets/AssetSets.xml</tt> aktualisieren. Beim nächsten Start von OpenSimulator oder Robust werden Assets und Bibliothekseinträge übernommen. Denke daran: Viewer-Cache leeren!
 
+
Wenn das Skript abgeschlossen ist, müssen Sie nur noch <tt>inventory/Libraries.xml</tt> und <tt>assets/AssetSets.xml</tt> bearbeiten, um es über Ihr neues Asset-Set und Ihre neue Bibliothek zu informieren. Beim nächsten Start von OpenSimulator oder (im Grid-Modus) Robust sollten Ihre Assets importiert und Ihre Einträge zur Bibliothek hinzugefügt werden. Denken Sie daran, dass der Viewer die Bibliotheksliste zwischenspeichert. Sie müssen möglicherweise den Cache des Viewers löschen, um die aktuelle Version der Bibliothek zu erhalten.
+
  
 
== Vorsicht ==
 
== Vorsicht ==
  
Bibliotheksdaten werden derzeit von der Region selbst und nicht vom Inventardienst abgerufen. Im Grid-Modus müssen die Bibliotheks-XML-Dateien also nicht nur auf dem Robust-Server, sondern auch auf jedem einzelnen Regions-OpenSimulator-Server vorhanden sein.
+
Bibliotheksdaten werden derzeit von der Region selbst geladen, nicht vom Inventory-Service. Daher müssen die XML-Dateien auf jedem einzelnen Region-Server vorhanden sein – nicht nur auf dem Robust-Server.
 +
 
 +
In Zukunft sollte der Inventory-Service zentral die Bibliotheksdaten laden und an Regionen verteilen. Das erhöht die Last dort, ermöglicht aber bessere zentrale Verwaltung.
  
Dies muss sich in Zukunft ändern, damit Bibliotheksdaten direkt in den Inventardienst vom Robust-Server geladen und auf Anfrage an einzelne Grids verteilt werden (hauptsächlich beim Benutzer-Login). Dies könnte den Inventardienst stärker belasten, obwohl es im Falle des Inventars möglicherweise machbar ist, eine langlebige Cache der Daten auf der Simulator-Seite zu haben.
+
Fragen zu <tt>[[updatelibrary.py]]</tt> bitte an Rob Knop (rknop auf freenode, meist in opensim-dev; In-World: Prospero Frobozz).
  
Kontaktieren Sie Rob Knop (rknop auf freenode, normalerweise im opensim-dev; Prospero Frobozz auf vielen Grids) bei Fragen zu <tt>[[updatelibrary.py]]</tt>.
 
  
 
[[Category:German Translations]]
 
[[Category:German Translations]]

Latest revision as of 23:49, 14 April 2025


Contents

[edit] Bibliotheksübersicht

Die Bibliothek in OpenSimulator wird in der Datei bin/inventory/Libraries.xml beschrieben. Diese Datei definiert eine Reihe weiterer Bibliotheken, von denen jede eine Datei für Ordner und eine Datei für Inhalte besitzt. Die in Libraries.xml beschriebenen Dateien werden bei jedem Serverstart eingelesen. (Beachte jedoch, dass der Viewer Bibliotheksinformationen zwischenspeichert. Du musst also möglicherweise den Cache im Viewer löschen, um Änderungen zu sehen.)

Wenn du Assets zur Bibliothek deines OpenSimulator-Servers hinzufügen möchtest, gibt es zwei grundlegende Schritte: Zuerst müssen die Assets erstellt, dann die entsprechenden Inventar-XML-Dateien erzeugt werden. Die Assets enthalten Informationen über die Objekte selbst – die Geometrie von Prims, das Bild von Texturen, den Text von Notecards usw. Die Inventarobjekte sind Einträge in Ordnern, die es Benutzern ermöglichen, auf die Assets zuzugreifen.

Wenn du sofort importierbare Bibliotheken möchtest, sieh dir den Abschnitt Free Assets an...

[edit] Assets erzeugen

Der Server kann auch Asset-Sätze im Bulk importieren. Diese Asset-Sätze sind in der Datei bin/assets/AssetSets.xml beschrieben. Jeder Asset-Satz hat eine eigene XML-Datei, die die Assets beschreibt, zusammen mit einer weiteren Datei, die die eigentlichen Asset-Daten enthält (Bild- oder Textdaten). Du kannst neue Asset-Sätze definieren und deren XML-Dateien zu AssetSets.xml hinzufügen. Wenn Robust (im Grid-Modus) oder OpenSimulator (im Standalone-Modus) startet, prüft es die AssetSets.xml und importiert alle Assets, die noch nicht im Asset-Store vorhanden sind.

[edit] Assets mit dem Viewer erzeugen

Die einfachste Methode zur Asset-Erstellung besteht darin, sie direkt in-world zu erzeugen oder über den Viewer hochzuladen. In diesem Fall ist kein Asset-Set notwendig.

[edit] Im Bulk-Verfahren

Wenn du Assets im Bulk erzeugen möchtest, musst du dein eigenes Asset-Set definieren. Schau dir bestehende Einträge in AssetSets.xml an, um ein Gefühl für das Format zu bekommen.

Praktisch betrachtet kannst du derzeit nur LSL-Skripte, Notecards und Texturen auf diese Weise importieren. Es gibt zwei Schritte: Zuerst müssen die Assets in das richtige Format gebracht werden. Zweitens müssen die XML-Dateien für die Assets erstellt werden.

[edit] Assets in das richtige Format bringen

Notecards und LSL-Dateien sind einfache Textdateien.

Bilder müssen eine Seitenlänge haben, die eine Zweierpotenz ist, d.h. Breite und Höhe müssen eine der folgenden Größen sein: 16, 32, 64, 128, 256, 512 oder 1024. Sie müssen im JPEG2000-Format (.j2k) vorliegen. Mit den OpenJPEG-Tools kannst du Bilder in das richtige Format konvertieren. Beachte, dass Version 1.3 der OpenJPEG-Bibliothek keine Graustufenbilder oder Transparenz unterstützt. Ab Revision 824 im OpenJPEG-SVN-Archiv werden Transparenz und PNG-Dateien unterstützt. Es lohnt sich also, eine neuere Version aus dem SVN-Archiv zu kompilieren, bis eine offizielle Version diese Funktionen enthält.

Um eine Bilddatei zu konvertieren:

 image_to_j2k -i inputfile -o outputbase.j2k -r 100,30,10

Ein Hinweis zur Kompression: Die Werte nach „-r“ sind Kompressionsraten. Wenn du ein Bild über den Viewer hochlädst (z.B. mit Imprudence), werden in der Regel folgende Raten verwendet: 1920,480,120,30,10. Höhere Zahlen bedeuten stärkere Kompression und daher unschärfere Bilder. Der Vorteil mehrerer Kompressionsstufen ist, dass zunächst die niedrig aufgelösten Daten übertragen werden – was ein schnelles, wenn auch verschwommenes Vorschaubild ermöglicht. Eine Rate von 1 ist verlustfrei, verbraucht jedoch viel Speicherplatz und Bandbreite. Eine niedrigste Rate von 10 ist für die meisten Zwecke ausreichend. Für Sculpt Maps oder sehr präzise Texturen kann auch eine Rate von 1 sinnvoll sein.

Es gibt zwei Skripte zur Massenkonvertierung – ein Linux-Skript und ein Windows-Skript in Perl. Diese verwenden ImageMagick und image_to_j2k zur Größenanpassung und Konvertierung in das j2k-Format (trotzdem mit der Endung .jp2, da der Viewer dies erwartet). Aber Vorsicht:

  • Das Skript löscht deine Originaldateien.
  • Das Skript prüft nicht auf Fehler. Wenn die Konvertierung fehlschlägt, wird das Bild trotzdem gelöscht. Das kann frustrierend sein, wenn du keine Sicherung gemacht hast.
  • Das Skript nutzt die Kompressionsraten 20,10,1 – gut für Viewer-Bilder, schlecht für serverseitige Bilder, da die verlustfreie Kompression viel Speicher benötigt.

Vielleicht gibt es irgendwann ein besseres Skript...

# Python-Skript siehe Originaltext

[edit] Asset-Set-XML-Dateien erstellen

Wenn alle Assets im richtigen Format sind, musst du eine AssetSet-XML-Datei erstellen. Lege dazu ein Unterverzeichnis in bin/assets an, z. B. MyAwesomeAssetSet. In diesem Verzeichnis erstellst du die Datei MyAwesomeAssetSet.xml. Du kannst das Python-Skript updatelibrary.py verwenden, um diese Datei sowie die benötigten Inventar-XML-Dateien zu erstellen. Weitere Infos dazu gibt es unten.

[edit] Terrains

[edit] Terrain-Höhenkarte erstellen

[edit] Inventarobjekte erzeugen

Die Ordner, die in der Bibliothek erscheinen, sind in bin/inventory/Libraries.xml definiert. Jede Bibliothek besteht aus zwei XML-Dateien – eine für Ordnerstruktur, eine für die Inhalte. Was du vermutlich tun willst, ist eine neue Bibliothek zu erstellen. Erstelle dafür ein Unterverzeichnis, erzeuge die zwei XML-Dateien, und füge einen Eintrag in Libraries.xml hinzu. Fertig! (Aber sehr aufwendig – UUIDs müssen manuell generiert und eingefügt werden.)

[edit] Inventar- und Asset-Dateien erzeugen

Das Python-Skript updatelibrary.py kann Asset- und Inventar-XML-Dateien gleichzeitig erzeugen. Du verwaltest eine Verzeichnisstruktur mit deinen Assets und führst das Skript aus, um die XML-Dateien zu synchronisieren. (Es werden nur neue Assets hinzugefügt – nicht entfernt.)

Vorgehen:

  • Lege ein Asset-Set-Verzeichnis an.
  • Ordne deine Dateien (.txt für Notecards/Skripte, .j2k für Texturen) in Ordner ein, die später den Inventarordnern entsprechen.
  • Wähle einen Namen für deine Bibliothek und eine Kurzform ohne Leerzeichen.

Beispiel: Du willst eine Bibliothek „My Awesome Library“ erstellen. Nutze das Verzeichnis MyAwesomeAssetSet, darunter z. B. Textures, Clothing, Objects. Dort hinein kommen die passenden Dateien.

Zusätzlich kannst du in jedem Verzeichnis eine Datei „addassets.lis“ anlegen. Dort können vorhandene Assets aus dem Grid gelistet werden. Das Format:

 asset_uuid  asset_type  inventory_type  Name im Inventar

Ein Viewer wie Imprudence zeigt dir die asset_uuid. Die Typen:

Objekttyp asset_type Objekttyp asset_type
Textur 0 Notecard 7
Sound 1 LSL-Text 10
Visitenkarte 2 LSL-Bytecode 11
Landmarke 3 Bodypart 13
Kleidung 5 Animation 20
Objekt (Prim) 6 Geste 21

Inventory_type unterscheidet sich ggf.:

Objekttyp inventory_type Objekttyp inventory_type
Textur 0 Root-Kategorie 9
Sound 1 LSL-Skript 10
Visitenkarte 2 Snapshot 15
Landmarke 3 Attachment 17
Objekt 6 Wearable 18
Notecard 7 Animation 19
Kategorie 8 Geste 20

(Es gibt auch „None“ mit -1. Bodyparts und Kleidung = Wearables.)

Führe das Skript aus (mit --help für Hilfe). Es durchsucht dein Verzeichnis und ergänzt die XML-Dateien. Danach musst du nur noch inventory/Libraries.xml und assets/AssetSets.xml aktualisieren. Beim nächsten Start von OpenSimulator oder Robust werden Assets und Bibliothekseinträge übernommen. Denke daran: Viewer-Cache leeren!

[edit] Vorsicht

Bibliotheksdaten werden derzeit von der Region selbst geladen, nicht vom Inventory-Service. Daher müssen die XML-Dateien auf jedem einzelnen Region-Server vorhanden sein – nicht nur auf dem Robust-Server.

In Zukunft sollte der Inventory-Service zentral die Bibliotheksdaten laden und an Regionen verteilen. Das erhöht die Last dort, ermöglicht aber bessere zentrale Verwaltung.

Fragen zu updatelibrary.py bitte an Rob Knop (rknop auf freenode, meist in opensim-dev; In-World: Prospero Frobozz).

Personal tools
General
About This Wiki