Expresso: ThinkingParticles and MoGraph Cloner


Hi all,

I have a MoGraph Cloner setup set to Object mode, where a TP particle group is being used as the framework for cloning. The object being cloned is a simple mesh sphere, though the Cloner has MoGraph Multi-Shader applied to it so that the particles are 5 different colors.

After a couple test renders, I’m noticing that once I have cached my clones to disk using the MoGraph Cache tag, C4D only renders a fraction of the clones. Here’s a side-by-side-comparison:

Also, here’s my scene file:

I did a test in AfterEffects to make sure things line up, and sure enough they do - the only problem is that the cached version is missing what looks to be about half of its clones. Is this normal behavior for the tag, or have I missed something in the setup?

Thanks ahead of time for any insights…



Hi Pfistar,
to begin, it appears that there are a few “oddities” in your XPRESSO setup and it’s making it hard to troubleshoot.
If you have some time, can you start with the following, and then upload a new file if the problems persist:

  1. I can see from your XPRESSO setup that you are feeding the “NUCLEUS.T1” object into a Tag node, set to XPRESSO, and then that into an Object node, and then that into a Math:multiply. That seems to be an oversight from your part.
  2. On the same Node setup you have a PSetData node that doesn’t receive any particle input.
  3. You have your LOD set to “Low” in the Viewport menu “Options” -> “Level of Detail”. Set that to High
  4. Also please remove all Cells except one, to make things simpler.

If you look at the above, and still having problems, please repost a new scene and I’ll take a look later.


And so it appears the only thing that made a difference is the LOD setting…


Hi Noseman,

Many thanks for the reply and insights. I apologize for not responding sooner. I’ve finally just had a chance to slow down a bit and turn over some stones to figure out how everything works and where different bits of data are stored with this combination of features (ThinkingParticles | TP Groups | MoGraph Cloner | MoGraph Cache | MoGraph Shader | RandomEffector | viewport LOD feature | and also the Takes function )

For what it’s worth, I parsed the scene down to its essence, though against your advice, I’ve kept 2 TP emitters each with its own TP group, as I’d supposed the multiple particle groups might have something to do with why not all of the supposedly cached clones were showing up in my CPU render. Here’s the file if you want a look, though you’ll have to bake the cache again, as keeping cache in file adds about 40MB to file size. Here’s the link to pared-down file: TP-mograph-cache-v03.c4d (5.8 MB)

Nonetheless, I think your hunch about viewport LOD was obviously correct - turning it to ‘low’ or ‘med’ resulted in fewer than all of the MoGraph clones rendering. I think what I must have done is cached the particles while LOD was set to ‘low’ or ‘med’, leading to my WTF moment. In any event, I gave myself some breakdowns which I’ll share in a minute.

Thank you again!


Viewport LOD

  • If MoGraph cache is baked and enabled,
    – all the clones will be visible according to whatever LOD setting they were baked at
  • If TP Xpresso particle generators are enabled and Cloner cache is empty or disabled
    – On low setting, it only appears to render most of the clones of 1st particle Group.1 and only a few from the Group.2, though the ratio changes over time (toward end of animation, more particles appear on the second group while the first group shows more blank ticks per clone)
    – On med setting, we see most but not all of the clones of Group.1 and very few from Group,2, but again, the ration changes as time goes on.
    – On High, it appears we get one clone per particle tick
    – I suppose the visibility of clones is based on the particle ID number, though I’d be curious to know if you have any further insights here.

MoGraph Cloner Cache

  • Appears to store:
    — Absolute PSR data for the TP ticks
    — Local transform data for each clone as defined by the MoGraph Cloner object (clone means an invisible matrix attached to each TP tick, not the actual cloned geo)
    — Effector data (also invisible matrix, in this case random color and uniform scale)
    — The things above are baked, meaning they have to be re-cached/re-baked if we want to make alterations
  • Once the Cloner has been cached, we can disable
    — The Xpresso tag that generated the particles
    — The Particle Geometry object (not sure what this does for us anyway)
    — The Random Effector (which allowed us to randomize the color of the clones)
  • Things that can still be changed on the cached array
    — Materials
    ----- We can swap the material out for another
    ----- Even if the cache is baked without a MoGraph shader, as long as the RandomColor Effector was applied before baking, we can apply a MoGraph shader material after the fact and we’ll get the random colors
    — Cloned geo
    ----- We can swap or add clone geo underneath the Cloner object and the new geo will show up cloned
    ----- Adjusting the local PSR transforms of the original object will do nothing, but parametric data (such as radius of a sphere) will be cloned
    ----- With non-parametric mesh objects, adjusting the mesh at point or poly level will show up in clones