Kurz LSL skriptování. Shiny Iceberg 2009

Podobné dokumenty
Kurz LSL skriptování. Shiny Iceberg 2009

Kurz LSL skriptování. Shiny Iceberg 2009

Rámcový manuál pro práci s programem TopoL pro Windows

1 Naši truhláři = tradice i budoucnost, CZ.1.07/1.1.34/

Uživatelská příručka ClinkMe

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Aleš Najman [ÚLOHA 38 KONTROLA A POHONY]

Předmět: Konstrukční cvičení - modelování součástí ve 3D. Téma 4: Editace, vysunutí a rotace náčrtů

Průvodce aplikací FS Karta

LuxRiot uživatelský manuál verze Uživatelský manuál Verze , Stasa s.r.o.,pokorného 14, , PRAHA

Robotické architektury pro účely NDT svarových spojů komplexních potrubních systémů jaderných elektráren

Lekce 12 Animovaný náhled animace kamer

7. ODE a SIMULINK. Nejprve velmi jednoduchý příklad s numerických řešením. Řešme rovnici

PDF Split and Merge. Průvodce programem pro práci s PDF

ANOTACE vytvořených/inovovaných materiálů

BRICSCAD V13 X-Modelování

web:

Základní ovládání a práce s programem CorelDraw 11

Dotykova obrazovka v programu TRIFID

Popis úprav SQL verze ProBaze Majetek a Nářadí

Fyzikální vzdělávání. 1. ročník. Učební obor: Kuchař číšník Kadeřník. Implementace ICT do výuky č. CZ.1.07/1.1.02/ GG OP VK

Dokumentace ke knihovně InsDevice

Stav: červen TRACK-Guide

elan-rf-wi-003 Webové rozhraní / rev.3 Strana 1 z 15

Jak připravit žákům trenažer pro cvičení jednoduchých dovedností

Dotyková obrázovká v prográmu TRIFID

Na základě Business Targets autora Simona Greenalla, vydaných nakladatelstvím Macmillan Heinemann English Language Teaching (Oxford).

Kapitola 1: Úvodní strana PARTICLER

Obr. 1 - Seznam smluv

Ignijet_2007 Externí monitor

Návod k použití. Plně automatický horizontální laser FL 110 HA. S Li-Ion akumulátorem

GEZE TS 500 NV / TS 550 NV / TS 550 A VARIANTY PODLAHOVÉ ZAVÍRAČE PRO DVEŘE S DORAZEM A KYVNÉ DVEŘE BEWEGUNG MIT SYSTEM

Nástroj WebMaker TXV první vydání Únor 2009 změny vyhrazeny

Mobilní aplikace. Uživatelský manuál

Základní ovládání aplikace

Objektově orientované technologie Dynamický náhled Sekvenční diagram (Realizace UC) Daniela Szturcová

Návod k použití. Horizontální a vertikální laser se sklony ve 2 osách. FL 500HV-G FLG 500HV-G Green

SignEditor 1 - návod k použití

Bezdrátové routery LTE & UMTS datové a hlasové brány

RC-300. U ivatelská pøíruèka. Instalaèní firma: Servisní telefon: Datum Počet stran Číslo dokumentu 11/ PU-RC-3-01-C

Mechanika - kinematika

1. ESO9 MAJETEK ZÁKLADNÍ VLASTNOSTI DOPORUČENÝ HW... 3

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

elan-rf-003 Návod / rev.3 Strana 1 z 13

Fyzika I (mechanika a molekulová fyzika NOFY021)

Helios RED a Internetový obchod

Uživatelský návod fotorámeček Bluetech 10,2

Mobilní aplikace. Uživatelský manuál

Programujeme v softwaru Statistica - příklady

FLYSKY GT3B osmikanálová volantová RC souprava

Manuál k aplikaci WANAS

1. Změřte momenty setrvačnosti kvádru vzhledem k hlavním osám setrvačnosti.

OBSAH OBSAH ZÁKLADNÍ INFORMACE...3


Rychlost, zrychlení, tíhové zrychlení

Programovací stanice itnc 530

Návod k použití softwaru Solar Viewer 3D

Hip-Hop můžete ovládat pomocí osvětlovacího pultu či vhodného kontroléru pro světla, který připojíte pomocí DMX (XLR) kabelu.

Připojení systému A3600 k aplikaci DDS2000

Návod pro LG E430 Optimus L3 II

Digitální učební materiál

Úprava vytvořené statistické mapy s využitím aplikace Repaint Magic

ACASYS-KS Komunikace v systému ACASYS

Excel tabulkový procesor

Jestliže vše proběhlo tak, jak mělo, měl by výsledný materiál vypadat nějak takto:

