![]() |
Attention | Topic was automatically imported from the old Question2Answer platform. |
![]() |
Asked By | bashan |
I have a 3D particles emitter emitting 20 white quads every second. How can I set the quads to be of multiple pre-selected colors?
![]() |
Attention | Topic was automatically imported from the old Question2Answer platform. |
![]() |
Asked By | bashan |
I have a 3D particles emitter emitting 20 white quads every second. How can I set the quads to be of multiple pre-selected colors?
![]() |
Reply From: | SpkingR |
You can set the color to the gradient in color param, or you can use 20 particles node to combine.
bashan | 2019-12-14 08:28
Oh, that’s it.
So you can use an animated sprite sheet as the particle material.
The sprite sheet contains different colored sprite, and while during the particle emission, the quad will be the sprite with random color.
SpkingR | 2019-12-14 09:28
I do not want to have a single particle changing its color in a single emission, but particles with multiple colors…
bashan | 2019-12-14 21:56
![]() |
Reply From: | Xtremezero |
When you create the material for the particles make sure to check (use as albedo in VERTEX_COLORS) in the material flags/attributes , then you can control the particles colors directly from the particle system settings
edit :
example video
I guess you mean under “Vertex Color” to check: “Use As Albedo” property. I already checked it. I do not see how that helps me to generate particles of different colors.
bashan | 2019-12-14 21:32
Here’s how to do it :
RandomColored Particles - Link to video
Xtremezero | 2019-12-15 02:11
That’s right, I even did not realize that there is the Hue Variation
setting in particles material properties.
It also works in 2D, cool man.
SpkingR | 2019-12-16 09:27
![]() |
Reply From: | SpkingR |
Maybe you can give the particles shader a try, and I copy the code from other website, it works fine for the test scenario(I saw the different color though, haaa):
shader_type particles;
uniform int trail_divisor = 2;
float rand_from_seed(inout uint seed){
int k;
int s = int(seed);
if(s == 0){
s = 305420679;
k = s / 127773;
s = 16087 * (s - k * 127773) - 2836 * k;
}
if(s < 0){
s += 2147483647;
seed = uint(s);
}
return float(seed % uint(65536)) / 65535.0;
}
float rand_from_m1_p1(inout uint seed){
return rand_from_seed(seed) * 2.0 - 1.0;
}
uint hash(uint x){
x = ((x >> uint(16)) ^ x) * uint(73244475);
x = ((x >> uint(16)) ^ x) * uint(73244475);
x = (x >> uint(16)) ^ x;
return x;
}
void vertex(){
uint base_number = NUMBER / uint(trail_divisor);
uint seed1 = hash(base_number + uint(1) + RANDOM_SEED);
uint seed2 = hash(base_number + uint(2) + RANDOM_SEED);
float rand1 = rand_from_m1_p1(seed1);
float rand2 = rand_from_m1_p1(seed2);
VELOCITY = vec3(100.0 * rand1, 100.0 * rand2, 0.0);
COLOR = vec4(fract(rand1), fract(rand2), sin(TIME), 1.0);
}
Create a ShaderMatierial for your Particles2D node, add new shader script and copy-paste to it, plz try with a different value of paramters.
Hope this helps.
After try and modify the code, the particles seem more random and colorful:
uniform int trail_divisor = 1;
uniform float scale = 5;
then in the vertex
function add the code:
TRANSFORM[0][0] = scale;
TRANSFORM[1][1] = scale;
SpkingR | 2019-12-15 04:51