This is NOT an offical website of Linden Reseach Inc. and NOT the official Second Life®. Second Life® and Linden Lab® are registered trademarks of Linden Research Inc. No infringement is intended.
 

 
Dies ist keine offizielle Webseite von Linden Reseach Inc. und nicht Second Life®. Second Life® and Linden Lab® sind registrierte Marken der Linden Research Inc. Es sind keinerlei Markenrechtsverletzungen beabsichtigt.
 
Delicious Links
OpenSimulator
SL Locations (sloog)
SL Apps
SL GridStatus
This is NOT an offical website of Linden Reseach Inc. and NOT the official Second Life. Second Life and Linden Lab® are registered trademarks of Linden Research Inc. No infringement is intended.
 
Archives
Tutorials
MyBlogLog

[ # ] TechTalk SecondLive, erste LSL-Schritte
November 28th, 2006, 20:51 von Patrick unter LSL Tutorials, Technik

In diesem Beitrag möchte ich einige Möglichkeiten von der Linden Scripting Language (kurz LSL) zusammenfassen. Dazu stelle ich im Anhang auch mein erstes Mini-Tutorial für Secondlife als PDF zum Download bereit. In diesem, meinen ersten Secondlife-Techtalk möchte ich zeigen, wie einfach es ist, in Secondlife ein 3D-Objekt zu modellieren und es mit spezieller Funktionalität zu versehen. Modelliert wirdBlinkWand1 sozusagen "In-Game", d.h. in Secondlife selbst. Es gibt, soweit mir bekannt, keine Möglichkeiten, einen "Offline-3D-Modeller" zu verwenden oder gar Modelle zu importieren. Deshalb beziehen sich meine Ausführungen hier auf den "In-Game"-Modeller. Das Beispiel zeigt, wie man mit einfachen Mitteln ein kleine transparente Wand modellieren kann. Mittels LSL-Script habe ich meiner transparenten Wand folgende Funktionen hinzugefügt:

  1. Die Wand reagiert mit einem Text, wenn man sie berührt
  2. Die Wand blinkt alle 5 Sekunden in einer zufälligen Farbe
  3. Die Wand ist mit einem Sensor ausgestattet. Der Sensor ermittelt alle Avatare im näheren Umkreis und gibt die Namen der Avatare auf den Bildschirm aus.
  4. Ändert sich die Anzahl der sie umgebenden Avatare, spielt die Wand einen Sound ab

Modellierung

Create_Prim Modelliert wird in Secondlife mit sogenannten Primitives, geometrischen Grundfiguren. Dies sind primitive 3D-Objekte aus deren Kombination die gesamte 3D-Welt gebaut ist. Ein Rechtsklick in die Welt öffnet ein Control-Element mit den Optionen "Sit Here", "Go Here", "Edit Terrain", "About Land" und "Create". Wählt man "Create" aus, erscheint die Oberfläche mittels der man 3D-Objekte modellieren kann. Von hier aus kann man Objekte in Secondlife bauen und verändern. Mit dem Zauberstab-Symbol ("Create") kann man 3D-Objekte erzeugen. Unter der Symbolleiste sieht man die Prims, 15 Stück an der Zahl. SL_Modelltools Aus dem Screenshot ist ersichtlich, dass ich hier als Prim den Cubus gewählt habe. Wenn man nun mit der Maus in die 3D-Welt navigiert, erscheint das Zauberstab-Symbol. Ein Klick auf die linke Maustaste erzeugt an dieser Stelle in der Welt ein Prim mit einer Standardtextur. Der Modeller wechselt dadurch direkt in den "Edit-Mode", die Radio-Box steht auf Position. In der Abbildung sehen wir ein Cubus mit der gelben Standardtextur. Nun kann man den frisch erzeugten Cubus im Raum auf der X,Y und Z-Achse mit der Maus bewegen. Dies geschieht über die dafür vorgesehenen Pfeile am Objekt. Mit den roten Pfeilen bewegt man das Objekt entlang der X-Achse, mit den grünen Pfeil entlang der Y-Achse und mit den blauen Pfeilen entlang der Z-Achse. Prim Created Das Objekt lässt sich nun rotieren und in seinen Dimensionen verändern. Die erreicht man durch klicken auf die Radio-Buttons "Rotate" bzw. "Stretch" oder durch das Halten der Ctrl-Taste (Rotate) bzw. Ctrl+Shift-Taste (Stretch). Wand mit Textur Mit ein wenig Fingerfertigkeit wird aus einem Cubus also eine Wand. Fehlt also nur noch ein wenig Transparenz und das Entfernen der Standardtextur. Befindet man sich im Edit-Modus kann man die Registerkarte "Texture" wählen, rechts von "Features" und links von "Content".

Edit Texture 1 Mit einem Klick auf Color kann man die Grundfarbe des Prims verändern. Mit einem Klick auf Texture öffnet sich ein weiteres Fenster, in dem man die Standardtextur verändern kann. An dieser Stelle kann man eine 32x32 Pixel große Textur aus dem Inventory auf das 3D-Objekt legen. Für meine transparente "Zauberwand" habe ich mittels "Blank"-Button die Standardtextur entfernt, da ich ja eine transparente Wand haben möchte. An dieser Stelle möchte ich erwähnen das man zwischen zwei Arten von Inventories unterscheiden muss: (a) dem Inventory des Avatars und (b) dem Inventory des Prims. Darauf möchte ich allerdings später im LSL-Teil dieses Artikels noch einmal zurückkommen. Möchte man nämlich aus der Scriptsprache LSL, z.B. auf Texturen, Sounds etc. zugreifen, ist dies nur auf das Prim-Inventory möglich (!)







Edit Texture 2

Last but not Least, kann man noch die Transparenz des Objektes zwischen 0 und 100 wählen, unter Transparency im Edit-Mode. Dies könnt ihr im nächsten Screenshot sehen, eine magentafarbene "Zauberwand". Wand Transparent Im nächsten Schritt möchte ich diesem einfachen 3D-Objekt noch etwas Magie hinzufügen. Sie soll auf Berührung reagieren, in zufälligen Farben im Abstand von 5 Sekunden blinken und die Umgebung auf neugierige Avatare scannen. Und einen Sound abspielen, sobald sich ihr ein neuer Avatar nähert. All dies geht mit LSL, der Linden Scripting Language.

LSL-Programmierung

Als Voraussetzung, um in LSL programmieren zu können sind natürlich Programmierkentnisse aus anderen Sprachen von Vorteil. Wer sich also schon einmal in einer Hochsprache wie C/C++ oder Java bewegt hat, wird es relativ einfach haben. LSL ist allerdings keine Programmiersprache im Sinne der Objektorientierung mit Polymorphismus und Vererbung etc. Man sollte also nicht zuviel von LSL erwarten. Ein gutes Wiki zum Thema LSL habe ich hier gefunden. Weitere gute LSL-Beispiele habe ich unter http://www.kan-ed.org/second-life/using-LSL.html gefunden. Im Edit-Mode unter der Registerkarte "Content" ist das Prim-Inventory erreichbar. Script Screenshot An dieser Stelle ist es auch möglich, eigene LSL-Scripte zu schreiben, die an das 3D-Objekt gebunden sind. LSL ist dabei eventgesteuert. Es gibt zahlreiche Events, wie z.B. das touch_start-Event.
touch_start-Event
Nachfolgender Code wird ausgeführt, wenn der Prim mit der linken Maustaste angeklickt wird.
    touch_start(integer total_number)
    {
        float red1 = llFrand(1);
        float green1 = llFrand(1);
        float blue1 = llFrand(1);
        vector color1 = ;

        llSay(0, "angefasst." + (string)total_number);
                
        llSetText("die ist ein test", color1, 1.0);
        llSetTimerEvent(5);
    }
LSL-Script
Damit wir alle 5 Sekunden ein weiteres Stück Code ausführen können, habe ich mit der llSetTimerEvent()-Funktion den Timer gesetzt. Dieser Aufruf führt dazu, das alle 5 Sekunden die Funktion timer() aufgerufen wird.
timer()
Mein Timer berechnet alle 5 Sekunden einen neuen Farbvektor mit Zufallsfarbwerten und verändert die Farbe der Wand auf allen Seiten. Außerdem aktiviert mein Timer alle 5 Sekunden das Sensor-Objekt, welches im näheren Umkreis alle Avatare scannt. Dies geschieht über den Aufruf der Funktion llSensor().
    timer()
    {   
        float red = llFrand(1);
        float greed = llFrand(1);
        float blue = llFrand(1);
        vector color = ;
        llSetColor(color, ALL_SIDES);
        llSensor("", NULL_KEY, AGENT, 96, PI);
        llSay(0, "timer");
    }    
LSL-Script
Findet mein Sensor Avatare in er Nähe wird der Event-Handler sensor() (bzw. die Callback-Funktion) aufgerufen.
sensor()
Werden Avatare entdeckt, werden die Namen aller Avatare in einer Schleife mit der Funktion llDetectedName() ausgegeben. Wenn sich die Anzahl der Avatare zwischen zwei Senoraufrufen ändert, wird zusätzlich ein Sound abgespielt mit der Funktion llPlaySound().


    sensor(integer total_number)
    {
        if(total_number!=numOfDetectedObj)
        {
               llPlaySound("Soundtrack",1);
                numOfDetectedObj=total_number;
        }
        integer i =0;
        for(i=0; i<total_number; i++)
            {
                string s = llDetectedName(i);
                llSay(0,"something found by sensor = " + s);
            }
            
    }
LSL-Script
Die Funktion llPlaySound() erhält als ersten Parameter "Soundtrack". Hierbei handelt es sich um einen symbolischen Namen eines Audioobjektes, welches über das Prim-Inventory erreichbar sein muss. Man kann aus dem Avatar-Inventory Objekte in das Prim-Inventory via Drag & Drop ziehen. Das war es dieses Mal. Das Tutorial werde ich demnächst als PDF bereitstellen. Viel Spaß beim ausprobieren mit LSL.

Downloads


ScriptIcon Hier das komplette LSL-Script zum downloaden.
Tags: , , , , , , , , , , , , , , , , , , , , , , , , ,

Verwandte Artikel


Lese die Kommentare zu diesem Artikel

[ # 35 ] Kommentar von Omar [19. Dezember 2006, 19:14]

script funktioniert nicht, krieg nen syntax error

[ # 36 ] Kommentar von andreas.mertens [19. Dezember 2006, 21:35]

An welcher Stelle denn? Meist kommt ja noch eine Fehlermeldung oder der Cursor bleibt im Editor an der Stelle stehen, an dem das LSL-Script nicht kompiliert werden kann! Wichtig ist, das in deinem Prim-Inventory ein Sound mit dem Namen “Soundtrack” existiert !!!!

Beste Grüße,

Andreas alias Patrick Wunderland

[ # 116 ] Kommentar von Ricarda Wedhorn [21. Februar 2007, 17:39]

sehr schön beschrieben, bin begeistert, jetzt kapier sogar ich das :)

[ # 118 ] Kommentar von andreas.mertens [21. Februar 2007, 23:52]

Vielen Dank für die Blumen, das tut gut :-)

pW

[ # 201 ] Kommentar von Doro alias Morgana Jacobus [9. März 2007, 11:22]

Endlich mal eine Seite, bei der man auch was versteht und umsetzen kann :-) …. Ich hab aber noch eine Frage; bin neu im SL; wie bekomme ich Gegenstände in die Box hinein und sehe dann im Inhalt auch was drin ist??? Egal ich nun Schuhe oder eine Yacht verpacken will…. Jaja, Fragen über Fragen, aber das ist ja auch das interessante am SL. Liebe Grüße Doro alias Morgana :-) )))

