Jump to content

Particle ribbon, radius, throttle Script


You are about to reply to a thread that has been inactive for 482 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

Hello! I have a question. in fact, these are two questions in one.

I am trying to make a particle ribbon system for a vehicle and it should change the emission start point height depending on the throttle of the vehicle. As I understand it, this is set by the radius. this is my system of particles. but when I change the radius, particle appear in "I-like" view (vertically flat), but I need to make it "T-like" view (horizontally flat). Is this possible in any way? if I rotate the object - orientation is maintained.

llParticleSystem([PSYS_PART_MAX_AGE,3.00,
PSYS_PART_FLAGS, 1287,
PSYS_PART_START_COLOR, <1.00000, 1.00000, 1.00000>,
PSYS_PART_END_COLOR, <1.00000, 1.00000, 1.00000>,
PSYS_PART_START_SCALE,<1.00000, 1.00000, 0.00000>,
PSYS_PART_END_SCALE,<2.00000, 2.00000, 0.00000>,
PSYS_SRC_PATTERN, 4,
PSYS_SRC_BURST_RATE,0.02,
PSYS_SRC_BURST_PART_COUNT,5,
PSYS_SRC_BURST_RADIUS,0.5,
PSYS_SRC_BURST_SPEED_MIN,0.05,
PSYS_SRC_BURST_SPEED_MAX,0.10,
PSYS_SRC_ANGLE_BEGIN, 0.00,
PSYS_SRC_ANGLE_END, 0.00,
PSYS_SRC_MAX_AGE, 0.0,
PSYS_SRC_TEXTURE, "168e6813-096e-07ea-97ae-fd416826f627",
PSYS_PART_START_ALPHA, 0.50,
PSYS_PART_END_ALPHA, 0.00,
PSYS_PART_START_GLOW, 0.03,
PSYS_PART_END_GLOW, 0.01]);

And, what is the best way to make the particle radius dependence on vehicle throttle? something like:     float radius = (throttle+10)*0.03;....... /// PSYS_SRC_BURST_RADIUS,0.5,*radius....

the point I am doing this is that it is planned as the wake of the boat and since the boat lifts its nose at acceleration, the emitter goes down underwater accordingly. so I want to gradually increase the height with increasing throttle. I decided that it would be easier than changing the height of the emitter itself. maybe there are other ways?

Help please!

Untitled-1.jpg

Edited by verygoodquestion
Link to post
Share on other sites
4 minutes ago, KT Kingsley said:

Not sure if this is helpful, but when I messed around with a variable bow wave for a boat I ended up using a linked prim as an emitter and moved that prim forwards and backwards along the keel as the boat tilted in response to its speed.

Thank you very much! this is practically what I need only need to move up and down and it’s not clear how to do it.

Link to post
Share on other sites

Well, I’ve found such a wonderful line, how would I now associate it with throttle?

integer PARTICLE_PRIM = 2;

llSetLinkPrimitiveParamsFast(PARTICLE_PRIM, [PRIM_POS_LOCAL, llList2Vector(llGetLinkPrimitiveParams(2, [PRIM_POS_LOCAL]), 0) + <0.0, 0.0, 0.01>]);

Edited by verygoodquestion
Link to post
Share on other sites

You can move a linked prim using llSetLinkPrimitiveParamsFast with the PRIM_POS_LOCAL flag. You'll want to find the best positions for the maximum and minimum speeds, and interpolate the actual position based on the actual speed.

Something like this, perhaps:

vector emitter_pos_max = <something>;
vector emitter_pos_min = <something>;
vector emitter_pos_range;

float speed_max = something;
float current_speed;

default
{
    state_entry ()
    {
        emitter_pos_range = emitter_pos_max - emitter_pos_min;
    }

    some_event ()
    {
        llSetLinkPrimitiveParamsFast (emitter_link_number, 
        [
            PRIM_POS_LOCAL, emitter_pos_min + (emitter_pos_range * (current_speed / speed_max))
        ]);
    }
}

 

Edited by KT Kingsley
) at end of SLPPF
  • Like 1
  • Thanks 1
Link to post
Share on other sites
44 minutes ago, KT Kingsley said:

You can move a linked prim using llSetLinkPrimitiveParamsFast with the PRIM_POS_LOCAL flag. You'll want to find the best positions for the maximum and minimum speeds, and interpolate the actual position based on the actual speed.

Something like this, perhaps:


vector emitter_pos_max = <something>;
vector emitter_pos_min = <something>;
vector emitter_pos_range;

float speed_max = something;
float current_speed;

default
{
    state_entry ()
    {
        emitter_pos_range = emitter_pos_max - emitter_pos_min;
    }

    some_event ()
    {
        llSetLinkPrimitiveParamsFast (emitter_link_number, 
        [
            PRIM_POS_LOCAL, emitter_pos_min + (emitter_pos_range * (current_speed / speed_max))
        ]);
    }
}

 

Thank you so much! It totally works! Perfect!

  • Like 1
Link to post
Share on other sites
You are about to reply to a thread that has been inactive for 482 days.

Please take a moment to consider if this thread is worth bumping.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...