M I S Y S - W E B. Intranet řešení systému MISYS. Verze Příručka uživatele

Dotyková obrázovká v prográmu TRIFID

Robotický stolní fotbal

Uživatelský manuál. Format Convert V3.1

A U T O R : I N G. J A N N O Ž I Č K A S O Š A S O U Č E S K Á L Í P A V Y _ 3 2 _ I N O V A C E _ _ C N C V Z T A Ž N É A O B R Y S O V É B

Shodnostní Helmertova transformace

Stejnou věc můžete udělat naráz v jednom příkazu. Ikonku animovaného předmětu pak stačí použít jen jednou na začátku řádku.

Algoritmizace a programování

V praxi je běžné, že se ovlivňuje více prvků navzájem. Tady už si s jednou globální proměnnou nevystačíme.

Hodinky s GPS lokátorem TK-109 Návod k obsluze

MQL4 COURSE. By Coders guru -4 Operace & Výrazy

Program pro flexibilní tvorbu evidencí. VIKLAN - Evidence. Uživatelská příručka. pro seznámení se základními možnostmi programu

Ovládání TV platformy a funkce Chytrá TV. RETE tv

Tvorba prezentaci v Autodesk Inventoru 10

NÁVOD K POUŽITÍ Dělený klimatizační systém

CS OTE. Dokumentace pro externí uživatele

MANUÁL MOBILNÍ APLIKACE GOLEM PRO OPERAČNÍ SYSTÉM ANDROID 4.X A VYŠŠÍ

AEP20PIL. Součásti kompletní instalace

Zóny a pravidla UŽIVATELSKÁ PŘÍRUČKA

SCHÉMA aplikace ObčanServer 2 MENU aplikace Mapové kompozice

Transformace (v OpenGL) příklady a knihovna GLM

Nastavení TS Leica TC403 pro měření situace registrace měřených dat

Rovinné přetvoření. Posunutí (translace) TEORIE K M2A+ULA

Rozdílová dokumentace k ovládání IS KARAT.net

Scribus. Vypracovali : Hana Bartošová Tomáš Dvořáček

ANDROID - strabismus

Úvod do počítačových sítí

1. Uživatelské rozhraní

V této příloze je podrobně popsána struktura XML dokumentu s mapou (viz kapitolu 5.3), příklad tohoto XML dokumentu je na přiloženém CD v souboru

Tabulkové processory MS Excel (OpenOffice Calc)

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

UŽIVATELSKÝ NÁVOD. Monitor SZENA PLUS

Komerční výrobky pro kvantovou kryptografii

Prostředí Microstationu a jeho nastavení. Nastavení výkresu

Pohyb tělesa (5. část)

KINEMATIKA HMOTNÉHO BODU. Mgr. Jan Ptáčník - GJVJ - Fyzika - Mechanika - 1. ročník

Transkript:

Kurz LSL skriptování Shiny Iceberg 2009

2 2 Kurz LSL skriptování Shiny Iceberg v Second Life od roku 2006 shiny.iceberg@virtualmagazine.cz Aktuální projekty virtualmagazine.cz Urbanica, Shinyland Bwindi Orphans cyklus Nejsme jelita

3 Organizační body Průběh lekce bude trvat zhruba 90-120 minut pokud nekladete dotazy, vypněte si mikrofon příklady si klidně zkoušejte přímo v hledišti Vaše otázky můžete se ptát na konci každého snímku nebo na konci celé přednášky dotazy mohou být přes voice nebo IM při psaní IM z posledních řad použijte Shout

4 To nejdůležitější z minula llgetkey / llgetowner llgetobjectname / llgetobjectdesc llsetobjectname / llsetobjectdesc llgetscale / llsetscale llgetalpha / llsetalpha llgetcolor / llsetcolor llgettexture / llsettexture llsettext / llsetsittext / llsettouchtext llsetprimitiveparams

5 Plán přednášky 1. Fungování a struktura skriptu 2. Z čeho se skládá skript 3. Vlastnosti objektu 4. Pohyb objektu 5. Pose bally 6. Komunikace skriptu 7. Inventory objektu 8. Detektory 9. Particles 10.Příklady a dokumentace

6 Hmotné a nehmotné objekty Objekty s příznakem PHYSICAL se chovají podle fyzikálních zákonů (hmotnost v lindogramech, síla, zrychlení), chování těchto objěktů řídí systém zvaný Havoc Objekty bez toho příznaku se chovají jako nehmotné objekty - nepůsobí na ně gravitace, mohou se prolínat atd. Každá kategorie objektů potřebuje jiné funkce pro pohyb a rotaci Speciálním případem PHYSICAL objektů jsou vozidla http://lslwiki.net/lslwiki/wakka.php?wakka=vehicles

