Cinema 4D / BodyPaint 3D Program Documentation Reference Cinema 4D Cinema 4D Visualize, Broadcast, Studio Advanced Render
Function available in CINEMA 4D Visualize, Studio

CineMan

Introduction

CineMan provides powerful and flexible connectivity between Cinema 4D and several RenderMan® renderer – compatible renderers.

The aim was to support a wide variety of features Cinema 4D users are accustomed to using. Hence, the external RenderMan® renderer works like a built-in renderer while providing all the benefits of RenderMan® renderer.

Currently, the following render engines are supported: Pixar’s Photorealistic RenderMan® renderer (PRMan) 15.0, Site Graphics’ AIR 10 and 3Delight 9.0.

Getting Started

We recommend that you first install RenderMan® renderer before installing CineMan. When started for the first time, CineMan will look for specific environment variables that each renderer’s installer has automatically set and will select the correct renderer in the Preferences menu.

When installing Pixar’s RenderMan® renderer Pro Server, make sure to include the PRMan binary path in the path environment variable. Otherwise CineMan will not function properly.

After installing CineMan and the RenderMan® renderer – compatible renderer of your choice, the renderer can subsequently be selected in the Preferences’ CineMan menu (Edit / Preferences / Renderer / CineMan). You can now easily switch between the installed renderer and RenderMan® renderer by clicking on the Use RenderMan® renderer button in the Render / CineMan / Use CineMan menu. This lets you quickly add the CineMan® Video Post filter to the current render settings. If a RenderMan® renderer Video Post filter already exists, clicking this button will activate or deactivate the filter. This allows you to maintain your render settings when switching between the installed renderer and RenderMan® renderer.

Any render settings that CineMan does not take from the scene or Render Settings themselves can be set using the RenderMan® renderer Video Post filter

The RenderMan® Renderer Interface

The RenderMan® renderer interface, developed by Pixar, is designed to serve as a standard interface for passing scene rendering information to rendering applications. There are a number of well-developed renderers available, three of which are currently supported by CineMan.

Official RenderMan® renderer interface specifications are available directly from Pixar:

The RenderMan® renderer interface

Version 3.2.1

Nov., 2005

http://RenderMan.pixar.com/products/rispec

There are several books available which contain a practical explanation of the RenderMan® renderer interface:

The RenderMan® renderer interface contains two types of interfaces: A programming interface (API) and the RenderMan Interface Bytestream (RIB). In this introduction we will only explain the RIB interface since this is the one used by CineMan. RIB most commonly is written to files. The RIB files can be either ASCII or binary – we will only cover the ASCII files here, simply because they can be easily read, comprehended and edited.

To understand how scene information is transferred to the Renderer and how to effectively make use of this, some basic understanding of the RenderMan® renderer Interface is required. This chapter will provide a brief overview. However, for a deeper understanding, the aforementioned books are highly recommended for reading.

RenderMan® renderer transfers data from the modeling application to the rendering application using a number of statements that are passed to the renderer sequentially. During this process, the renderer maintains a so-called "Graphics State”. Each statement will either change the Graphics State or create a geometric primitive. Each primitive that is created will inherit the current Graphics State.

The Graphics State contains information pertaining to how an image should be rendered, the shaders applied, light sources and more. The information saved can be reused at a later point.

The Graphics State contains two types of information:

