2
$\begingroup$

I understand that there is viewport sync lag, but this question takes that into account. I have animated particles that should move around on the surface of my text object with a Brownian force. For some reason though, what I see when I playback the animation in the viewport or when I render the OpenGL Animation is different than the render output.

In the render I get particles flying all over the rendered animation. I get this consistently as I have set up similar scenes. How do I stop this from happening and why is it not WYSIWYG?

Steps to reproduce:

  1. Create a Text object (rotate in the X axis -90 degrees)
  2. Text Object > Data Panel > Geometry Settings:
  3. Extrude: 0.20
  4. Bevel > Depth: 0.01
  5. Bevel > Resolution: 4
  6. Convert Text to Mesh (Alt+C)
  7. Remove Doubles (Text > Edit Mode > Select All > Specials (W) > Remove Doubles)
  8. Switch to Cycles Render
  9. Apply material to Text Object
  10. Create Ico Sphere and move to Layer 2
  11. Duplicate Ico Spheres until there are 5
  12. Apply different color material to each
  13. Group Ico Spheres
  14. Text Object>Particle Panel > New

Particle Panel Settings:

  • Emission>Number: 5000
  • Emission > Start: 1
  • Emission > End: 1
  • Emission > Lifetime:165
  • Emission > Emit From: Faces (Random and Even Distribution checked)
  • Random selected (tried on and off)
  • Velocity > Normal:0
  • Physics > Newtonian > Forces > Brownian: 0.01
  • Physics > Newtonian > Forces > Damp: 0.1
  • Render > Group > Dupli Group: Group containing 5 icospheres
  • Render > Group > Dupli Group > Size: 0.01
  • Field Weights > Gravity: 0.00
  • Vertex Groups > Density: Vertex Group called Particles containing front of text (not in test scene...still get weirdness)

Additional:

  1. Add Camera
  2. Create Mesh Light
  3. Set End of Animation to 165 (30 FPS)
$\endgroup$
  • $\begingroup$ It is there : ) $\endgroup$ – Bryson Jack May 21 '15 at 7:42
1
$\begingroup$

From the information provided I believe the difficulty you are experiencing is related to your workspace environment, not your modeling and scene creation.

I suspect that if you look at the cache panel in your particle settings, the "# of frames in memory" displayed will be less than the total number of frames in your animation (this information is also represented graphically in the lower timeline).
If that is the case, then the reason you are seeing different results in the viewport and render is that they are using different data.
To fix your issue you should:
Set Playback sync to No Sync in the 3d viewport.
Invalidate the simulation cache data by changing physics values or moving the object.
Play the full simulation in viewport.
Verify all frames are cached in the simulation cache.
Render your animation.

Edit to add further information after comment: (Maybe should be a separate answer?)

I downloaded the blend file provided in the question, and made the following changes:

1) In the Properties Editor-> Render tab-> Render Panel
I changed the Render Device to CPU (I do not have a supported GPU)
and in the Properties Editor-> Render tab-> Performance panel set the tile sizes to 32 x 32 (for cpu use). I also set Properties Editor-> Render tab-> Sampling panel render samples to 80, to speed up testing.
(you may wish to duplicate this step to rule out any GPU compatibility errors)

2) I saved the file as a new blender file.
In the Properties Editor-> Render tab-> Output Panel
I changed the output file format from H.264 movie to PNG images, and set a new output directory.
(Rendering directly to movie formats can cause encoding errors, it is considered good practice to render image frames, and encode to movie format in an encoding pass)

3) I switched to the Video Editing screen layout
and changed the UV/Image editor to the Video Sequence Editor.
I then selected and deleted the Image Strip that is present.
(If there is any content in the Video Sequence Editor, blender will render that content instead of the current 3d scene, this can be disabled in the Properties Editor-> Render tab-> Post Processing Panel)

4) I switched back to the Animation screen layout
and in the Timeline, changed Playback Sync from AV-sync to No Sync.
In the Properties Editor-> Particle tab-> Emission Panel I changed the number of particles to 5001 (to invalidate the cache), I also made the Cache panel visible.
Then I played the simulation in the viewport to allow all frames to be calculated. After stopping the simulation, I checked that the particle cache had all frames in memory.
(this is the step outlined above this edit)

5) I saved the blender file.
I rendered the animation, seeing no errors in any frames.
I previewed the resulting sequence using the Info Bar-> Render-> Play Rendered Animation (Ctrl F11)

6) After being satisfied by the preview;
I again saved a new file with the name ParticleMovementTest_encoding.blend
I changed Properties Editor-> Render tab-> Output Panel output file format to H.264.
I switched to the Video Editing screen layout, and added an image strip, selecting the rendered frames produced in step 5, and rendered the animation again to encode the project into a movie file.
(If, in step 3 you disabled Sequencer in the Properties Editor-> Render tab-> Post Processing Panel, it will need to be re-enabled)

7) I verified the resulting file with VLC Player.

The above steps produced this render result (4mb).
Somewhere in the above steps lies the answer to your problem.

$\endgroup$
  • $\begingroup$ I followed your instructions and I am still getting a different output in my render with particles behaving wildly at certain frames. Any other ideas? $\endgroup$ – Bryson Jack May 23 '15 at 18:24
  • $\begingroup$ I have to thank you for all the time and effort that you put into thinking about, testing and documenting your proposed solution. Although it still didn't fix the problem for me, it did guide me to a solution that did work! Now, I need to test every add-on and find the offender. $\endgroup$ – Bryson Jack May 24 '15 at 5:15
0
$\begingroup$

Go to File and Load Factory Settings. Open your scene and render. Most likely there is an Add-on loaded that is causing a rendering issue that stock Blender doesn't exhibit when rendering the same scene.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.