 |
 |
|
Overview |
 |
|
GCE |
 |
 |
Home |
 |
 |
Instructions |
 |
 |
User comments |
 |
 |
Links |
 |
 |
Version 2 |
 |
 |
|
FractalNet |
 |
|
PSD (Second Life) |
 |
|
Marble Challenge |
 |
|
ASCIIroids |
 |
|
Gravity Bubbles |
 |
|
EcoSim |
 |
|
Cosmic Dust |
 |
|
LandMesh |
 |
|
Imagencrypter |
 |
|
TrainMapper |
 |
|
Foxy Detector |
 |
|
MacDiff |
 |
|
Asteroid Belt |
 |
|
Matrix Attack |
 |
|
Solar Swarm |
 |
|
Tools |
 |
|
Names :-) |
|
 |
 |
 |
 |
 |
Particle System Designer (Second Life) |
 |
My avatar standing next to my Particle System Designer in Second Life
For a few weeks at the beginning of 2007, I was a regular participant in the virtual world of Second
Life. While I was there, I learnt the basics of LSL, the scripting language used to control and
interact with objects in Second Life.
Amongst other features of the virtual world, an object can be given a particle system to create animated
visual effects that look like smoke, steam, dust, explosions, flames, sparks, fountains, lasers, and many other things. These particle systems are quite difficult to design
unassisted (they are created with a rather complex llParticleSystem() function call), so I decided to build myself
a virtual machine to provide assistance.
My Particle System Designer (PSD) consists of around 2,400 lines of LSL code, 49 prims (primitive construction objects,
such as spheres and cylinders) and some high-resolution textures (created in Adobe Photoshop and uploaded into Second
Life). It’s operated by “touching” the buttons on the front of the machine, and typing in numeric values when necessary. The different parameters of the
particle system are grouped into five categories for clarity (pattern, appearance, creation, behaviour and target), and the buttons change colour to indicate which parameters are active, inactive
and selected.
I created a few demonstration particle systems which are included with the PSD, and are activated by touching the LOAD DEMO button:
 |
 |
 |
 |
| Arch |
 |
Fusion |
 |
 |
 |
 |
 |
| Magnetic Photons |
 |
Star Cluster |
 |
 |
 |
| Twinkling Sphere |
Once a user has designed a particle system, touching the GENERATE button will output the necessary LSL code, which the user can copy & paste to use in their own
objects. Comprehensive help is available by touching the HELP button.
As well as being able to adjust every parameter of the particle system, the PSD also features a rotating arm, which is activated by touching the ROTATE button. This
is useful for designing particle systems which leave a trail of particles behind as the emitting object moves through space. The screenshot below illustrates the rotating arm in
motion, and the particles are being attracted to the sphere on the opposite pole (this has been selected as the “target” object):
 |
 |
| Magnetic Photons demo, with rotation and target |
Note: I don’t use my real name within Second Life, which is why you’ll see my avatar’s name on the PSD instead.
Video
This demo video shows the PSD in action within Second Life. It shows the built-in demo particle systems, and then shows how to change the various parameters (including Pattern,
Angle Begin, Angle End, Burst Part Count, Start Scale, Follow Velocity, Burst Radius, Target Pos, Interp Color and Part Max Age) to design your own particle system.
Script design
The following diagram illustrates how the various LSL scripts in the machine interact with each other:

