Cinema 4D

From cgwiki

Core concepts

Houdini is nodes, Max is the stack, Maya is about hiding the dependency graph and failing, C4D is about parenting and tags.

To apply a bend deformer to a shape, you create the deformer, then parent it underneath the object to be deformed. To stop the object being affcted, drag the deformer out from its parent.

'But wait!' you say, 'what if I want multiple objects to be affected by 1 deformer?'. You group all the objects and the deformer together, and the deformer works on all of its siblings. Its a little inconsistent, but works fine in practice.

The other major thing is tags. I suspect its to cover stuff that wouldn't cleanly map into a parent-child relationship, and there's a lot of them. Want to lock an objects transforms? Add a protection tag. What it to be a rigid body? Add a rigid body tag. Apply a material? Drag the material onto the shape, it gets a material tag.

A nice benefit of this system is that its easy to swap things around between objects. Tags can just be dragged to other objects, as can deformers, makes experimenting very fluid. The closest analogy I can think of is After Effects, its layers, parenting, drag n drop, all that. Sure it might not handle the last 10% of a super complex job, but for 90% of the time, its fast and capable.

It made me also think about how maya currently is worst of all worlds. Houdini offers good setup re-use and experimentation with its clearly defined and simple connections of its node setup. C4D offers quick experimentation and reorganisation via drag-n-drop and a centralised editing interface (most of your time is spent quickly shuffling things around in its outliner equivalent). Maya offers an outliner thats good for moving object heirarchies, but hides the deformers and dg networks. To deal with those you move into hypershade/hypergraph with nodes that require far too many connections, in a poor editor (the new node editor is better but not perfect), with lots of bizarre backwards wirings and mystery nodes. Elegant re-use and experimentation is nearly impossible. Fingers crossed that bifrost will fix this, or I get to work somewhere that is willing to try something new,I grow tired of fighting maya. Ok, rant over, back to C4D.

Interface

It's very quick to pickup for maya folk. Navigation keys are same as maya, most things are simple drag n drop, where the maya hotkeys are W/E/R for trans/rot/scale, C4D moves them over by one key to E/R/T (if you're wondering, W is used to swap between object and worldspace transform, handy)

The outliner is called the object manager, its an interesting combo of outliner and layer manager, sort of. Next to each node name is a blank line, you drag in entries on to this line to add properties (via tags) or materials. They build up left-to-right, rightmost entries have priority. To move properties between objects, just drag the tag/material to another object.

Duplicating objects is done via ctrl-c/ctrl-v, its the reverse of maya in that new nodes appear at the top of the outliner rather than the bottom.

C4D lets you load multiple scenes at once, and swap between them via the window menu. You can't have multiple scenes visible at once like photoshop, but its handy to be able to have both scenes in memory and quickly copy/paste between them, vs maya's laborious import/export dance, or loading multiple copies of maya.

The viewports seems to run in a separate thread to the main app, which can be a little confusing at first. If the scene is heavy you can move to a frame, app seems responsive, but the viewport looks wrong. Just when you begin to question if you've broken something, the view updates. I can see in theory why this is good, but being used to maya locking up while it calculates, its weird. At the very least it needs a progress bar or spinner to let you know that its cooking.

The view also does adaptive degradation like After Effects, so if you move too quickly it'll drop the view from fully shaded, to wireframe, to bounding box automatically, then go back to normal when you stop changing things.

Hotkey cheat sheet

