This chapter will give you an overview of what CineMan can and cannot export and how it is done. When CineMan exports a scene, either prior to rendering within Cinema 4D or via the RIB exporter, it tries to make sense of as many of the regular Cinema 4D rendering options as possible. Options that do not translate easily will be ignored. Options that Cinema 4D does not offer as part of its rendering options can be found in the Settings panel of the RenderMan® renderer Video Post Filter.
Since the RenderMan® renderer works differently from the internal renderer, not all settings will make sense in a RenderMan® renderer context. This chapter gives you an overview of settings that are exported to RenderMan® renderer and which aren‘t (and why).0
All the settings in this tab are taken into account by CineMan, with the exception of Field Rendering. There is no functionality in RenderMan® renderer for Field Rendering so this option will be ignored.
When rendering within Cinema 4D (and not exporting and rendering manually or using the External Render Command), all of these settings will work the same.
The anti-aliasing and filter settings will be ignored. Alternative settings are available in the RenderMan® renderer Video Post Quality tab.
Transparency, Reflection and Shadow settings are located in the RenderMan® renderer visibility settings, which are discussed with the Compositing tag. Generally speaking, visibility is used by RenderMan® renderer to determine whether or not certain computations are needed (if nothing is visible for reflection rays, there is no need for them to be traced). If Shadow is set to none, no shadow maps will be generated (or used by the light source Shaders).
Antialiasing settings will be completely ignored. Alternative settings are available in the RenderMan® renderer Video Post Quality tab.
Global Illumination / Caustics / Ambient Occlusion
Global Illumination Settings will be ignored completely. To enable Global Illumination, please refer to chapter 4.2.
Post Effects work only in part. The Lens Effects Filter is fully functional whereas Object Glow relies on additional information RenderMan® renderer cannot provide. Additionally, there are effects which do not make a lot of sense to use with RenderMan® renderer. Instead of using the Depth of Field or Motion Blur post effects we suggest you use RenderMan’s® built-in Depth of Field and Motion Blur functionalities. Scene motion blur will work as expected, but the RenderMan® renderer motion blur should still produce better results in most cases (and be much faster).
CineMan recognizes the following options:
The QuickTime VR camera modes are not supported, therefore the QuickTime options will ignored.
Geometry will usually be exported as a polygon mesh as Cinema 4D generates it. Perfect spheres are written as sphere objects wherever Cinema 4D draws a perfect sphere. There is special built-in handling of Subdivision Surfaces. Subdivision Surfaces will be exported as Catmull-Clark Subdivision Surfaces if they do not have weights and no deformations or other operations are carried out on the subdivided mesh (the control mesh can be deformed without problems).
Light sources are similar to Materials which are converted to light source Shaders (RenderMan® renderer shading language) upon export.
Many types of Area Light sources will be exported properly, but since Area Lights are an optional part of the RenderMan® renderer specifications, your renderer might not support them.
All Environment Object properties will be exported, albeit to slightly different locations.
The environment color and strength will be exported as an Ambient Light source with environment color serving as the light color and environment strength as intensity.
light source 1 ambientlight color 1 1 1 intensity 0.2
Enable Fog is one way to force CineMan to add a volume shader as an atmosphere shader to the scene. The volume shader handles the Fog effect exactly the way it would within Cinema 4D. In Renderman Atmospheric effects are calculated together with surface shading. Therefore, adding an Environment Object also forces CineMan to write a background plane, even if no Background Object is in the scene. Otherwise the fog would not affect parts of the scene where no object is visible. If Affect Background is checked, the background object will be colored accordingly.
It is possible to override the CineMan standard volume shader with a custom Shader by loading a volume shader into a RenderMan® renderer shader material and attaching it to the Environment Object. Note that any kind of volumetric effect will now need to be handled by your custom volume shader, as it will completely replace the default Volume Shader.
Sky / Floor / Background
These objects are handled within Cinema 4D as "physically impossible” objects. The Sky and Background Objects stretch an infinite distance from the camera and the Floor Object is an infinite plane. These kinds of Objects do not translate to RenderMan® renderer so they are represented as "sufficiently large/far away planes/spheres”.
CineMan exports standard Cinema 4D materials by converting them to the RenderMan® renderer shading language. This conversion does not take place for other internal or Plugin Materials. No one-to-one correspondence takes place between a material and a shader. There are two reasons for this:
All Material properties are converted and work as they do in Cinema 4D with the exception of Glow and Fog.
Most of the procedural texture shaders are converted into shading language. The following shaders are supported:
Because most Cinema 4D tags influence modeling and animation they are of no interest for export since their influence has already been applied to the objects in Cinema 4D. As a result, tags not specifically mentioned here will be ignored (e.g., Target Expression, Sun Expression, Look At Tag, etc.).
The Compositing tag defines which objects will be displayed in what way in certain parts of the rendering and is thus extremely important to the RenderMan® renderer renderer. However, most RenderMan® renderer implementations do not support the fine control that Cinema 4D offers, so it is important to know how CineMan translates the Compositing tag and which problems might arise. The way in which this tag is exported depends on the Renderer used.
Object buffers are fully supported. The object buffers are defined as user attributes in the form:
Attribute "user" "__objectbuffer2" 1
The above example states that all subsequent objects inheriting this attribute will be visible in object buffer 1. The actual definition of the object buffers (like all other buffers) happens in the shaders.
All shaders created by CineMan are created with output variables for all existing object buffers and pass the appropriate value to the display. The name of the attribute and the name of the shader output variable are identical, so passing the above user attribute to the display takes place in the shader as follows:
This happens automatically for shaders automatically generated by CineMan, but if you are using custom shaders, they need to explicit command do this to properly work with object buffers.
Stick Texture Tag
The Stick Texture tag stores each vertex’ position information when the Record button is pressed. If a Stick Texture tag is present, this data will be stored as a vertex primitive variable named "__Pref". In addition, a constant float variable named "__usePref" will be attached to the primitive and its value set to 1. This allows a shader to determine whether "__Pref" data is present and to use it instead of the actual geometric position. As with the object buffers, this is only meaningful if you are writing custom shaders that need to query this information.
Selections can be accessed from the shader. They are attached to the objects as float variables. The name of the variable is "sel_ (name of Cinema selection tag)". All special characters in the selection name will be replaced and CineMan makes sure the name is unique. The value of the variable is 0 for all polygons that are not contained in the selection, 1 for all other polygons. The value can be queried from a shader, like all other primitive variables.