R20 Plugin Updates and Replacements


Hi Dan,

My Undertow plugin doesn’t do the ‘live’ symmetry feature of True Symmetry, but it does offer a lot of tools/commands related to working in a symmetry work-flow (including fixing up the UVs after you’ve collapsed a C4D Symmetry Object). You might take a look through the online documentation (linked on that page) and see if anything looks useful.

With that self-serving advertisement out of the way :slight_smile: … Just an update on my R20 plugin progress…

My plugins (Riptide Pro, Morph Mill and Undertow plugins, in particular) are currently being updated for R20. I actually have them running - on the PC - now, but I’m kinda stuck on getting the Mac versions working - my old iMac will not run the version of OSX needed to use the version of the x-code compiler needed to compile with the new R20 SDK .

So… at the moment, I’m trying to get ahold of a newer/used iMac or Mac mini (neither of which I can afford right now, but that’s my problem…).

I’ll continue to post updates on my site.




There has been an announcement (of sorts) made about X Particles. I’ll be damned if I can understand it entirely.

Apparently Insydium has made a bridge plug-in that allows older plugins to work with R20. They seem to be saying X-particlesand Cycles could NOT be updated to work normally with R20.

I think they are saying on November 1st we will be able to get a public release of the bridge plugin that allows the R19 X-particles to work with R20.

An early (but not too early) access version will be available “next week”.

Not sure if there will ever be a actual R20 verison of X-particles or if this system is the future of X-particles.

Will they be building everything from now on to the R19 level and depending on the bridge to work on future releases? Sounds like TONS of fun interacting with things like third party renderers who are keeping up with the framework.


Early this year we looked at updating our plugins to R20 whilst still supporting R14 to R19 and costed up the development and QA time and the impact these changes would have. We then looked at alternatives and came up with an R20 plugin that could load plugins from before R20 and bridge the API changes.

If we could get this Bridge working it also had the advantage that we could release it to the Cinema 4D community, not every C++ plugin developer has the time to port and support R20 ; this part is a bigger technical challenge for us to solve, but we’re going to give it a go.

X-Particles and Cycles 4D do ‘work normally’ and the latest X-Particles has R20 support for Fields. It makes little difference to the plugins if a call to an API function is done direct to C4D or through a bridge. The overhead of this is negligible, in some cases none at all. The biggest step was the technical challenge of how to do this because R20 has had major changes. The API has changed in every area. For example, something as simple as the Bool variable type has changed which means all functions and data using a Bool has also changed. We already use something similar to a bridge (on a much smaller scale) to support R14 to R19, the X-Particles core is actually built with 16.050 but can work in R14 to R19 and support features in R18/R19.

The advantage we saw was the possibility to have this Bridge support more than just our plugins. For now our focus is on X-Particles and the next Cycles 4D, we are encouraging other plugin developers to contact us (details are on our site) so we can see if their plugins work too. In some cases they may just work or we may be able to extend the bridge to help. In other cases it may need the plugin to be slightly changed as we had to with X-Particles. R20 brings not just API structure changes but some behaviour changes. For X-Particles that meant we had to change the code ; which we would have had to do even if we didn’t use the bridge.

As for updating X-Particles to R20, in time we may update to the latest Cinema 4D API but only when it is appropriate for us to stop supporting earlier Cinema 4Ds. For now we still have many users on earlier Cinema 4Ds and want to continue supporting them. Moving small plugins to the R20 API is a reasonable amount of work, moving X-Particles is a significant amount. When we moved X-Particles to the R16 API (which was simple compared to the R20 changes) we had to test it for months to find any bugs caused by the code changes.

We will release more information soon, an introduction to what we are doing is on our site:


Sorry for the long post, the technical details are pretty complex but I wanted to try and give an insight into what we’ve achieved.



Thanks for the update. That is much clearer. Are you saying that the bridge is built into an upcoming X-particles release or will there be a separate bridge plugin?


The next EA build of X-Particles includes the Bridge as part of the download, you don’t need to do anything more than unzip, copy into your plugins folder (in R20 this is in the prefs, or you can make your own) and use X-Particles. We will release more details with the EA release including how you can then copy the Bridge from XP and use it with other plugins (although that is completely at your own risk and unsupported at this time).



Yes, thanks!


Thanks to Insydium for the detailed update. For those interested there is separate and equally important news for Cycles4D on their site as well. Same bridge setup will apply sounds like but will take longer to get it for reasons explained in their post.

Perhaps early 2019 for an update that uses the Bridge and maybe the new version of Cycles coming with Blender 2.8 if we’re lucky. We shall see. Obviously there are more important things to be considered and we got a reminder of that.


I just got my R20 update from 3DQuakers for Forester and Forester expansion Pack. They also included multi instances support in the multicloner function. Great!



Thank you Keith, thanks for the update and your top support, look forwards to getting Morph Mill back up and running.



Is there a Advanced Atom Array out there for release 20? I use it all the time and is one of just 2-3 plugs I use. Thanks !!


Did you receive that automatically? Or did you have to contact them and request it?


I contacted them first. It’s a new procedure. First install the new files they send you - startup C4D - copy console info - mail it back to receive your new serials.

Cheers, odo


Would like to see several projects from maxon labs portal.
Coon mesh, python deformers with example for new fields(if will be possible for extrude like sample)


The MAXON Labs projects will follow for R20. These are side projects of the developers and thus have lower priority compared to day to day work.


Looking for updates of “Poin to Circle” script and “Poly Circle” plugin for R20.



P2C you can find on c4dcafe. (Thanks to Daniel Sterckx)


And if you´re in Early Access Program in Xparticles, PolyCircle also work with R20 thru Bridge…


Thanks Bezo.


hi there,

ive ansolutely no clue of scripting/coding so maybe you can help me converting these coffee scripts to python aswell.







Set New Selection _(sets new selection every time you run it and dont have to deselect the selection tag before. otherwise it would override the selection tag)

GetNextHierarchyObject(op) {
  if (op->GetDown()) {
     op = op->GetDown(); 
  } else { 
     if (op->GetNext()) { 
        op = op->GetNext(); 
     else if (op->GetUp()) { 
        op = op->GetUp(); 
        op = op->GetNext(); 
     else { 
        op = NULL; 
return op;
main(doc, op) 
    op = doc->GetFirstObject();
  while(op) {
        var tg = op->GetFirstTag();
        while(tg) {
            tg = tg->GetNext();

    op = GetNextHierarchyObject(op);

Smooth Toggle Deformer (toggles hypernurb, beveldeformer & cloth object)

 GNHO(obj, stopAt)
  if (!obj) return NULL;
  var next;
  if (next = obj->GetDown()) return next;
  if (next = obj->GetNext()) return next;
  var up = obj;
  while (up = up->GetUp())
    if (up == stopAt) return NULL;
    if (next = up->GetNext()) return next;

  var temp = doc->GetFirstObject();
  var on,first = TRUE;
    if(temp->GetType() == 1007455 || temp->GetType() == 5127 || temp->GetType() == 100004007 || temp->GetType() == 1020439 || temp->GetType() == 431000028)
      if(first == TRUE)
        else on = TRUE;
        first = FALSE;
      if(on == TRUE)
    temp = GNHO(temp,NULL);

thank you.

best regards



I would need 3 plugins replaced or updated:

*Skinprops undertwo - since I need to be able to mirror and manage UVmaps
*Welter Plugins UVtoObject: edit UVs in Object-Space with Object-Deformers etc.
*PointMirror: I need to be able to edit topolgical symmetric meshes “symmetrical” in realtime.

Thank you for any ideas! <3