Format is maya, c4d, function

  • q - 0 - marquee select
  • w - e - translate
  • e - r - rotate
  • r - t - scale
  • ? - w - toggle object/worldspace transform mode
  • space -mmb - toggle fullscreen/quad-view
  • f - s - frame selected (works both in viewport and graph editor)
  • ? - insert - toggle camera pivot to object under cursor. 's' moves the camera, but often doesn't set the camera center of interest correctly. this will. hit insert again to put it back to the default.
  • ? - h- frame all (works both in viewport and graph editor)
  • ? - shift-r - render frame to image viewer
  • ? - c - delete history
  • f8 - enter - swap to component mode (sort of, only seems to swap between component modes, so far I've been clicking the object/mesh button on the left)

Functions cheat sheet

  • ctrl-shift click on a spline in trans/rot/scale mode to insert a point
  • all primitives and deformers are under the create menu
  • there's no hotkeys to step through cv's, but you can use the structure menu (3rd tab under the outliner) to do this
  • renaming sequential objects in the outliner is like after effects/notepad, enter to rename, enter to confirm, downarrow for next entry, enter, edit, enter, downarrow, enter...
  • only the select mode (hotkey 0) lets you translate a selection, select something else, translate, select. when in translate/rotate/scale mode, selection is persistent unlike maya.
  • ctrl-click values in the AE to set keys, or r.click to set keys. there's no shift-w/shift-e/shift-r equivalent to set t/r/s keys via hotkeys by default
  • hide and show is split into viewport and render, little fiddly to get used to, no default keyboard shortcut that I can see.
  • if you can't edit components on a shape, its probably because its still a parametric object. hit c to bake it to a editable mesh/spine.

Mograph

Imagine a cross between maya's particle instancer, the 'duplicate special' window, and paintfx, and non-linear deformers. That's kind of what mograph is. You create a cloner, which determines how duplicates will be generated (all as live instances), that can be a line, a grid, a circle, or over the verts of another object.

You then apply effectors, which are essentially deformers which manipulate how those instances behave. Eg:

  • Random effector: lets you dial in random translate/rotate/scale per clone
  • Delay effector: takes whatever motion is being applies to clones and adds a simple physics lag, like a spring per clone
  • Step effector: takes the input motion and lets you offset time per clone, by x frames per clone
  • Inheritance effector: you keyframe an object elsewhere, point this effector at that object, and it's keyframe animation will be stamped onto each clone.


They stack up like deformers, can be re-ordered, have their weight affected, all as you'd expect deformers to operate.

You can have clones of clones, making for all those fancy C4D things you see on vimeo.

As well as applying motion per clone, effectors can also apply a weight value per clone, which is then passed to effectors downstream. A common use for this is to apply a random effector early, have all its random position/rot/scale stuff disabled, and only insert random weights per clone. If a delay effector is added after this, it will inherit those random weights, so each clone will have a slightly different delay.

Python and COFFEE

Coffee is the C4D equivalent of mel, and like maya, they've been moving to python scripting too. Haven't looked closely at this, but a quick glance didn't look very pythonic; feels al clunky as maya.cmds is.


No render layers or takes

If you need to do a render with stuff, then another render with some objects hidden, another shader applied, you have to do it the old school way; save a copy of the scene, apply your changes, render separately. Ugh.

No render variables to help with output image naming

You get an automatic frame number when doing image sequences, but thats it. In maya I normally use <scene> to always name renders after the scene name, but in C4D you need to manage this yourself. I've read you can manage this with python or xpresso, but haven't had time to look closely at this.

Built in render queue, render farm

The internal render queue is like after effects, nice to line up several things and keep an eye on them.

The render farm is also like after effects, which is less nice. You setup a watch folder, save your c4d file to that folder in 'collect' mode, which copies any external images and whatnot into a single folder and repaths the materials. You then manage the farm via a very basic web interface, renders also go into a 'results' sub folder of the watch folder. When they're done, you then have to move them back to wherever you need them to be. It works, and its nice that its included for free (I think), but you'd probably want to use a commercial farm manager instead.

All that said, I'm currently using R14. I just read in R15 its an all new farm management tool that runs from inside C4D, and even allows you to distribute buckets of a single frame. Hmm.

Xpresso

Interesting looking node editor for controlling most aspects of C4D. My first play with it was for a spline cluster deformer. To my surprise the built in cluster deformer (under character -> commands -> create cluster) only works for poly meshes, not splines. I found an example of how to work around this with xpresso using a point node. A point node moves a point, unsurprisingly, and takes an object (your spline) and a position (given from a null in this case).

  1. Create a spline and null
  2. Select the null, go tags -> cinema4d tags -> xpresso. This creates a new empty xpresso node network for the null
  3. Go to the xpresso editor window
  4. Drag the spline and null into the xpresso window, this will create object operators for each. By default each are blank, you need to tell xpresso what parameters to expose.
  5. Click on the red square on the top-right of the spline box, choose 'object' to expose that parameter
  6. Do the same for the null, expose coordinates -> global position -> global position
  7. Create a point node. r.click in a blank part of the xpresso editor and chose new node -> xpresso -> general -> point
  8. The point node has 2 of the input parameters we need listed, but we need a third. Click the blue corner and choose point position
  9. connect spline.object to point.object
  10. connect start.global_position to point.point_position. you should now see the first point of the curve snap to the null
  11. to choose a different point, select the point node and change the point index
  12. to repeat this process for a new null/cv combo, select all the nodes, ctrl-c, create a new null, new xpresso tag, ctrl-v, and change the object reference and point index in the new graph. I tried having multiple graphs in the one xpresso network, but it didn't appear to work.