Jump to content
verygoodquestion

Particle ribbon, radius, throttle Script

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

Share this post


Link to post
Share on other sites

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.

  • Thanks 1

Share this post


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.

Share this post


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

Share this post


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

Share this post


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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...