Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Particles: Snow, Clouds, and Fog

Ulrika Zugzwang
Magnanimous in Victory
Join date: 10 Jun 2004
Posts: 6,382
08-05-2004 16:24
Is there a resource with various settings for particle scripts to make such common environmental effects such as snow, clouds, or rain?

I did some forum searching and I couldn't find any code snippets. I do have a particle script that I use and I am familiar with it. I was just hoping someone had the code lying about so that I didn't have to spend the time trying to reproduce each effect. The most important one for me is snow.

~Ulrika~
_____________________
Chik-chik-chika-ahh
Paradigm Brodsky
Hmmm, How do I set this?
Join date: 28 Apr 2004
Posts: 206
08-05-2004 16:54
Yes I have one for snow which actually allows you to use as many different flake textures as you put in the object. It randomly picks the next texture, so your flakes can be different.

Contact me in world.
Apotheus Silverman
I write code.
Join date: 17 Nov 2003
Posts: 416
08-06-2004 08:17
I also have a nifty cloud vehicle for sale with different modes for cloud-only, snow, rain, and storm with thunder and lightning. You can see them scattered here and there being used for weather clouds if you wander the world. Probably not what you're looking for, but just in case.

It is available at the southeast corner of Abbotts above Hangar 3 (ground level) as well as the Abbotts Aerodrome exhibit at Busy Ben's or any Apotheus Silverman Aircraft display throughout the world in case you're interested.
_____________________
Apotheus Silverman
Shop SL on the web - SLExchange.com

Visit Abbotts Aerodrome for gobs of flying fun.
Francis Chung
This sentence no verb.
Join date: 22 Sep 2003
Posts: 918
08-06-2004 09:10
Neil Protagonist has a bunch of particle effects including some of the ones you're describing in his FX store in Uzume (33,216)
_____________________
--
~If you lived here, you would be home by now~
Ulrika Zugzwang
Magnanimous in Victory
Join date: 10 Jun 2004
Posts: 6,382
08-06-2004 17:58
This is what I was looking for! It works like a charm.

CODE

// Particle Script 0.3
// Created by Ama Omega
// 10-10-2003 -boeh!

// Mask Flags - set to TRUE to enable
integer glow = TRUE; // Make the particles glow
integer bounce = FALSE; // Make particles bounce on Z plan of object
integer interpColor = TRUE; // Go from start to end color
integer interpSize = TRUE; // Go from start to end size
integer wind = FALSE; // Particles effected by wind
integer followSource = FALSE; // Particles follow the source
integer followVel = FALSE; // Particles turn to velocity direction

// Choose a pattern from the following:
// PSYS_SRC_PATTERN_EXPLODE
// PSYS_SRC_PATTERN_DROP
// PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY
// PSYS_SRC_PATTERN_ANGLE_CONE
// PSYS_SRC_PATTERN_ANGLE
integer pattern = PSYS_SRC_PATTERN_EXPLODE;

// Select a target for particles to go towards
// "" for no target, "owner" will follow object owner
// and "self" will target this object
// or put the key of an object for particles to go to
key target = "";

// Particle paramaters
float age = 100; // Life of each particle
float maxSpeed = 0.4; // Max speed each particle is spit out at
float minSpeed = 0.4; // Min speed each particle is spit out at
string texture; // Texture used for particles, default used if blank
float startAlpha = 1; // Start alpha (transparency) value
float endAlpha = 1; // End alpha (transparency) value
vector startColor = <1,1,1>; // Start color of particles <R,G,B>
vector endColor = <1,1,1>; // End color of particles <R,G,B> (if interpColor == TRUE)
vector startSize = <.1,.1,.1>; // Start size of particles
vector endSize = <.1,.1,.1>; // End size of particles (if interpSize == TRUE)
vector push = <0,0,-0.03>; // Force pushed on particles