Drawn using OmniGraffle, a very cool program for drawing diagrams :-) |
The scripts communicate using llMessageLinked(), and each script and prim has a unique ID number to identify it. To
pass particle system data between scripts, I modified this example list conversion code.
Feedback is provided to the user via instant messages (IMs) sent using llInstantMessage(). Normally, only one
message can be sent every 2 seconds (this is an LSL restriction), but by having 8 separate IM scripts controlled by an IM manager, the overall delay time between IMs can be reduced by a factor
of 8 (ie. 0.25 seconds between IMs).
The PSD comes with a notecard containing the following help and instructions.
What is this Particle System Designer?
In Second Life, you can use particle systems to create visual effects that look like smoke, steam, dust, explosions, flames, sparks, fountains,
lasers, stars, and many other things. The Particle System Designer (PSD) is a machine to help you design your own particle systems. It’s also a fun toy to play
with
I don’t know anything about particles! Where can I learn?
You can probably learn quite a lot about how particles work by simply playing with the PSD, but to get a good understanding of them, try
visiting the Particle Laboratory. It’s a really fun interactive museum with loads of
exhibits, and it does a great job of explaining and illustrating how particles work. Check it out!
How do I use this machine?
Firstly, make sure you’re not set to Busy mode. (If you are, the PSD won’t be able to communicate with you!) Touch the buttons on the base of the
PSD to change the various settings. If you want to change one of the numeric settings, you’ll be asked to enter a new value using Chat. The PSD has many
demonstration particle systems built in. To load one, simply touch the LOAD DEMO button and choose one from the list.
Why do the buttons change colours?
To show you which settings are enabled or unavailable. In general:
| Blue |
Active / enabled |
| Red |
Unavailable / disabled |
| Green |
Currently waiting for you to supply some input using Chat, if you wish to |
What do the “Pattern” settings do?
These specify the pattern in which new particles are emitted.
| Drop |
Particles are created at the emitter with no initial speed |
| Explode |
Particles explode in all directions |
| Angle |
Particles are emitted in a 2D (flat) fan-shaped spray, which can be partially hollow |
| Angle Cone |
Particles are emitted in a 3D cone, which can be partially hollow |
| Angle Cone Empty |
Second Life doesn’t display this one properly at the moment  |
| Angle Begin |
The starting angle for the “Angle” patterns, measured downwards from “straight up” |
| Angle End |
The ending angle for the “Angle” patterns, measured downwards from “straight up” |
What do the “Appearance” settings do?
These affect what the particles look like.
| Texture |
The UUID key of the texture to be used by the particles |
| Start Color |
The colour of the particles when they’re first created |
| Start Alpha |
The transparency of the particles when they’re first created |
| Interp Color |
Should particles change their colour and transparency during their lifetime? |
| End Color |
The colour of the particles just before they die |
| End Alpha |
The transparency of the particles just before they die |
| Start Scale |
The size of the particles when they’re first created |
| Interp Scale |
Should particles change their size during their lifetime? |
| End Scale |
The size of the particles just before they die |
| Emissive |
Should the particles be self-lit (“full bright”), or should they only reflect light? |
| Follow Velocity |
Should the particles rotate to point in the direction they’re travelling? |
What do the “Creation” settings do?
These affect the way in which new particles are created.
| Src Max Age |
The duration for new particles to be emitted (in seconds) |
| Burst Rate |
The delay between each “burst” of particles (in seconds) |
| Burst Part Count |
The number of particles to create in each “burst” |
| Burst Radius |
The distance at which particles are created, measured from the centre of the emitter |
| Burst Speed Min |
The minimum speed at which particles are emitted |
| Burst Speed Max |
The maximum speed at which particles are emitted |
| Omega |
The amount to rotate the particle emitter in-between each “burst” |
What do the “Behaviour” settings do?
These affect the way in which particles behave after they’ve been created.
| Part Max Age |
The lifetime of each particle (in seconds) |
| Accel |
The constant acceleration applied to each particle throughout its life |
| Follow Src |
If the particle emitter moves, should the particles move too? |
| Bounce |
Should particles bounce if they fall to the same height as the particle emitter? |
| Wind |
Should the particles be affected by the wind in the sim? |
What do the “Target” settings do?
These control whether the particles “home in” on a specific target object.
| Target Pos |
Should the particles gradually “home in” on a target object? |
| Target Linear |
Should the particles move smoothly to the target object in a straight line? |
| Emitter |
Use the particle emitter as the target object |
| Other Sphere |
Use the glass sphere on the right-hand pole as the target object |
What’s the ROTATE button for?
This makes the particle emitter rotate in a circle. This is useful for seeing the effect of the Follow Src setting, or the Drop pattern. It can also be helpful
if you’re designing a particle system which uses a target object. Unfortunately, the rotation isn’t very smooth (because Second Life doesn’t allow
hierarchies of linked prims, so I can’t make a subset of prims rotate smoothly with llTargetOmega). Sorry about
that
I’ve designed a nice particle system - how can I use it in my own objects?
Simply touch the GENERATE button, and you’ll see several lines of Chat appear. This is the LSL script to generate your particle system. Open the Chat History
window, and copy all the lines from llParticleSystem([ to ]);. You can now paste this into a
script in one of your objects. You’ll need to delete PSD: from the beginning of each line (and the Chat timestamp too,
if you’ve got this switched on in your SL preferences). It would be better if the PSD could generate a Notecard containing the required LSL script, but unfortunately
Second Life doesn’t allow this
Anything else I need to know?
• Whenever the PSD outputs some Chat (eg. when you touch the GENERATE button), this is actually a form of private Instant Messaging, and no-one except yourself can hear it.
• Whenever you supply an input to the PSD using Chat, this is normal public Chat and everyone nearby can hear it.
• If the PSD doesn’t seem to be behaving correctly (eg. taking a long time to react to your input), you can completely reset it, by touching the main glass sphere
which emits the particles (on the end of the rotating arm).
Version 1.0 – Released Feb 2007
All object textures, design and scripts © 2007 Michael Hogg
Except the freely available Particle Laboratory demo particle systems, created by Jopsy Pendragon
Nearby Avatar Detector
Another
of my Second Life machines is my Nearby Avatar Detector (NAD) – a small wooden “pebble” containing a short LSL script, which can be attached to a
user’s HUD. Touching the NAD will cause it to scan the local area for other people (avatars),
and list them in order of distance away from the user (closest first). In addition, it will automatically report the nearest person every 2 minutes.
The screenshot below shows a sample output produced when the NAD is touched:

