MOTION PLANNING IN REAL AND VIRTUAL ENVIRONMENTSFALL 2007
Second Life: Second Life: IntroductionIntroduction
Russell GayleComp 790-058 – Robot Motion Planning
Fall 2007
September 24, 2007
04/19/23 1
SL OVERVIEW
THE GRID
SIMULATORS
AVATARS
PRIMITIVES
SCRIPTING (LSL)
LIVE DEMO
INTRO: SL BOTS
What is Second Life?
• The Grid: The hardware behind the SL Metaverse
SL OVERVIEW
THE GRID
SIMULATORS
AVATARS
PRIMITIVES
SCRIPTING (LSL)
LIVE DEMO
INTRO: SL BOTS
What is Second Life?
• The Grid is organized into Simulators » Single server instances
Simulators
Isle 2 Isle 3
Isle 6Isle 5Isle 4
Isle 1
Connecting to Isle 1
Side connections to adjacent simulators
SL OVERVIEW
THE GRID
SIMULATORS
AVATARS
PRIMITIVES
SCRIPTING (LSL)
LIVE DEMO
INTRO: SL BOTS
What is Second Life?
• Simulators are where the real work happens» Each simulator is responsible for its avatars
Isle 1
Communications (chat/IM)Physical State, Collisions
InventoryAnimationsSL Identifier
SL OVERVIEW
THE GRID
SIMULATORS
AVATARS
PRIMITIVES
SCRIPTING (LSL)
LIVE DEMO
INTRO: SL BOTS
What is Second Life?
• Simulators are where the real work happens» Each simulator stores and distributes its prims
Isle 1
TransformationsTexturesPhysics
Embedded items
SL OVERVIEW
THE GRID
SIMULATORS
AVATARS
PRIMITIVES
SCRIPTING (LSL)
LIVE DEMO
INTRO: SL BOTS
What is Second Life?
• Primitives can hold any type of object» Primitives, scripts, animations, sounds, etc
• LSL makes the world interactive» Embedded into prims
LSL ScriptsChange primitive appearanceInteract with other primitives
Interact with avatarsPhysics
Query remote resourcesMany more!
SL OVERVIEW
THE GRID
SIMULATORS
AVATARS
PRIMITIVES
SCRIPTING (LSL)
LIVE DEMO
INTRO: SL BOTS
What’s missing?What’s missing?
• Important features of SL that we will not cover» Economy
• Linden Dollars• Content creation • and IP rights• Land ownership
» In world attractions• Virtual sightseeing• “Live” music
04/19/23 7
SL OVERVIEW
THE GRID
SIMULATORS
AVATARS
PRIMITIVES
SCRIPTING (LSL)
LIVE DEMO
INTRO: SL BOTS
The Grid
• Collectively can be considered “The World”» A large array of Debian servers
• Each server can support several simulations
» Centralized network topology• All communications goes through the Grid
» Beta Grid: A test bed for upcoming technologies
SL OVERVIEW
THE GRID
SIMULATORS
AVATARS
PRIMITIVES
SCRIPTING (LSL)
LIVE DEMO
INTRO: SL BOTS
Simulators
• Also referred to as a Region» e.g. Natoma, UNC CH I, UNC CH II
• Typically has a dedicated CPU• Each region is 256 m by 256 m
» Larger islands are made by connecting several regions
• Responsibilities» Geometry / Prims
» Avatars
» Local messaging (whisper, say, shout)
» Voice-chat
» Client-server networking
SL OVERVIEW
THE GRID
SIMULATORS
AVATARS
PRIMITIVES
SCRIPTING (LSL)
LIVE DEMO
INTRO: SL BOTS
SimulatorsSimulators
• SLUIDs» Every object (prims, avatars, animations,
audio, etc) has a (global) SL Unique ID number
» Each simulator also has local references to avatars and primitives
• Multi-simulator islands» In reality, connected to multiple island
simultaneously in case you cross borders
» Note: You may need to keep track of this in your work!
04/19/23 10
SL OVERVIEW
THE GRID
SIMULATORS
AVATARS
PRIMITIVES
SCRIPTING (LSL)
LIVE DEMO
INTRO: SL BOTS
Avatars
• Your virtual representation (or your bot’s)» Stored in a central database
• Important features» Appearance
• How you look
(height, clothing, etc)
» Inventory• What you can use
and what you can DO
• Local animations
• Local sounds
• Other primitives or scripts
» Communication» State and Motion
• Position, orientation, velocity, colliding, physics, etc
SL OVERVIEW
THE GRID
SIMULATORS
AVATARS
PRIMITIVES
SCRIPTING (LSL)
LIVE DEMO
INTRO: SL BOTS
Avatars: What they can doAvatars: What they can do
• Create primitives• Interact with (touch) primitives
» This often activates scripts
• Attach prims to themselves• Chat (whisper, say, shout)
» This can also activate scripts
• Navigate » Ground-based (walk, run)
» Air-based (fly) • Predefined animations
» Instant navigation (teleportation) • You may not always end up where you expect!
04/19/23 12
SL OVERVIEW
THE GRID
SIMULATORS
AVATARS
PRIMITIVES
SCRIPTING (LSL)
LIVE DEMO
INTRO: SL BOTS
Avatars: LimitationsAvatars: Limitations
• Precision» Not easy to reach a specific location
» Occasionally collisions are missed
• Bandwidth» Not always enough to update all objects
» May cause missed collisions or stalled motion
04/19/23 13
SL OVERVIEW
THE GRID
SIMULATORS
AVATARS
PRIMITIVES
SCRIPTING (LSL)
LIVE DEMO
INTRO: SL BOTS
Primitives
• Belongs to a Region (simulator)• 7 base types
» Box, cylinder, prism, sphere, torus, tube, ring
» All items built by transformations of these
• 1 special type» Sculpted prim
• Prim whose shape is determined by a “Sculpt Texture”
SL OVERVIEW
THE GRID
SIMULATORS
AVATARS
PRIMITIVES
SCRIPTING (LSL)
LIVE DEMO
INTRO: SL BOTS
PrimitivesPrimitives
• Seven base material types» Stone, metal, glass, wood, flesh, plastic,
rubber
• Has several other state parameters» Physical
» Flexible (automatically non-physical)
» Texture
» Color
» Bumpiness
» Lighting
» Transparency
04/19/23 15
SL OVERVIEW
THE GRID
SIMULATORS
AVATARS
PRIMITIVES
SCRIPTING (LSL)
LIVE DEMO
INTRO: SL BOTS
Linden Script Language (LSL)
• Embedded in a prim (or a group of prims)» Not in avatars
» Each prim in a group can have a script
» Scripts between linked prims are faster
» All scripts in a prim are run
• Similar to C or Java • But with an emphasis on states and events
» Events trigger behaviors (functions)
» Can also cause a change of state
• And now for a crash course in LSL!
SL OVERVIEW
THE GRID
SIMULATORS
AVATARS
PRIMITIVES
SCRIPTING (LSL)
LIVE DEMO
INTRO: SL BOTS
LSL: Getting StartedLSL: Getting Started
• Creating a script1. Open the prim “Create” menu
2. Select a prim
3. Find the contents of the prim
4. Select “Create a new script”
• The default script
04/19/23 17
default {
state_entry() {
llSay(0, "Hello, Avatar!"); }
touch_start(integer total_number) {
llSay(0, "Touched."); }
}
SL OVERVIEW
THE GRID
SIMULATORS
AVATARS
PRIMITIVES
SCRIPTING (LSL)
LIVE DEMO
INTRO: SL BOTS
LSL: StatesLSL: States
• State is used to determine which “behavior” should be used
04/19/23 18
default //default state is mandatory {
state_entry() {
llSay(0, "turning on!"); llSetColor(<1.0, 1.0, 1.0>, ALL_SIDES);
}
touch_start(integer total_number) {
state off;}
}
state off {
state_entry() {
llSay(0, "turning off!"); llSetColor(<0.0, 0.0, 0.0>, ALL_SIDES);
}
touch_start(integer total_number) {
state default; }
}
Triggers a change of state
A new state
SL OVERVIEW
THE GRID
SIMULATORS
AVATARS
PRIMITIVES
SCRIPTING (LSL)
LIVE DEMO
INTRO: SL BOTS
LSL: EventsLSL: Events
• We’ve seen two events» state_entry - When a state is activated
» touch_start – When an object is touched
• A few others which may be usefulat_target – when a prim reaches its target
collision – when a prim collides
http_response – response to http request (used when working with remote resources)
sensor – when a sensor call returns something
» Note: Sensors are useful for tracking and following
Documentation: http://wiki.secondlife.com/wiki/LSL_Portal
04/19/23 19
SL OVERVIEW
THE GRID
SIMULATORS
AVATARS
PRIMITIVES
SCRIPTING (LSL)
LIVE DEMO
INTRO: SL BOTS
Live Demo!Live Demo!
• Overview of the main features in Second Life
04/19/23 20
SL OVERVIEW
THE GRID
SIMULATORS
AVATARS
PRIMITIVES
SCRIPTING (LSL)
LIVE DEMO
INTRO: SL BOTS
Introduction: Robots in SL
• Two varieties» LSL (primitives)
» Simulated network traffic (avatars)
• Tradeoffs» LSL is stored and run on the simulator (server-
side) • Only works with prims
» Network traffic is subject to missed packets and limited by client performance
• Note» Both can access remote utilities!
SL OVERVIEW
THE GRID
SIMULATORS
AVATARS
PRIMITIVES
SCRIPTING (LSL)
LIVE DEMO
INTRO: SL BOTS
LIBSecondLifeLIBSecondLife
• http://www.libsecondlife.org• Reverse engineering of SL network protocol
» Inspect, insert, or remove packets from the client
» Create your own client• We will control an autonomous avatar this way
• More of this next time
04/19/23 22