I am trying to manually change particle information so that I can use it to control the color of individual particles.
Here is my setup for a minimum example:
Add an Icosphere (subdivisions=1, so 20 vertices) and a cube to the scene;
Remove the faces and edges of the Icosphere;
Add a particle system to the Icosphere, with the following setup:
a. Emission number = 20, start frame 0, end frame 0, lifetime 10
b. Emit from Verts;
c. Velocity: emitter Geometry normal = 1.0 (default); No physics;
d. Render Unborn and Died (just to make sure all particles are shown);
e. Render Object: choose the cube
Set up material for the cube using node editor (cycles)
a. Particle Info[velocity]->
c. [Fac]ColorRamp(0:Blue, 0.5:White, 1:Red)[Color]->
e. [Surface]Material output
At this point, the rendering result looks like this (the colors probably reflect the initial velocity generated by the particle system.):
Then I tried to alter the values stored in particle velocity
particles=bpy.data.objects['Icosphere'].particle_systems.particles for p in particles: p.velocity = 0.5
However, these changes are not preserved when I try to render. No matter if I use the render button or use the command
The changes I made to the velocity seems to be lost, and the rendered particle system is the same as in Figure 2. 3D viewport also returns to the state before I made the changes. And when I examine the actual data from the console, particle velocities are back to their original value (the same as before I changed them all to 0.5).
I am just trying to render still images, so it does not involve animation/frame changing, etc. My guess is the render command might be forcing the particle system to refresh. Is there a way to prevent this and preserve the changes I make to the particle system during the rendering process?
Thank you very much!
Blender version: 2.79