// System paramaters
float rate = .01; // How fast (rate) to emit particles
float radius = .1; // Radius to emit particles for BURST pattern
integer count = 10; // How many particles to emit per BURST
float outerAngle = 1.54; // Outer angle for all ANGLE patterns
float innerAngle = 1.55; // Inner angle for all ANGLE patterns
vector omega = <0,0,10>; // Rotation of ANGLE patterns around the source
float life = 0; // Life in seconds for the system to make particles

// Script variables
integer flags;

updateParticles()
{
flags = 0;
if (target == "owner") target = llGetOwner();
if (target == "self") target = llGetKey();
if (glow) flags = flags | PSYS_PART_EMISSIVE_MASK;
if (bounce) flags = flags | PSYS_PART_BOUNCE_MASK;
if (interpColor) flags = flags | PSYS_PART_INTERP_COLOR_MASK;
if (interpSize) flags = flags | PSYS_PART_INTERP_SCALE_MASK;
if (wind) flags = flags | PSYS_PART_WIND_MASK;
if (followSource) flags = flags | PSYS_PART_FOLLOW_SRC_MASK;
if (followVel) flags = flags | PSYS_PART_FOLLOW_VELOCITY_MASK;
if (target != "") flags = flags | PSYS_PART_TARGET_POS_MASK;

llParticleSystem([ PSYS_PART_MAX_AGE,age,
PSYS_PART_FLAGS,flags,
PSYS_PART_START_COLOR, startColor,
PSYS_PART_END_COLOR, endColor,
PSYS_PART_START_SCALE,startSize,
PSYS_PART_END_SCALE,endSize,
PSYS_SRC_PATTERN, pattern,
PSYS_SRC_BURST_RATE,rate,
PSYS_SRC_ACCEL, push,
PSYS_SRC_BURST_PART_COUNT,count,
PSYS_SRC_BURST_RADIUS,radius,
PSYS_SRC_BURST_SPEED_MIN,minSpeed,
PSYS_SRC_BURST_SPEED_MAX,maxSpeed,
PSYS_SRC_TARGET_KEY,target,
PSYS_SRC_INNERANGLE,innerAngle,
PSYS_SRC_OUTERANGLE,outerAngle,
PSYS_SRC_OMEGA, omega,
PSYS_SRC_MAX_AGE, life,
PSYS_SRC_TEXTURE, texture,
PSYS_PART_START_ALPHA, startAlpha,
PSYS_PART_END_ALPHA, endAlpha
]);
}

default
{
state_entry()
{
updateParticles();
}
}


~Ulrika~
_____________________
Chik-chik-chika-ahh
Cutter Rubio
Hopeless Romantic
Join date: 7 Feb 2004
Posts: 264
08-06-2004 18:54
Ulrika,

Go up to Jopsy's Ethereal Lands and take the rocket up to the Particle Lab. She has a free Emitter that uses an updated version of Ama's script that is just excellent. Plus she has lots of tutorials there...

Cutter
_____________________
The early bird may get the worm, but the second mouse gets the cheese.
Rysidian Rubio
Ruby Red Head
Join date: 14 Jan 2004
Posts: 263
08-08-2004 20:46
I'm not having a go at anyone specific here and definately not at Ulrika for starting this thread, but I have seen alot of people using snow particle scripts (almost exactly the same as Ulrika's example) all over the snow sims. While this looks nice is does cause a problem.

My problem is specifically that this script uses (or tries to) 100,000 particles, which basically means that any other particles effects in your draw distance either don't work, or hardly at all. And some people have many of these snow objects on their land.

Since the default number of particles your Sl Client can draw is 2048 you can see how trying to create 100,000 particles creates problems.

Using the script below, if you change the following lines will make it create only 1000 particles and you will hardly notice the difference, and other particle effects will still work!

float age = 10; // Life of each particle
float rate = .1; // How fast (rate) to emit particles
integer count = 10; // How many particles to emit per BURST

To work out how many particles your script creates (the total number there are visible at any one time) here's a simple formula:
(count / rate) * age.
(count divided by the rate) multiplied by the age.

I think Paradygm's script with actual snowflake textures sounds alot better tho!