7 Úvod k probíraným funkcím V každé lekci probereme jen vybrané funkce, kompletní seznam na LSL wiki je mnohem obsáhlejší http://www.lslwiki.net/lslwiki/ Až na předem řečené výjimky mohou být všechny příklady testovány na základní rezznuté kostce

8 2 Seznam probíraných funkcí llgetstatus / llsetstatus llgetpos / llgetlocalpos / llgetrootposition llsetpos llgetrot / llgetlocalrot / llgetrootrotation llsetrot llsetprimitiveparams lltargetomega llrot2up / llrot2fwd / llrot2left llgetmass / llgetvel llgetforce / llsetforce llapplyimpulse

9 Variable vector jde o tři čísla typu float spojené dohromady ve tvaru < x, y, z > a tato trojice umožňuje vyjádřit například polohu, rychlost, barvu, měřítko atd. pomocí tečkové notace mohu měnit jednotlivé složky vektoru, viz příklad

10 Variable rotation rotace není v LSL vyjádřena pomocí klasického otočení podle os X, Y a Z, ale pomocí takzvaných kvaternionů - tvoří ji 4 hodnoty <X, Y, Z, S> naštěstí lze klasickou XYZ rotaci jednoduše převádět na a z kvaternionů pomocí dvou funkcí lleuler2rot a llrot2euler

11 Převod rotation na stupně kvaterniony radiány stupně

12 integer llgetstatus(integer flag); VSTUP: typ vlastnosti, u které se zjišťuje status, pro zjištění vlastnosti PHYSICAL se použije konstanta STATUS_PHYSICS VÝSTUP: TRUE (1) nebo FALSE (0)

13 llsetstatus(integer flag, integer AnoNe); VSTUP: flag: typ vlastnosti, u které se nastavuje status, pro nastavení vlastnosti PHYSICAL se použije konstanta STATUS_PHYSICS AnoNe: TRUE (1) nebo FALSE (0) VÝSTUP: nic

14 vector llgetpos(); VSTUP: nic VÝSTUP: souřadnice aktuální polohy primu POZNÁMKA: pokud se funkce volá z child primu, vrátí souřadnice child primu (nikoliv root primu) a v absolutních souřadnicích regionu (nikoliv relativně k root primu) pokud se volá z root primu attachmentu, vrátí polohu avatara

15 vector llgetlocalpos(); VSTUP: nic VÝSTUP: souřadnice relativní polohy child primu vůči root primu, při použití v root primu funguje stejně jako llgetpos vector llgetrootposition(); VSTUP: nic VÝSTUP: absolutní souřadnice root primu

16 llsetpos(vector Pozice); VSTUP: nové souřadnice objektu VÝSTUP: nic POZNÁMKA: pokud se volá z root primu, jsou souřadnice chápány jako absolutní tj. vzhledem k regionu, pokud se funkce volá z child primu, jsou souřadnic brány jako relativní tj. vzhledem k root primu funkce nedokáže přesunout objekt pod zem, výše než 4096 metrů a maximální délka posunu je 10 metrů, naopak lze posunout objekt do sousedního regionu používat jen na non-physical objekty

17 2 Příklad na multi-posun objektu

18 Eventy spojené s pohybem moving_start aktivuje se v okamžiku, kdy se objekt začne pohybovat anebo při vstupu do nového simu moving_end aktivuje se v okamžiku, kdy se objekt přestane pohybovat anebo při opuštění simu

19 Eventy spojené s pohybem - příklad Přesun objektu v Edit módu tyto eventy neaktivuje, proto je vhodné testovat příklad na PHYSICAL objektu.

20 rotation llgetrot(); VSTUP: nic VÝSTUP: aktuální absolutní rotace primu POZNÁMKA: pokud se funkce volá z child primu, vrátí rotaci child primu (nikoliv root primu) a v absolutních osách regionu (nikoliv relativně k root primu) pokud se volá z root primu attachmentu, vrátí rotaci avatara

21 rotation llgetlocalrot(); VSTUP: nic VÝSTUP: relativní rotace child primu vůči root primu, při použití v root primu funguje stejně jako llgetrot rotation llgetrootrotation(); VSTUP: nic VÝSTUP: vrací absolutní rotaci root primu

22 llsetrot(rotation Rotace); VSTUP: nová rotace celého objektu vůči osám regionu VÝSTUP: nic llsetlocalrot(rotation Rotace); VSTUP: nová rotace child primu vůči root primu VÝSTUP: nic POZNÁMKA: LSLwiki stránky popisují do detailu celou problematiku rotace u linksetů a attachmentů

