Liquid Smoke Particles

Question for any professional visual effects artists out there, or anyone with experience with this.

How do artists create (or generate) complex liquid smoke-type effects for games? I understand the general principle is to apply a spritesheet animation to a single particle within a system, but I haven’t been able to find any educational material on how to generate the smoke particle assets to begin with. Since Roblox doesn’t support spritesheet animation loops on ParticleEmitters, does anyone know of a workflow for replicating these types of animations in Roblox?

Desired effect:

effectloop

Link to GIF in case embed doesn't work.

https://cdn.discordapp.com/attachments/289908750439940098/406943217112711168/effectloop.gif

Thanks

5 Likes

I mean, with Roblox’s current technology, i’d suggest using a simple smokey-ish wavy texture, and then use some slow RotationSpeed, and then use the Size properties’ graphing tool to manipulate it. You could then duplicate that one and use a different particle for variation, but aside from that, i’m not sure how (or if) you could make the smoke morph around as such.

This is just an animated texture. Other engines support this. Roblox doesn’t. If you wanted this in roblox you’d have to make a different particle emitter instance for each particle, manually emit them, and cycle through the textures yourself. And since particle emitters don’t have sprite sheet support you’d have to upload every frame as a separate image.

3 Likes

You can actually change particle emitter texture ID in real time.

local p1,p2,p3,p4,p5,p6,p7 = 300722918,300722601,300723193,300723290,300722287,300723193,300722601
local ids = {p1,p2,p3,p4,p5,p6,p7}
local int = 1
local pe = script.Parent:WaitForChild(“ParticleEmitter”)
local d = script.Parent:WaitForChild(“Decal”)
while wait(.05) do
local id = ids[int]
int = (int%#ids)+1
pe.Texture = “http://www.roblox.com/asset/?id=”…id
d.Texture = “http://www.roblox.com/asset/?id=”…id
end

just upload different stances of the same particle and cycle through them with a script and you should have a pretty fluid animation if done correctly. You just need one particle emitter and multiple textures to achieve this effect.

The animation is actually a lot smoother in studio + client. It’s just the gifrecorder that messes up the framerate!

2 Likes

I noticed that while doing this online, it made the particle emitter flicker while it changes textures

1 Like

I have tried this before, unfortunately the Particle texture changes for all existing particles in the instance. This works, but does limit creativity.

Are there any visual effect & rendering artists here who know how liquid smoke effects are generated? (The actual frame images that are rendered and placed in a spritesheet)

I wouldn’t know how game studios render them, but with the current Roblox engine, it is POSSIBLE to make something very similar (but not exact) using Roblox’s current system with the size & transparency graphing tool, the gradient tool, etc.

Here’s a little attempt I did at it, and I think I replicated it pretty well :gorilla:JuicySmoke
Here’s a studio file for you to study :wink:
Smoke.rbxl (13.3 KB)

1 Like

For at least 10 years now, effects programmers have been using Navier-Stokes equations to render these kinds of effects as actual fluid dynamics simulations.

I second this - if you’re wanting specific software look at something like Phoenix FD, Maya fluids, Houdini

You might be able to use Blender to do some fluid simulations as well, but I’m not sure as I don’t have a ton of experience with that software

1 Like

Was about to suggest that maybe using a spritesheet could work, but then I remembered that it’s only possible with GUIs as far as I know. :frowning:

You can create your own particle system with billdboard gui’s which should work the way you want, but might be inefficient.

Thanks! This was exactly what I was looking for.