The NAD uses llSensor() to scan for avatars within a radius of 96m (the maximum radius
possible). llDetectedName()
and llDetectedPos() are then used to determine the name and relative position of each detected
avatar. llGetRot() is used to calculate the direction of each avatar relative to the
user (for example, 16° right, or 34° left). llGetAgentInfo() obtains more information
about each avatar’s state, including: Away, Busy, Fly, In air, Crouch, Sit, Walk, Always run, Typing, Mouselook,
On object, Atts (attachments) and LSL atts (scripted attachments).
Since I no longer enter Second Life very often, and I wouldn’t expect to make much real-world profit from my PSD and NAD, I’m making them freely
available to all Second Life users. If you would like a copy of either machine, please contact me, and I’ll meet you inside Second Life!
However, donations are always very gratefully received, since I have spent countless hours of my spare time designing and testing my virtual machines. If you would like to donate,
then please click on the PayPal button below, and choose the amount to donate:
Many thanks in advance.
Wayha Skytower 3 Jan 2009 United States |
I am very interested in the particle system, I been messing with particles without much sucess, been wanting to make a fountian with spray out of particles, please help. |
Michael Hogg 3 Jan 2009 |
Hi Wayha! I've just sent you a copy of my Particle System Designer, hope you find it helpful. |
Wolfy Tobias 24 Feb 2009 United States |
I, like Wayha, am very interested in both of these. Actually wondering if I could get them as well please? Ever think about setting up an SLX account and distributing them that way? I looked and didn't see this on there, but would love both of these if you still are offering. Thank you so much. |
Braless Bracken 26 Feb 2009 United Kingdom |
Hi Michael, any chance you could send me a copy of your particle system designer? It'd be much appreciated, thanks! :-) |
Michael Hogg 1 Mar 2009 |
Hey Wolfy and Braless! I've now sent you the machine(s) you requested - enjoy! |
Ewer Short 12 Mar 2009 Canada |
Hi, Michael. I would love to have a copy of the PSD. Particles have always baffled me, so any opportunity to learn from what you have done here would be so nice. Thank you muchly if you can :)) IM me online or email me at ewershort@live.ca |
Ewer Short 15 Mar 2009 Canada |
Hi, Michael!!! Sorry to have missed you, but I did get your delivery :))) Thank you so very very much, and I am sorry for not being there :( I was AFK... bit ill in RL these days :( anyway, thank you, and I will definitely be trying it out within minutes :)))) ((((HUGGGIES from SL)))) |
Michael Hogg 17 Mar 2009 |
Hi Ewer, glad to hear you received it OK! :) |
Eyal Laryukov 24 May 2009 Israel |
I'd like to have that "machine" too, thanks.
anywhere in game that I could get it?
mail: eyal_lev@walla.co.il
|
Michael Hogg 26 May 2009 |
Hey Eyal, I've just sent you a copy of the PSD! |
kip hanly 3 Jun 2009 United States |
I am teaching a summer seminar in LSL. I would like to meet you and get a copy of your designer, to demonstrate the particle system to the class...
The NAD would be fun to look at since radar is one of the topics we are looking at.
I cannot find Michael Hogg in a people search of SL.
Kip Hanly (avatar name) |
Michael Hogg 10 Jun 2009 |
Hi Kip! I've now sent you the PSD and NAD, hope you find them useful. |
Gandalf Whinstanes 25 Jun 2009 United States |
I've been trying to learn paticles as well, and would love to get a copy of your machine. Is there a place in world I can go? |
Michael Hogg 29 Jun 2009 |
I've just sent you my PSD, Gandalf! |
Mathews Beaumont 5 Jul 2009 Canada |
Hi, Michael. I'd love to have a copy of your machine. I've been working with scripts for a while and it would help with the testing immensely. |
Michael Hogg 9 Jul 2009 |
Hey Mathews, just sent you my PSD, enjoy! |
Bardiel Nubalo 25 Jul 2009 Canada |
Hi, i'd love to have copies of both devices, i've been doing soe experimenting with particle scripts, but have found many in-world tools to not be very intuitive, or too costly |
Michael Hogg 7 Aug 2009 |
Hi Bardiel, you should now have copies of the PSD and NAD in your inventory! |
Roswell Ferraris 12 Aug 2009 Netherlands |
Hello Michael,
I would love a copy of your PSD machine. I am in inworld struggling with the creating of particle scripts on my own allready for weeks now, and its driving me crazy! Your invention would be real helpfull. thank you in advance.! Best Regards, Roswell |
Michael Hogg 15 Aug 2009 |
Just sent you my PSD, Roswell, hope it helps you with your particle scripts. |
Garth Lannock 30 Sep 2009 Netherlands |
Hello Michael,
Ii love to have a copy from your PSD Machine. We will make particles when you type or walk, can your machine make these? I hope so. Thanks in advance. |
Michael Hogg 3 Oct 2009 |
Hi Garth! I've just sent you a copy of my PSD. Once you've designed a particle system, the PSD will show you the LSL code needed to generate it, and you can then write your own LSL code to activate that particle system when a particular event happens. |
Thord Karu 7 Oct 2009 United States |
Hey Michael, I am trying to learn a bit more about particles, stumbled onto your website, your particle system sounds amazing. I was wondering if there was any possible way to still get a copy of it. Thanks in advance Michael. |
Michael Hogg 10 Oct 2009 |
No problem Thord, I've just sent you my PSD - enjoy! |
Pastel Indigo 20 Nov 2009 United Kingdom |
Hi Michael
Your PSD looks like a fantastic piece of work! I would love a copy to play with if that is possible?
Hugs Pastel |
Michael Hogg 22 Nov 2009 |
Hey Pastel, I've just sent you a copy! |
Pepe Luckstone 24 Nov 2009 Portugal |
Hi Michael,
Can I have a copy of PSD?
Pepe |
Michael Hogg 29 Nov 2009 |
Hi Pepe! You should find my PSD in your inventory. |
Eleanora Newell 2 Dec 2009 United States |
Hello, Michael,
I just ran across this. I would love to have a copy of PSD. Also, is it possible to do a cone of stars in the shape of a cone shape like a Christmas Tree is? I've been playing with settings and have been able to do all but this. |
Michael Hogg 6 Dec 2009 |
Hi Eleanora! I'm sending you a copy of my PSD, hope you find it helpful.
I don't think it's possible to make a "Christmas tree" cone of stationary particles (I may be wrong!). This is the best I can do - a cone of slowly descending particles:
llParticleSystem([ PSYS_PART_FLAGS, 0 | PSYS_PART_EMISSIVE_MASK, PSYS_SRC_TEXTURE, "", PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE_CONE, PSYS_PART_START_COLOR, <1.00000, 1.00000, 1.00000>, PSYS_PART_START_ALPHA, 1.000000, PSYS_PART_START_SCALE, <0.10000, 0.10000, 0.00000>, PSYS_SRC_MAX_AGE, 0.000000, PSYS_PART_MAX_AGE, 15.000000, PSYS_SRC_BURST_RATE, 0.020000, PSYS_SRC_BURST_PART_COUNT, 1, PSYS_SRC_BURST_RADIUS, 0.000000, PSYS_SRC_BURST_SPEED_MIN, 0.200000, PSYS_SRC_BURST_SPEED_MAX, 0.200000, PSYS_SRC_ANGLE_BEGIN, 2.705260, PSYS_SRC_ANGLE_END, 2.705260, PSYS_SRC_ACCEL, <0.00000, 0.00000, 0.00000>, PSYS_SRC_OMEGA, <0.00000, 0.00000, 0.00000> ]);
Hope that helps! |
Recardo Rodinia 7 Dec 2009 United States |
Michael, may I please have a copy of your PSD? I have projects in mind that could use particles generated by your creation. A creation which I find quite fascinating. I have searched endlessly looking for such a thing and been going buggy trying to make the LL scripts do what I want them to. :-) |
Evachangin Serendipity 8 Dec 2009 Australia |
I would really appreciate your PSD .... thnx so much for your generosity. |
DT Zanzibar 8 Dec 2009 Australia |
WOW & PLEASE & MANY THANKS (PSD & NAD as well, if you'd be so kind) |
Sterling McCullough 8 Dec 2009 United States |
WOW!! This is a great machine, you do wonderful work and you make it look so easy in the video, but then again you did make it right...lol, Hope to see you inworld sometime, so if you are even in look me up! |
Mabe Pearl 8 Dec 2009 Canada |
Hello Michael - Just heard about this cool item and would appreciate receiving your PSD as well. Thank you kindly. :-) |
Supremius Maximus 8 Dec 2009 United States |
Excellent job, Michael! I'd love to have a copy of the PSD too, please. |
Michael Hogg 9 Dec 2009 |
Hi guys! Many thanks for all your comments. I've now sent you each a copy of my PSD - enjoy! |
Bad Fluffy 15 Dec 2009 United States |
This is superb, I know many people enjoy being able to see visual representations of their particle project and be able to modify and tweak it like that.
I'd love to have a copy of your PSD to play around with it if possible, please. |
Michael Hogg 19 Dec 2009 |
Just sent you my PSD, Bad Fluffy, hope you have fun with it! |
Buckaroo Benoir 13 Jan 2010 United States |
Hi Michael, if you still have them available I'd love a copy of the machine. |
Michael Hogg 15 Jan 2010 |
Yes Buckaroo, my PSD is still available, just sent you a copy! |
Buckaroo Benoir 15 Jan 2010 United States |
Hi Michael, got the system, but I get syntax errors every time I try to use the scripts generated. Just for curiosity's sake I tried the one listed above for the Christmas Tree cone and got it with that one as well. Sorry, but I lost your in-world name. Could you let me know if I'm doing something wrong, or if LL has changed how they do scripts? |
Michael Hogg 16 Jan 2010 |
Hi Buckaroo, sorry to hear you're having problems.
The Christmas tree code above seems to work OK for me. Try creating a new object with a new script, and paste the Christmas tree llParticleSystem() code into the touch_start() handler (see this example). Then when you touch the object, it will start the particle system.
When copying & pasting scripts generated by my machine, remember to remove the timestamp and "PSD:" from the beginning of each line, as explained in the help notecard. For example, on a line like this:
[23:48] PSD: llParticleSystem([
remove the timestamp and "PSD:" to just leave:
llParticleSystem([
Hope that helps! |
Alyx Heron (SL name) 22 Feb 2010 United Kingdom |
This sounds JUST what I am looking for, please can I join the queue of people who would like a copy? Happy to give a donation to charity or something? |
Michael Hogg 25 Feb 2010 |
Hey Alyx! You should find my PSD in your inventory. A donation to me (using the button above) or to a charity would be awesome :) |
Oddprofessor Snoodle 12 Mar 2010 United States |
I too would very much appreciate a copy of your PSD; It looks like the answer to a prayer! |
Michael Hogg 14 Mar 2010 |
Hi Oddprofessor (great name!) Just sent you a copy, hope you find it useful. |
WraithWire Unplugged (SL Name) 20 Apr 2010 United States |
I would be very interested in the PSD as well. I recently got into particle effects and have found them to be a lot of fun. Hell of a learning curve, but lots of fun. |
Michael Hogg 22 Apr 2010 |
Just sent you my PSD, WraithWire - have fun! |
JED Dastardly 13 Jun 2010 Canada |
hey there Michael i just happen to come across this is the PSD still available? looks great
thanks in advance
JED |
Michael Hogg 13 Jun 2010 |
Hey JED, check your inventory for a copy of the PSD! |
|
 |
 |
 |
 |
|