[ # 204 ] Kommentar von andreas.mertens [9. März 2007, 19:07]

Ganz einfach. Per Drag & Drop vom Avatar-Inventory in das Prim-Inventory ziehen !!!

Grüße,

Andreas Patrick Wunderland Mertens

[ # 370 ] Kommentar von jonny [28. März 2007, 20:43]

cooooooooooooooooool man.

[ # 1628 ] Kommentar von Ludger Schultze [27. Mai 2007, 19:20]

Hallo Andreas
Interessant hier ,ist alles hochkomplex im Sl
Trotz einigermaßen Englischkenntniss ,war es noch nicht leicht dahinter zu kommen,wie das alles functioniert.Aber meine Frage :Gibt es auch ein Tutorial in Deutsch über die Scriptsprache.
Ich habe schon in Turbo Pascal programiert ,aber die syntax ist immer etwas anders
Oder wirst du sowas noch mal starten?
Gruß
Ludger

[ # 1656 ] Kommentar von Andreas Mertens [28. Mai 2007, 18:15]

Lieber Ludger,

ich kenne bisher kein englisch- bzw. deutschschprachiges gutes Tutorial, welches ich empfehlen könnte, dass LSL umfassend behandelt. Am besten finde ich persönlich das WIKI, welches wir verlinkt haben.

Gruss,

Andreas

[ # 3335 ] Kommentar von Klaus Meier [26. Juli 2007, 10:28]

Habe die deutsche Übersetzung zu dem von euch verlinktem Wiki gefunden:
http://wiki.slinfo.de/wakka.php?wakka=HomePage
Ist gut gemacht.

Gruß
Klaus

[ # 8025 ] Pingback von Second Life Talk » Second Life Programmierung [8. Februar 2008, 16:41]

[...] Erste Schritte, Sensor [...]

[ # 13769 ] Pingback von Neues Buch im Franzis Verlag | Second Life Talk [6. Mai 2008, 23:48]

[...] Erste Schritte, Sensor [...]

[ # 17589 ] Pingback von IT-Sicherheit im Spielesektor « IT-Sicherheit, IT-Recht, Datenschutz & Compliance [21. August 2008, 09:39]

[...] (Kurzeinführung in LSL und Modellierung von Objekten in SL) [...]

[ # 46535 ] Pingback von |X|  Second Life [9. September 2009, 20:52]

[...] LSL Wiki. 16. März 2007 (HTML, Abgerufen am 16.3). ↑ http://www.slinfo.de/wiki↑ http://www.avameo.de/index.php/2006/11/28/techtalk-secondlive-erste-lsl-schritte LSL Tutorial auf Avameo zu der Sensor-Funktionalität. 16. März 2007 (HTML, Abgerufen am [...]

Schreibe einen Kommentar





PowerSuche
Erweiterte Suche (beta)
RSS Feeds
Kommentare
 
Infoseiten/Blogs
Marktplätze
Englische Infoseiten
Tools/Produkte
Sonstiges
Tutorials
PDF-Zeitschriften
Foren
SL Metrics
Music
Web.3D
L$ Exchange
SL TV
OpenGrids
E-Learning
Kunst & Kultur
 
blogoscoop

Blog Top Liste - by TopBlogs.de scheduler calledtweetbackscheck