23 llsetprimitiveparams komplexní funkce, která umožňuje nastavit veškeré vlastnosti primu umožňuje nastavit několik parametrů najednou, např. rotaci a polohu v jednom kroku funkce samotná je jednoduchá, komplikované jsou vstupní parametry, viz http://lslwiki.net/lslwiki/wakka.php?wakka=llsetprimitiveparams dnes probereme pouze část parametrů, které se týkají dříve probíraných vlastností

24 llsetprimitiveparams(list parametry); VSTUP: neuspořádaný seznam požadovaných parametrů, vždy ve tvaru - konstanta označující druh změny - parametry pro daný druh změny VÝSTUP: nic

25 Konstanty pro llsetprimitiveparams PRIM_PHYSICS integer ano_ne Poznámka: ano_ne může být 0 nebo 1, resp. FALSE nebo TRUE PRIM_POSITION vector souradnice PRIM_ROTATION rotation rotace

26 lltargetomega (vector osa, float rychlost, float sila); VSTUP: osa: vektor osy, podle které bude objekt rotovat rychlost: v radiánech za vteřinu (360 ~ 6.28 rad) sila: síla rotace, má smysl jen pro PHYSICAL objekty, ale musí být nenulová i pro non-physical VÝSTUP: nic

2 llsettargetomega - poznámky pro PHYSICAL objekty jde o plynulou server-side rotaci, ale současná implementace nefunguje vždy dobře funkce je naopak široce použitelná pro non-physical objekty, kdy běží client-side (nezatěžuje sim), ale je potřeba počítat s několika fakty: rotace je jen vizuální, nikoliv skutečná - objekt nemění svou skutečnou rotaci, sice ukazuje v edit menu, ale llgetrot neukáže změny rotace se u každého avatara zobrazuje jinak při editaci se rotace objektu vizuálně zresetuje rotace se zastaví zavoláním lltargetomega(zero_vector, 0, 0); 27

28 vector llrot2up (rotation rotace); vector llrot2fwd (rotation rotace); vector llrot2left (rotation rotace); 1 2 3 VSTUP: aktuální rotace objektu, u kterého chceme zjistit, jaký je vektor lokálního směru nahoru, vpřed a vlevo 1 2 3 VÝSTUP: vektor žádaného směru, např. pro použití s lltargetomega POZNÁMKA: funkce se používají na zajištění stejné rotace bez ohledu na natočení objektu

29 float llgetmass(); VSTUP: nic VÝSTUP: vrací hmotnost objektu v lindogramech, hodnotu, která se používá v PHYSICAL funkcích POZNÁMKA: při volání z child primu vrátí hmotnost child primu, při volání z rootu vrátí celkovou hmotnost linksetu pokud se volá z attachmentu, vrátí hmotnost avatara

30 llsetforce(vector sila, integer lokalni); VSTUP: sila: vektor síly, tato síla bude působit na objekt kontinuálně lokalni: pokud je 1 (TRUE), bude vektor síly vztažen k lokálním souřadnicím objektu, pokud 0 (FALSE), vztahuje se k souřadnicím regionu

31 vector llgetforce(); VSTUP: nic VÝSTUP: vektor aktuální síly působící na objekt vector llgetvel(); VSTUP: nic VÝSTUP: vektor aktuálního směru a rychlosti pohybu objektu

32 llapplyimpulse(vector sila, integer lokal); VSTUP: sila: vektor síly, tato síla bude působit na objekt jednorázově lokal: pokud je 1 (TRUE), bude vektor síly vztažen k lokálním souřadnicím objektu, pokud 0 (FALSE), vztahuje se k souřadnicím regionu

33 2 Příklad: Teleport pomocí Warp SL nemá funkci na skutečný přesun avatara na jiné místo, v rámci regionu lze však toto simulovat několika alternativami alternativa Warp pracuje na principu 1) avatar se posadí na objekt 2) objekt se přemístí na cílovou lokaci 3) avatar automaticky opustí objekt 4) objekt se vrátí na původní lokaci

Zdrojový kód 1/2: Teleport 34

35 2 Zdrojový kód 2/2: Teleport

36 2 Příklad: Dveře Dveře detekují kliknutí a otevřou se, při dalším kliknutí nebo uplynutí určité doby se zavřou Dveře využívají rotace kolem osy Z root primu, jsou tedy tři základní metody, jak dveře vyrobit: kvádr o rozměrech např. 3 x 0.1 x 3 metru a nastavit Path cut na B: 0.125, E: 0.625 libovolný linkset, root prim bude např. úzký válec na straně dveří hotové sculpted dveře s osou na kraji

Příklad: Dveře ilustrace - výroba dveří 37

Zdrojový kód 1/2: Dvere 38

39 2 Zdrojový kód 2/2: Dvere

Otázky a diskuze 40