Jump to content
  • Advertisement
Sign in to follow this  
Medo Mex

Animating Particles UV

This topic is 1869 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Here is how I create each particle for rendering:
                    // -------> Position, color, U, V
vertices[i*4+0] = CUSTOM_VERTEX(p1, color, 0.0f, 0.0f);
vertices[i*4+1] = CUSTOM_VERTEX(p2, color, 0.0f, 1.0f);
vertices[i*4+2] = CUSTOM_VERTEX(p3, color, 1.0f, 1.0f);
vertices[i*4+3] = CUSTOM_VERTEX(p4, color, 1.0f, 0.0f);

How do I animate (change) the texture UV to make the texture move up/down? I tried playing around with the UV values, but I couldn't get the texture to move up/down.

Share this post


Link to post
Share on other sites
Advertisement

Here is how I create each particle for rendering:

                    // -------> Position, color, U, V
float fVerticalOffset = up_value_from_your_code;
vertices[i*4+0] = CUSTOM_VERTEX(p1, color, 0.0f, 0.0f + fVerticalOffset );
vertices[i*4+1] = CUSTOM_VERTEX(p2, color, 0.0f, 1.0f + fVerticalOffset );
vertices[i*4+2] = CUSTOM_VERTEX(p3, color, 1.0f, 1.0f + fVerticalOffset );
vertices[i*4+3] = CUSTOM_VERTEX(p4, color, 1.0f, 0.0f + fVerticalOffset );

How do I animate (change) the texture UV to make the texture move up/down? I tried playing around with the UV values, but I couldn't get the texture to move up/down.

 

Modified your code snippet to show you.

Share this post


Link to post
Share on other sites

Okay, basically I'm trying to animate fire flames so I can have realistic fire effect, when I animate the UV to make the texture move to the top, I'm not getting a good result:

[attachment=15642:fh.png]

 

How should I animate the UV for fire effect?

Share this post


Link to post
Share on other sites

The image you showed doesn't tell much. Grab a better screenshot.

Also i don't know how you wish to animate texture? What you have in mind?

 

For example, if you have one texture with couple of frames of fire in it:

|----------|----------|----------|----------|----------|
|    1    |    2    |    3     |     4   |    5    |
|----------|----------|----------|----------|----------|

 

You could offset x axis of UV coordinate (on top of my head, might made mistake somewhere):

const int framesCnt = 5;
const float uvOffset = 1.0f / (float)framesCnt;
D3DXVECTOR2 billUV[4];
billUV[0].x = 0; // top left
billUV[1].x = 0; // bottom left
billUV[2].x = uvOffset; // top right
billUV[3].x = uvOffset; // bottom right
 
billUV[0].y = 0; // top left
billUV[1].y = 1; // bottom left
billUV[2].y = 0; // top right
billUV[3].y = 1; // bottom right
...
static float time = 0.0f;
const float animSpeed = 1.0f / 30.0f; // 30 frames per second
time += deltaTime;
if( time > animSpeed)
{
    time = 0.0f;
    billUV[0].x += uvOffset;
    billUV[1].x += uvOffset;
    billUV[2].x += uvOffset;
    billUV[3].x += uvOffset;
 
    if( billUV[3].x > 1.0f )  // reset to beginning
    {
        billUV[0].x = 0; // top left
        billUV[1].x = 0; // bottom left
        billUV[2].x = uvOffset; // top right
        billUV[3].x = uvOffset; // bottom right
    }
}

 

Share this post


Link to post
Share on other sites

I'm trying to animate UV for fire particles, how should I animate it? should I move the UV up/down?

Share this post


Link to post
Share on other sites

I think you don't know what i meant by "textures with frames", here is example:

Fx_flamefb01_rescaled.png

 

With my code example above, i was considering all frames in one row.

You could combine 3 particle emitters to make such effect: actual fire, sparkles and smoke. Normally for each one you use different texture and you animate uv coords for fire.

Share this post


Link to post
Share on other sites

billUV[0].x means U

billUV[0].y means V

 

Is that right?

 

                                           // U             V
vertices[j*4+0] = CUSTOM_VERTEX(pos, color, billUV[0].x, billUV[0].y);
vertices[j*4+1] = CUSTOM_VERTEX(pos, color, billUV[1].x, billUV[1].y);
vertices[j*4+2] = CUSTOM_VERTEX(pos, color, billUV[2].x, billUV[2].y);
vertices[j*4+3] = CUSTOM_VERTEX(pos, color, billUV[3].x, billUV[3].y);

Share this post


Link to post
Share on other sites

What does your original fire texture look like? Are you trying to animate individual frames of fire, or are you trying to move a single texture up to simulate flames rising?

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!