A Graphics State is always opened using a Begin Attribute and closed using an End Attribute (similar to HTML tags: text with in the "b” tags will be made bold). If no End Attribute exists, a valid RIB will not be created and the Graphics State will not be restored.

Begin and End Attributes can be nested within other Begin and End Attribute Tags but may not overlap (similar to HTML tags: text within the "b” tags will be made boldan "italics” tag can be nested within the "bold” tag

The most important set of tags is the WorldBegin/WorldEnd pair which defines the beginning of the current scene description. All Options must be set before WorldBegin and WorldEnd - settings cannot be made between WorldBegin and WorldEnd.

Note:
RenderMan® renderer does not consider the camera as part of the scene. Therefore the camera transformation must be defined prior to WorldBegin.

AttributeBegin and AttributeEnd are used to save and restore attributes. Attributes are stored in a "stack” (as are all other Graphics States’ elements). This means that the Attributes that are stored last will be restored first. This allows the saving and storing of Attributes to be nested. This concept is similar to the hierarchy in Cinema 4D. Think of an opened Cinema 4D hierarchy and "walk” through it line by line. Each time you come across a sub-hierarchy you can call up AttributeBegin and change surface assignment or visibility options. When you reach the end of the sub-hierarchy you can call up AttributeEnd and the changes made within the sub-hierarchy will be removed from the current Graphics State (but will still be associated with the primitives that were created in the meantime).

Understanding RenderMan® Renderers

Note:
RenderMan® renderer does not define how a renderer must work, it merely defines how data is passed on to the renderer. While most RenderMan® renderers share certain behavioral aspects they can also differ greatly in their behavior, depending on the manner in which they are implemented.

The following chapters apply, for the most part, to renderers that use the REYES architecture. The following REYES renderers are supported by CineMan:

A more complete description of how REYES renderers work can be found online (reference: Robert L. Cook, Loren Carpenter, and Edwin Catmull. "The Reyes Image Rendering Architecture.” Computer Graphics (SIGGRAPH ’87 Proceedings), pp. 95-102).

The REYES renderer "dices” each object up into a very fine grid of so-called "micro polygons”, each usually being about a single pixel in size. Shading takes place on the grid’s vertices (Displacement shader is called up first, then the Surface shader). Hidden surface removal takes place after shading. The size of the micro polygons is defined by the Shading Rate: A value of 1 micro polygon covers an area approximately the size of a single pixel; a value of 0.5 = 1⁄2 pixel; a value of 2 = 2 pixels, and so on.

It is generally better not to pass polygons to RenderMan® renderers since the renderers will dice them anyway. Dicing a Subdivision Surface object and subsequently passing the polygons to a renderer has the following disadvantages:

All of this has a number of implications for the rendering process:


  1. Each object is diced into a very fine grid, resulting in high-quality displacement with little overhead.
  2. Since shading takes place prior to hidden surface removal, objects will be shaded once and more-or-less "smeared” over the image when applying motion blur or depth of field. Hiding is much more efficient than shading (especially if shading includes such features as tracing shadows, reflections or Global Illumination rays), which means that these effects, while still being true 3D, are processed much faster.
  3. Users of other renderers might find it contradictory that a scene renders faster when depth of field and motion blur are applied extensively. This is due to an optimization procedure called "Motion Factor”.
    Motion Factor forces the renderer to take motion blur and depth of field into account when defining how fine the micro polygon grids should be diced. Grids that will be blurred will be diced less fine since they will appear blurred in the image. This saves a great deal of shading time and can lead to scenes containing a lot of blur being rendered faster than scenes containing no blur. A Motion Factor of 0 means no motion will be taken into account. The higher the value, the greater the reduction of shading detail in blurred regions will be. However, the default value of 1 will usually produce nice results.

The fact that objects are diced into micro polygons is also the reason why REYES renderers tend to render into small buckets. Dicing objects into fine grids will obviously take up quite a bit of memory.

To offset this, parts of the geometry are diced "as needed”, and when all buckets into which these parts fall are finished they can be thrown away. RenderMan® renderers usually do not use micro polygon geometry when tracing rays in a scene.

Note.
While Pixar’s PRMan and 3Delight are REYES renderers, AIR is not. Therefore, the processes explained here will not apply to AIR. AIR actually works more like the Cinema 4D renderer.

The RenderMan® renderer Interface Procedures and Protocol are:

Copyright ©copyright{} 1988, 1989, Pixar. All Rights Reserved.

RenderMan® renderer is a registered trademark of Pixar.

CineMan Commands

Use CineMan

Use this command to switch back and forth between the Cinema 4D render engine and the RenderMan render engine (i.e. what you used to do in the Render Settings’ "General" tab by clicking on the Render Engine option). This is a very practical command, especially when you assign a keyboard shortcut to it.

External Render...

Selecting this command will open the following dialog window.

These are in part the same parameters as the RIB export settings. Use these parameters to control the render engine’s output.

Display Preset

Select Non-Manifold Edges

This function is designed to help you select all edges of a given surface that has more than two adjoining edges with other geometry. RenderMan "Subdivision Surfaces" react allergically to such adjoining edges. This command lets you select these edges for modification.

Export Selected Shaders...

Use this command to export the materials of selected objects as RenderMan shaders. If an object contains numerous Texture tags these will be consolidated to a RenderMan shader.