Wednesday, July 23, 2008

MOSAIC feature ramblings - part 12

Part 12 - Mapping utilities tutorial:


This post represents the last of the MOSAIC feature ramblings series and will focus on actually building and rendering a simple scene using mapping.
In particular this tutorial will focus on the following tasks:


  • Build a basic scene in Blender highlighting RenderMan setup

  • Prepare shaders via materials

  • Set up MOSAIC

  • Set up an occlusion map pass

  • Set up an environment map pass

  • Set up a shadow map pass

  • Set up a caustic map pass

  • Set up camera DOF

  • Add, build and use RenderMan shader sources and fragments

  • Tweak RenderMan settings

  • Tweak shaders via MOSAIC's GUI



This tutorial will specifically target MOSAIC's mapping utilities to create advanced rasterization techniques, because of this I will be using Aqsis for this tutorial (since it's a pure REYES renderer). Before we begin be sure you have at least Blender 2.46, Aqsis 1.4 and CVS mosaic.py 1.39 or newer.

If you're impatient and, like me, just want to see the scene, you can download it here:http://www.dreamscapearts.com/Public/mapping.blend

Also the first image is the final render, so you can use it as reference for building your scene ;)

Building the scene


To start off with, we will need to build a scene in Blender keeping in mind a few details related to how MOSAIC and RenderMan work. To save a little time instead of outlining every step of this I'll just explain what's in the scene and show some scene shots. I'm assuming a basic knowledge of Blender if we're using external renderers :)

Here's what's in the scene, look at the pictures to the right for the layout:


  • 1024x1024 UV test grid image saved as a tif.

  • 1 mesh plane Scale 13.7x13.7, double sided, UV unwrap, with unique material.

  • 1 mesh Suzanne Scale 2.1x2.1x2.1, double sided, smooth, SDS mod with unique material.

  • 4 instances (alt d) Suzanne Scale 1x1x1, double sided, smooth SDS mod with unique material.

  • 1 standard spot light, energy 1.2, color RGB 1.0,0.9,0.8.

  • 1 standard camera with 35mm lens.


Now that we have the basic components and layout of the scene let's setup the RenderMan related settings. To start off with we need to assign the large Suzanne to a group, this is because later on we will assign it to caustic pass by itself.

Preparing shaders via materials


Next let's quickly outline the material settings:

For the plane use standard material :
  • Col RGB=1,1,1,

  • Amb=1 (sets occlusion),

  • Spec=0,

  • create image texture using tif image, disable map to Col, enable map to Disp, and set its Disp slider to 0.477 (this tells MOSAIC to use texture for micropoly displacements).

For big central Suzanne use standard material :
  • Col RGB=0.098,0.665,0.544,

  • Ref=0.709,

  • Spec=2,

  • Hard=309,

  • Amb=0.607,

  • RayMir=1,

  • Mir Fresnel=1.2,

  • IOR=1.3,

  • Transp Fresnel=2.0.

For the instanced Suzannes use standard material :
  • Col RGB=0.617,0.617,0.617,

  • Spec=0.184,

  • Hard=215,

  • Amb=1,

  • enable "Subsurface Scattering";
  • Scale=1,
  • IOR=1.3,
  • Error=0.05,
  • Col RGB=1,0.791,0,
  • Front=0.8,
  • Back=1.


One thing to note about the big Suzanne's material is you'll notice that we're setting the ray mirror and transp settings even though we're not enabling Ray Mirror and Transp. This is because if MOSAIC sees an environment map enabled on an object it will use its material's ray mirror and transp settings on the map as if it were raytraced. This allows more advanced control such as fresnel over the environment map. If an environment map is enabled you will need to first disable it before being able to use raytracing even if you enable the "Ray Mirror" and "Ray Transp" toggles (maps take precedence since they involve render passes to MOSAIC).

Just for a nice effect let's also enable some fog. Go to Blender's world material settings and set the HorRGB color to 0.289,0.542,0.817. Also enable "Mist" and set "Dist" to 30. The other default settings should work but you may want to play with them to get other effects :)

Finally we need to setup the camera for DOF by switching on the camera's Limits and adjusting the Dof Dist (yellow cross) so that it's near the front of the big Suzanne. This will tell MOSAIC where the focal point for the DOF will be.

Setting up MOSAIC


Now that we have the camera, lights, objects and materials setup now it's time to setup MOSAIC. Before we begin be sure to go to the "MOSAIC Settings" tab and make sure you have "Aqsis" selected in the preset menu.

In the previous posts I briefly mention the mapping utilities and several buttons related to this, let's describe this in a little more detail.

The mapping utilities collectively are just a series of buttons throughout MOSAIC interface that allow you to create and edit map related render passes. You can find these button connected to the thing they make a map for, such as occlusion maps with scenes, environment maps with objects, shadow and caustic maps with lights. Once clicked , you will be presented with a dialog that allows you to setup how you want the map to be generated and how you want its contents updated. When complete MOSAIC will generate a render pass entry in the "Project Setup" tab and a scene to use as the pass using the name of the object and a special extension as its name (such as lamp.sm, see post 5 for details). Once the pass is created the button for the utility will be pressed in (letting you know at a glance if the pass already exists), if you click on the utility button again the scene and all its render pass entries will be removed. You can click the "edit" button next to the utility buttons to edit an existing pass without destroying its contents. The mapping dialogs have a set of controls that are standard for all dialogs and some that are specific to the map type.

Here are some of the standard ones:

  • SizeX/Y - These are standard controls for all utilities and adjust the width and height of the map.

  • Use Shaders - This is standard for all utilities and if enabled the shaders for the scene are used in the pass. This should be turned on if the map needs to see displacement mapping or surface shader related transparency (for deep shadows, etc). This is best left off for faster render times unless needed.

  • Use Preview - This is standard for all utilities and if enabled the pass will use the framebuffer display (will popup a render window). This should only be enabled if you wish to see the passes render output.

  • Degrees/Scale - This is standard for all utilities and has different meaning depending on the object type. If this is an environment or point shadow pass then this controls the seams for the cube mapping, if this is a sun lamp then this is orthographic scale (usually good to start a 9 or so), if this is a spot light then it does nothing (lens determined from spot size). In the case of occlusion mapping this does nothing because the occlusion rig uses spot lights.

  • Shading Rate - This is standard for all utilities and sets the shading rate for the pass. This is by default set very high for lower quality but faster rendering (which is usually OK for support passes), set this lower for higher detail and higher for faster render times.

  • Group - This is standard for all utilities and combined with the other filter settings control how the generated pass is built from the beauty pass. MOSAIC creates the pass from the current scene which becomes the passes beauty scene, the filter settings at the end of all utility dialogs tell MOSAIC what to use from the beauty scene. Depending on the pass type, some of these controls are always forced to certain values and some are available to the user. This one (group filter), is the most commonly used and just tells MOSAIC to build this pass only from objects contained in the specified group.


Now that we've covered a little about how mapping utilities work let's use them to setup the passes for this scene.

Set up an occlusion map

Let's start by going to the "Scenes Setup" tab and pressing the "Enable Occlusion Mapping" button. The default setting for this should be fine.

Just in case you were wondering, here are what some of the controls do:

  • Hemisphere - This is exclusive to occlusion mapping and controls whether the occlusion rig is a hemisphere or a full sphere. MOSAIC does occlusion mapping by creating a mesh in the pass and dupliverting a spot light to it, thereby making a dome light rig.

  • Rig Segment / Rings - This is exclusive to occlusion mapping and controls the number of segment and rings used in the occlusion rig. The higher these numbers the more lights are used in the rig.

This will produce an occlusion map that Aqsis will use to calculate occlusion.

The occlusion color is set by the world's HorRGB color and its intensity is controlled by each material's Amb slider, just like Blender.









































Set up an environment map

Next click on the big Suzanne and let's give her an environment map!

Once you've clicked on the big Suzanne go to the "Geometry Setup" tab and click the
"Enable Environment Mapping" button.

Unlike last time instead of using all defaults enable the "Use EnvDOF" toggle and set
"fstop" to 600.

This will produce a glossy like reflection by using DOF to make objects further away
blurry (in this particular scene it's not very visible so could be skipped).









































Set up a shadow map

Next click on the light and go to the "Lights Setup" tab and press the "Enable Shadow
Mapping" button. The default settings should be fine for this, but note if we weren't
wanting displacements in shadows we could cut render times by disabling "Use Shaders".

Set up a caustic map

We also want to click "Enable Caustic Mapping" for this light but instead of using all the defaults set "Group" to "Group" (or whatever group you assigned the big Suzanne to
earlier).

We need to do this because by assigning a group to the filter, this pass will only use
objects in that group, in this case that's just the big Suzanne.

Since we only want caustics for that one glass object then this works well, if you were to
add more glass objects with caustics you would just assign them to the same groups.

Set up camera DOF

Finally the last thing we need to setup is the camera.

Click on the camera and go to the
"Cameras Setup" tab.

Enable the "Use DOF" toggle and
set the "fstop" to 240.

This tells the renderer to use DOF
and MOSAIC will set the focal point
to the camera's Dof Dist setting.

At this point we can now render a
basic scene but you'll probably
notice that the environment map
renders get "eyesplits" errors and
overall the rendering is slow.


Also the scene lacks the interesting procedural displacements.

Adding, building and using RenderMan shader sources


Let's go ahead and play with some RenderMan procedural shaders :) If you've installed a full version of MOSAIC you will have a folder in the installation called "shaders", let's use a couple of the shaders in there. In Blender setup a window to the "Text Editor", click "File" and browse to MOSAIC's "shader/displacements" folder and load two shader sources: "dented.sl" and "bubbly.sl". When shader sources are loaded into Blender's text editor MOSAIC can use them automatically, but in order to use them in the project we need shader fragments. To do this go to the "MOSAIC Utilities" tab and click "Generate Shader Fragment". Once clicked, select the "dented.sl" and "bubbly.sl" one at a time to automatically generate shader fragments for those shaders. Once shader fragments have been generated then you can select them in the "Shader Parameters" menu to manually edit them (and of course you can now use them in the "Materials Setup" tab).

Now that we have shader fragments let's edit them so they look like my example. Select "ds_bubbly" in the "Shader Parameters" menu and edit the following (including the square brackets):

  • Kd = [ -0.15 ]

  • bubsize = [ 0.5 ]

For the "ds_dented" the default values will be fine. Now that we have tweaked our shader values let's apply them. Select the big Suzanne and go to the "Materials Setup" tab (make sure this really is the material for the big Suzanne). Change the "Displacement Shader" entry to "ds_dented", this will apply the dented shader to this material which is applied to the big Suzanne. Next select one of the instanced smaller Suzannes, go to the material setup tab and change the "Displacement Shader" entry to "ds_bubbly". This will apply the bubbly shader to this material which is applied to all the instanced Suzannes.

That's it for using shader sources, very easy :)

Tweaking RenderMan settings


At this point everything should begin looking like the example render I've provided, but you're probably getting errors on the environment passes and things are a little slower than they should be, so let's look at optimizing this scene for RenderMan :)

Eyesplits happen when geometry passes through the eye plane of the camera (it helps to think of this as the near clip visually), when this happens the renderer has to continue to dice and split the geometry into finer pieces to create a clean edge. How many times this happens is controlled by the "eyesplits" control in the "Scenes Setup" tab, but you want to be careful because eyesplits are very slow and can usually be avoided. One of the first things to look for when getting eyesplits is whether the camera is too close to any geometry, when rendering environment maps the camera is placed at the center of where the object is (which is usually very close to other objects). To correct this one of the simplest things to do is decrease the DisplaceBound setting. The DisplaceBound setting basically extends the bounding box of an object to make extra room for displacement shaders, this is necessary because RenderMan renderers are really sensitive to the bounding box since it's used to determine how far to calculate the shaders. The bounds have to be manually adjusted because the renderer has no way of knowing how far the displacements are passing outside the bounds box. By default MOSAIC uses 0.100 for all objects which is actually very large (I did this so all displacements would work for beginners).

So, I said all that to say this, to remove the eyesplits error for the environment map and increase overall render performance change the "DisplaceBound" settings in the "Geometry Setup" tab for each object to these:

  • plane = 0.010

  • big Suzanne = 0.010

  • smaller Suzannes = 0.030

Another small tweak that can help performance depending on your machine and memory is to increase the "bucketsize" in the "Scene Setup" tab to 32. This determines how large each render bucket is and will usually use more memory the larger it is but render each bucket a little faster (up to a point).

Tweaking shaders via MOSAIC's GUI


Finally one of the last areas I want to discuss for tweaking the scene is manual shader parameters.

The built-in shaders that come with MOSAIC have several parameters that have no where to hook into Blender's interface.

One thing to keep in mind when tweaking these are that they are global in scope, this is because the same shader fragments are usually used by everything in the project (this is possible because tokens allow each object to pass different settings through the same fragment).

One way around this would be to copy the built-in fragment and apply it to the individual objects you wanted.

Here's some parameters on "ls_MOSAIClight" I've tweaked to improve the caustic effect by coloring, smoothing and adding a little procedural noise:

  • CausticAlpha = [ 0.7 ]

  • CausticColor = [ 0.0 1.0 0.6 ]

  • CausticSamples = [ 256 ]

  • CausticBlur = [ 0.12 ]

  • noisefreq = [ 1.5 ] (this turns on noise)

















Well that's it, thanks to everybody who's encouraged me to continue writing these blogs (it's been a lot of work).

Also a big thanks for everyone who's played a part in making MOSAIC better, it's absolutely amazed me how people's ideas, encouragements and bug reports have made MOSAIC far better then I ever planned :D

Thanks for reading, WHiTeRaBBiT

Saturday, July 19, 2008

MOSAIC feature ramblings - part 11

Part 11 - The Materials Setup tab and raytrace attributes:


MaterialsThe "Materials Setup" tab allows you to control different aspects of how MOSAIC exports Blender materials.

MOSAIC uses Blender materials as the place to apply RenderMan shaders and attributes related to surface shading, in particular you can apply surface, displacement, interior volume, exterior volume and area light shaders as well as both integer and string based raytrace attributes.

Since MOSAIC exports all material associations to geometry including multiple materials per object and datablock, there is a wide range of possibilities.

Traditionally RenderMan shaders are applied to individual objects, but with MOSAIC you can apply shaders to materials and assign multiple materials to portions of the same mesh allowing much more complex setup and rigging. The exporter automatically separates the mesh into different objects to be shaded, when using an area light shader the geometry is placed with the light declarations before any other geometry (area light shaders are for true geometry based illumination and is not the same as the area light type which is only a light array).



The "Materials Setup" tab also has a set of attribute menus for setting the material's raytracing behavior. In RenderMan you can use these attributes to define whether a surface is visible to specular (shadows), diffuse (occlusion) and photons (caustics). There are two forms of these settings with varying support by different renderers, the older string type and the newer integer type (see your renderer's documentation for detailed instructions on how these attributes work). MOSAIC uses your renderer preset selection (in "MOSAIC Settings" tab) to automatically setup all new material settings to use the type best suited for your renderer. By default all options are on so you can immediately begin using raytraced shadows, occlusion and caustics :)

Since MOSAIC provides tokens that can hook Blender controls to shader parameters (see "Shader Parameters" in the "MOSAIC Utilities" tab) the built in shaders automatically use the most common Blender material controls. At the moment only the most important controls are linked, and not all of them behave the same as Blender... but after this series of blogs my next big project is to add almost all light, material and world controls into the shader system with near identical behavior :)

Here's a list of which material controls are currently hooked to the default shaders:

  • Halo (this will turn all geometry including hairs into point clouds)

  • HaloSize (this not only controls point size but also the base width for hairs)

  • Add (this controls hair tip width relative to base width)

  • HaloPuno (if enabled MOSAIC attempts to export normals for hairs to create ribbons)

  • Shadeless

  • Shad A

  • Col RGB

  • Spec RGB

  • Mir RGB

  • A (Alpha)
  • Ref

  • Spec

  • Hard

  • GR: (light groups do not use "Exclusive")

  • Tralu

  • Amb (this controls both hemi light and raytraced and mapped occlusion)

  • Emit

  • Ray Mirror (this will enable raytraced reflections but if "Enable Environment Mapping" is enabled on any object using this material it will be used for reflections regardless of this toggle)

  • RayMir (this controls both raytracing and environment maps)

  • Fresnel (this controls both raytracing and environment maps)

  • Ray Transp (this will enable raytraced refractions but if "Enable Environment Mapping" is enabled on any object using this material it will be used for refractions regardless of this toggle)

  • IOR (this controls both raytracing and environment maps)

  • Fresnel (this controls both raytracing and environment maps)

  • Sub Surface Scattering (this enabled a depth map based sss effect therefore it's recommended you use this with shadow mapped lights, however you can manually adjust the SSSWidth parameter for ls_MOSAIClight to get similar result with raytracing)

  • Scale (adjusts the SSS strength)

  • Radius R

  • Radius G

  • Radius B

  • IOR (adjusts the sss map blurring)

  • Error (adjusts the sss map bias)

  • Scattering color

  • Col

  • Tex

  • Front

  • Back

  • Also the world "Ambient Occlusion" toggle enables a non cached raytraced occlusion using the worlds HorRGB color (mapped based occlusion is enabled in the "Scene Setup" tab independently of this toggle.

The surface shader also support texture channels. All "map to" channels are currently supported and work similar to Blender with one exception, only one texture of each channel type can be used for each material (I intend on changing this to match Blender's behavior by using arrays of texture names in the future). Something else to keep in mind with textures is that MOSAIC only supports the "image" texture type not any of the procedurals (that's what RSL is for), and that when loading an image you should probably stick with .TIFF since most RenderMan systems have problems with anything else. Also remember to use the "Texture Export Options" in the "Project Setup" tab to disable any textures you're not using.

Here's a list of which material texture controls are currently hooked to the default shaders:

  • UV (only uses this coordinate type, any other is default to primitives type)

  • ofsXYZ

  • sizeXYZ

  • All "Map To" channels supported

  • Col

  • Nor

  • Disp (controls displacement map height)

That covers most of the high points of the materials tab so let's go ahead and list its groups and controls:

Navigation and RIBset management:Materials Setup
This group of controls is at the top of the tab and allows you to select available cameras, updating all controls and Blender selections accordingly. It also has controls for creating, deleting and selecting RIBsets for this tab.

Here's a breakdown of the controls in this group:

  • Select Material - This will show a list of available materials for selection, once selected it will update all controls in this tab.

  • Select RIBset -This will show a list of available RIBsets for selection, once selected it will update all controls in this tab.

  • Create New RIBset -This will create a new RIBset from the current RIBset control settings and select it.

  • Delete This RIBset - This will delete the currently selected RIBset and select the DEFAULT RIBset.


Code management:
This group of controls is for attaching user created code fragments (text files with the "cf_" prefix in their names) to the beginning and end of different RIB blocks. As with the previous group, this group of settings is available in various configurations for all the remaining tabs.

Here's a breakdown of the controls in this group:

  • Material Archive -This menu allows you to specify whether the exported RIB code for cameras is exported into separate RIB archives or inlined into the object RIB.

  • Material Begin Code - This allows the insertion of custom code fragments into the beginning of the material block before anything MOSAIC exports.

  • Material End Code - This allows the insertion of custom code fragments into the end of the material block after anything MOSAIC exports.


Shader management:
This group of settings is available in various configurations for all tabs and is for selecting shaders for the selected material.

Here's a breakdown of the controls in this group:

  • Surface Shader - This allows you to select a surface shader from a list of available system or loaded shaders.

  • Notes - This will display a popup of any notes attached to shader fragments by the author (usually containing information about which Blender controls are used by this shader).

  • Displacement Shader - This allows you to select a displacement shader from a list of available system or loaded shaders.

  • Int Volume Shader - This allows you to select an interior volume shader from a list of available system or loaded shaders. Volume shaders are similar to atmosphere shaders but for filling volumes of space.

  • Ext Volume Shader - This allows you to select an exterior volume shader from a list of available system or loaded shaders. Volume shaders are similar to atmosphere shaders but for filling volumes of space.

  • Area Light Shader - This allows you to select an area light shader from a list of available system or loaded shaders. Area light shaders are for turning geometry into true area lights, but are only supported by a few renderers and usually require special shader ops.


Options and attributes:
This group of controls is for setting material related options and attributes for this material.

Here's a breakdown of the controls in this group:

  • transmission - Is this material visible to transmission rays (casts shadows)? This control uses both the new integer style (on or off) and the older string style (sets how shadows cast through material such as "transparent", "opaque", "shader", "Os").

  • specular - Is this material visible to rays created by trace() (receives shadows)? This control uses both the new integer style (on or off) and the older trace command.

  • diffuse - Is this material visible to color bleeding and occlusion (new integer style)?

  • photon - Is this material visible to photons such as caustics (new integer style)?

  • camera - Is this material visible to the camera (new integer style)?

  • Shading Model - Which shading model to use when scattering photons (newer style)?

  • transmissionhitmode - How is opacity for transmission rays determined?

  • specularhitmode - How is opacity and color for specular rays determined?

  • diffusehitmode - How is opacity and color for diffuse rays determined?

  • camerahitmode - Allows you to control culling of geometry behind camera's visibility.

  • Use Material in Animations - This option allows you to manually take advantage of a "speed hack" in MOSAIC. This option can drastically improve export times in an animation for any material that is not animated. If enabled then MOSAIC will only export this material on the first frame of this animation and will then just re-use it without recalculating any of its data.

  • Flip "U" Tex Coor - This allows you to manually flip the exported "U" UV value for this material (handy when certain image formats are working but inverted in the U direction on your renderer).

  • Flip "V" Tex Coor - This allows you to manually flip the exported "V" UV value for this material (handy when certain image formats are working but inverted in the V direction on your renderer).

  • Shader MBlur - This enables the motion blurring of the material's parameters. This is particularly helpful for blurring displacement animations (if your renderer supports this).

  • frames - This specifies the number of frames to blur across.

    Note : MOSAIC begins the blur by this number before the current frame so blur leads to current frame.


Well, that's it for the materials tab... next up a deeper explanation of using the mapping utilities :)

Thanks for reading, WHiTeRaBBiT

Friday, July 18, 2008

MOSAIC feature ramblings - part 10

Part 10 - The Lights Setup tab and light export types:


The "Lights Setup" tab allows you to control different aspects of how MOSAIC exports lights. The exporter can handle Lamp, Area, Spot, Sun, and Hemi lights in much the same way that Blender does, making reusing existing scenes and creating new ones an easy task. MOSAIC's built-in light shader has built-in hooks to most of Blender's light controls, and have been designed to behave very similar to Blender's (When re-writing the built-in shaders I intend on enhancing this even further). For all lights the shader supports "Dist", "Energy", all "falloff" types, "Sphere", "No Diffuse", "No Specular" and light RGB color. If your renderer supports raytracing then MOSAIC's built in light and material shaders can use "Ray Shadow", "SpotSi", "SpotBl", "Soft Size", "Samples" and "Threshold" for soft raytraced shadows. For doing shadow mapping the shader supports "Buf Shadow", "SpotSi", "SpotBl", "Samples", "Bias" and "Soft". Also since Blender's Python API does not have hooks for light textures, there are several parameters in the light shader that can be manually set to use projection mapping and a few features not available in Blender.


Since MOSAIC handles shadow mapping with scene passes, setting a light to "Buf Shadow" does not create the shadow map or passes, in order to create the shadow map you need to use the "Enable Shadow Mapping" and "Enable Caustic Mapping" buttons in the "Lights Setup" tab.

Once clicked you'll be presented with a dialog that allows you to setup exactly how you want the pass created. This offers more control and fine tuning than Blender's built in shadow mapping is capable of (such as enabling deep shadows, fine tuning which objects are in the map, fine tuning shading rates and other optimizations, etc). It also allows you to directly manipulate the shadow pass since it's created as a Blender scene.

Once a pass is created then it is always preferred even if "Buf Shadow" is disabled or "Ray Shadow" is enabled, and you need to disable the "Enable Shadow Mapping" button to remove it.

Mapping controls and setup is a lengthy topic so I'll stop here and discuss it latter in another blog :)




Shadow Mapping LightsA few other things worth mentioning is that MOSAIC can export cube shadow maps for the Lamp type (same thing as a point light), orthographic shadow maps for the Sun type (same thing as a distant light), Hemi light types control constant ambient light and color, Spot light types work just like Blender's and finally Area lights which export a diffused wide cone spot light array. This last type (area light) simulate Blender's area light by building a grid array of diffused spot lights with the same shape as Blender's area light. It uses the area light's "SizeX" and "SizeY" for the "Rect" shape and the "Ray Shadow" "SamplesX" and "SamplesY" for the number of lights in the array. This works for both ray traced and shadow mapped lights and since MOSAIC is building the light array (instead of the shader) you can even use your own shaders on this light type. Also because MOSAIC is using the "Buf Shadow" settings for shadow map tweaking and because Blender only offers these controls for the spot light type, you'll need to switch the light to spot to tweak these controls and then switch it back when using non spot shadow mapped lights. You can now also use lights in dupli systems and particles as raytraced or shadow maps, although if you use them in particles you will need to parent the particle emitter to the light in order for MOSAIC to see it. I should also mention that caustic mapping is still experimental and at the moment it does not take the shape of the occluding objects into account, only the shape of the inverted shadow with an option to control its blur, color, intensity and add noise.

Now let's begin listing the controls, I'll break them down by group explaining what each group does and then outline each control in that group.

Navigation and RIBset management:Lights Setup
This group of controls is at the top of the tab and allows you to select available geometry objects, updating all controls and Blender selections accordingly. It also has controls for creating, deleting and selecting RIBsets for this tab.

Here's a breakdown of the controls in this group:

  • Select Light - This will show a list of available lights for selection, once selected it will update the current active object selection and all controls in this tab.

  • Select RIBset - This will show a list of available RIBsets for selection, once selected it will update all controls in this tab.

  • Create New RIBset - This will create a new RIBset from the current RIBset control settings and select it.

  • Delete This RIBset - This will delete the currently selected RIBset and select the DEFAULT RIBset.


Code management:
This group of controls is for attaching user created code fragments (text files with the "cf_" prefix in their names) to the beginning and end of different RIB blocks. As with the previous group, this group of settings is available in various configurations for all the remaining tabs.

Here's a breakdown of the controls in this group:

  • Light Archive - This menu allows you to specify whether the exported RIB code for lights is exported into separate RIB archives or inlined into the scene RIB.

  • Light Begin Code - This allows the insertion of custom code fragments into the beginning of the lights RIB archive before anything MOSAIC exports.

  • Light End Code - This allows the insertion of custom code fragments into the end of the lights RIB archive after anything MOSAIC exports.


Shader management:
This group of settings is available in various configurations for all the remaining tabs and is for selecting shaders for the selection.

Here's a breakdown of the controls in this group:

  • Light Shader - This will select a light shader for this light.
  • Notes - This will display a popup of any notes attached to shader fragments by the author (usually containing information about which Blender controls are used by this shader).

Pass utilities:
This group of controls is for creating specialty render passes related to this light.

Here's a breakdown of the controls in this group:

  • Enable Shadow Mapping - This will generate a scene and render pass entry for a shadow map for this light using the current scene as its beauty pass. There will be a future blog covering this in more detail latter.

  • Edit - This will pop-up the shadow map dialog for editing the shadow pass if it exists.
  • Enable Caustic Mapping - This will generate a scene and render pass entry for a caustic map for this light using the current scene as its beauty pass. There will be a future blog covering this in more detail latter.

  • Edit - This will pop-up the caustic map dialog for editing the caustic pass if it exists.


Options and attributes:
This group of controls is for setting object related options and attributes for this light.

Here's a breakdown of the controls in this group:

  • Use Light in Animations - This option allows you to manually take advantage of a "speed hack" in MOSAIC. This option can drastically improve export times in an animation for any light that is not animated. If enabled then MOSAIC will only export this light on the first frame of this animation and will then just re-use it without recalculating any of its data.

  • Use Transform - In many standard RenderMan shaders there are two techniques for passing the light's transform data to light shaders, by setting the light transform before calling the shader or by passing "to" and "from" parameters to the shader. For maximum compatibility MOSAIC and its light shader supports both methods. When enabled a transform will be setup before calling the light shader and "to" and "from" will equal (0,0,0) and (0,0,1) respectively, when disabled no transform will be used and "to" and "from" will equal the light positional data.

  • Light MBlur - This enables the motion blurring of the light's transform motion, that is the change in the objects position, rotation or scale.

  • frames - This specifies the number of frames to blur across.

    Note : MOSAIC begins the blur by this number before the current frame so blur lead to current frame.


Well, that's it for the lights tab... next up is the "Materials Setup" tab :)

Thanks for reading, WHiTeRaBBiT

Thursday, July 17, 2008

MOSAIC feature ramblings - part 9

Part 9 - The Geometry Setup tab and geometry export types:


GeometryThe "Geometry Setup" tab allows you to control different aspects of how MOSAIC exports geometry objects.

The terminology of the tab can be a little confusing, by "geometry" I'm referring to any Blender object that contains mesh, surface (patch), curve or particle data (I plan on adding blobbies later on).

Something else to keep in mind is that Blender handles this in two parts, the object (container) and the geometry data (datablock), even though MOSAIC's GUI is showing both in one tab.

MOSAIC follows this structure by exporting the object RIB and geometry data RIB separately, this allows efficient sharing of geometry datablocks by multiple objects. This is why you'll see two archive methods and multiple code begin/end menus in the tab.

This topic represents the absolute heart of MOSAIC's export code and I could discuss this in fine detail for weeks, so instead let me try to summarize which geometry and its data can be exported:


Mesh and SDS modifier geometry
  • Double/single sidedness

  • Object/per face smoothing

  • Object/per face solid (flat)

  • Per vertex colors

  • Per vertex UV coordinates

  • Per face normals

  • multiple materials per object

  • multiple materials per face

  • SDS edge creasing

  • Export of all modifiers (be careful about type and ordering)

Particles
  • Multiple particle systems per object

  • Export of Hair, Emitter and Reactor types

  • Supports child particles

  • Showing and hiding the emitter geometry

  • Hair, point, object, group and billboard visualizations

Surfaces (aka in RenderMan as patch)
  • Multiple patches per object

  • Multiple material code is in place but Blender does not support yet

  • Support for both "Uniform" and "Endpoint" UV knots

  • Support for control point "Weights"

Curves
  • Currently ONLY supports Bezier curves (natively supported by RenderMan)

  • Multiple curves per object

  • Multiple materials per object

  • Supports "extrude" for creating ribbons

  • Supports node "tilt" parameter for ribbon control points

  • Uses nodes "radius" parameter to further tweak per node extrude

  • Support for cyclic curves (periodic, some renderers don't support this)

Dupli Objects
  • Support for DupliFrames, DupliVerts, DupliFaces, and DupliGroups

  • Support for dupli lights and cameras

  • Support for shadow mapping on dupli lights (basis for occlusion rigging)

  • Duplis make automatic efficient use of RIB archives

Now let's begin listing the controls, I'll break them down by group explaining what each group does and then outline each control in that group.


Navigation and RIBset management:
This group of controls is at the top of the tab and allows you to select available geometry objects, updating all controls and Blender selections accordingly. It also has controls for creating, deleting and selecting RIBsets for this tab.

Here's a breakdown of the controls in this group:

  • Select Geometry - This will show a list of available geometry objects for selection, once selected it will update the current active object selection and all controls in this tab.

  • Select RIBset - This will show a list of available RIBsets for selection, once selected it will update all controls in this tab.

  • Create New RIBset - This will create a new RIBset from the current RIBset control settings and select it.

  • Delete This RIBset - This will delete the currently selected RIBset and select the DEFAULT RIBset.


Code management:
This group of controls is for attaching user created code fragments (text file with the "cf_" prefix in their names) to the beginning and end of different RIB blocks. As the previous group, this group of settings is available in various configurations for all the remaining tabs.

Here's a breakdown of the controls in this group:

  • Object Archive - This menu allows you to specify whether the exported RIB code for the object is exported into a separate RIB archive ("Read Archive") or inlined into the scene RIB ("Inline Code"). For this tab there is also a "Delayed Archive" selection, this uses the delayed read archive call which only loads the RIBs for the object in memory if its bounding box is on camera (great for animations with lots of objects).

  • Datablock Archive - This menu allows you to specify whether the exported RIB code for the datablock (geometry data) is exported into a separate RIB archive ("Read Archive") or inlined into the scene RIB ("Inline Code"). For this tab there is also a "Instance Object" selection, this uses the ObjectBegin/End blocks just before each frame block in the main RIBs for instance calls. These make efficient use of memory but are limited as to which RIB code can be used in them (see the RiSpec or your renderer's manual) and are not as efficient to export.

  • Object Begin Code - This allows the insertion of custom code fragments into the beginning of the object RIB archive before anything MOSAIC exports.

  • Geometry Code - This allows the insertion of custom code fragments directly in the object RIB after the objects geometry (if any). This is handy for creating custom geometry code such as using Quadrics by hand.

  • Object End Code - This allows the insertion of custom code fragments into the end of the object RIB archive after anything MOSAIC exports.


Shader management:
This group of settings is available in various configurations for all the remaining tabs and is for selecting shaders for the selection.

Here's a breakdown of the controls in this group:

  • Atmosphere Shader - This will select an atmosphere (fog) shader that will only affect this object.
  • Notes - This will display a popup of any notes attached to shader fragment by the author (usually containing information about which Blender controls are used by this shader).

Also note that the built-in vs_MOSAICfog shader automatically uses all Blender's world Mist settings and uses the HorRGB color for the mist. This means that setting up and using the world mist should feel identical to using it in Blender.

Note : Immediately following this blog series I will be rewriting the built-in shader system so some shader related information may change.

Pass utilities:
This group of controls is for creating specialty render passes related to this object.

Here's a breakdown of the controls in this group:
  • Enable Environment Mapping - This will generate a scene and render pass entry for a environment map for this object using the current scene as its beauty pass. There will be a future blog covering this in more detail latter.

  • Edit - This will pop-up the environment map dialog for editing the environment pass if it exists.


Options and attributes:
This group of controls is for setting object related options and attributes for this object.

Here's a breakdown of the controls in this group:

  • Shading Rate - This will bypass the current scenes shading rate for this object only (0 uses scene's shading rate).

  • orient - This allows you to manually specify the geometry orientation as left or right handed (DEFAULT export nothing).

  • shading - This allows you to manually specify smooth or constant shading interpolation, see you renderer's docs for more info (DEFAULT export nothing).

  • para class - This lets you set which parameter class to use. These let you specify if "facevarying" or "facevertex" is used for UV and color mesh data which can produce very different result depending on your renderer.

  • DisplaceBound - This lets you specify how much displacement bound to use (0 exports nothing). This parameter is used by RenderMan to extend the objects bound box to make room for displacement shaders that push geometry out of bounds. This is necessary because most RenderMan renderers use the object bounds to limit shader calculations and will clip anything that falls out of bounds.

  • CoorSystem - This specifies the coordinate system to use for the displacement bounds, see you renderers docs for more info.

  • cull hidden - Whether or not to cull hidden primitives, see your renderer's docs for more info (DEFAULT exports nothing).

  • cull backface - Whether or not to cull backfaces, see your renderer's docs for more info (DEFAULT exports nothing).

  • dice binary - Whether or not to use binary dicing, see your renderer's docs for more info (DEFAULT exports nothing).

  • dice raster - Whether or not to use raster oriented dicing, see your rendere'rs docs for more info (DEFAULT exports nothing).

  • trace displace - Whether or not to raytrace displacements, see your renderer's docs for more info (DEFAULT exports nothing).

  • trace motion - Whether or not to raytrace motion blur, see your renderer's docs for more info (DEFAULT exports nothing).

  • Use Object in Animations - This option allows you to manually take advantage of a "speed hack" in MOSAIC. This option can drastically improve export times in an animation for any object that is not animated. If enabled them MOSAIC will only export this object on the first frame of this animation and will then just re-use it without recalculating any of its data. Even though this option is on by default (to eliminate confusion) you should always disable this for ALL objects not being animated for much improved export times :)

  • Extend Bounds Calculations - This is another speed hack and is disabled by default. Some RenderMan renderers require that particles and the motion of a motion blurred object within the shutter be contained in a bounds box. You can tell if this is the case if your renderer clips a motion blurred object or particles. The calculations for recalculating the bounds for these (especially for particles) can be excessive and not necessary for all renderers.

  • Transform MBlur - This enables the motion blurring of the objects transform motion, that is the change in the objects position, rotation or scale.

  • frames - This specifies the number of frames to blur across.

    Note : MOSAIC begins the blur by this number before the current frame so blur leads to current frame.

  • Geometry MBlur - This enables the motion blurring of geometry motion, that is the morphing of vertices or control points of the geometry.

    Warning : this can be very slow for dense geometry and it is recommended you stick with transform MBlur unless the geometry is morphing far and fast enough to actually see it blur.

  • frames - This specifies the number of frames to blur across.

    Note : MOSAIC begins the blur by this number before the current frame so blur leads to current frame.



Well, that's it for the geometry tab... next up is the "Lights Setup" tab :)

Thanks for reading, WHiTeRaBBiT

Wednesday, July 16, 2008

MOSAIC feature ramblings - part 8

Part 8 - The Groups Setup tab:


Groups SetupThe "Groups Setup" tab allows you to use code fragments and atmosphere shaders with groups of objects instead of just one at a time. This can prove especially helpful when dealing with large and complex scenes with lots of custom fragment work. The exporter achieves groups in RenderMan by wrapping every object in a group in a single AttributeBegin/End block, allowing custom code to be entered at the beginning or end of the block. This ensures that any custom code entered in the block is pushed and popped off the render state so they will not affect anything else outside of the group.

The exporter handles objects in groups in a very simplistic manner, it cycles through each group exporting each object in the group only once. This means that multiple or nested group setups are ignored and each object is only used in the first group it belongs to.

Also note that lamps must be declared before all geometry (unless dealing with area light geometry), so lamps will not be apart of any groups (however lights can still be put in groups for the material GR: control).

The group selection menu will only recognize groups that have something in them (empty groups are ignored), and groups cannot use RIBsets (due to some internal complexities). The "Group Block" archive menu has options unique only to groups. By default this option is set to "Ignore Group" for all new groups and must be set to "Attribute Block" before the group will be exported (although the objects in the group will still export but not as apart of a group).

Let's illustrate a simple example of using groups for scene setup. Let's say you're browsing the 3Delight docs and see a SSS example you want to try.

The example shows some RIB source using an attribute like this:

Attribute "subsurface" "scattering" [ 2.19 2.62 3.00 ] "absorption" [ 0.0021 0.0041 0.0071 ] "refractionindex" 1.5 "shadingrate" 16 "scale" 0.2

You read that this attribute simply needs to be placed before any geometry you want to use SSS. To do this in MOSAIC you would simply create a new text file and name it something like "cf_sss" and copy the code in it, then select it in the "Object Begin Code" menu in the "Geometry Setup" tab for the object you want to use SSS, simple! Now let's say you like the effect but want to experiment with 30 objects switching SSS on and off them individually, but you don't want to have to turn "cf_sss" code fragment on and off each one individually. This is where groups come in. You can assign the objects to a group and then attach the "cf_sss" to that group's "Group Begin Code", using Blender to add and remove objects from group without ever having to touch MOSAIC making experimenting much faster :)

Now let's outline the controls for this tab:

Navigation management:

Here's a breakdown of the controls in this group:

  • Select Group -This will show a list of available groups for selection, once selected all controls in this tab will update.

Code management:
This group of controls is for attaching user created code fragments (text file with the "cf_" prefix in their names) to the beginning and end of different RIB blocks. As with the previous group, this group of settings is available in various configurations for all the remaining tabs.

Here's a breakdown of the controls in this group:

  • Group Block - This menu allows you to specify whether to export the RIB code into an attribute block or completely ignore the group.

  • Group Begin Code - This allows the insertion of custom code fragments into the beginning of the group attribute block before anything MOSAIC exports.

  • Group End Code - This allows the insertion of custom code fragments into the end of the group attribute block after anything MOSAIC exports.

Shader management:
This group of settings is available in various configurations for all the remaining tabs and is for selecting shaders for the selection.

Here's a breakdown of the controls in this group:

  • Atmosphere Shader - This will select an atmosphere (fog) shader that will only affect the objects in this group.

  • Notes - This will display a popup of any notes attached to shader fragment by the author (usually containing information about which Blender controls are used by this shader).


Well, that's it for the groups tab... next up is the "Geometry Setup" tab :)

Thanks for reading, WHiTeRaBBiT

Tuesday, July 15, 2008

MOSAIC feature ramblings - part 7

Part 7 - The Cameras Setup tab:



The "Cameras Setup" tab allow you to set various properties of the camera for export. This tab will only work with Blender camera objects and will not be available for lights or objects set as active cameras, anything other than a camera as active camera is considered a specialty render pass and is setup in the "Scenes Setup" tab. The exporter automatically uses these camera controls under the Blender camera object "editing" tab:Camera Editing


  • Lens/Scale - Uses both the lens size and degrees as well as scale (for ortho).

  • Orthographic - Uses both standard and orthographic perspectives.

  • Dof Dist - Dof distance is used for the focal point if DOF is enabled in MOSAIC.

  • Dof Ob - Works by default from Blender.

  • Start - Just like Blender this sets the cameras near clipping.

  • End - Just like Blender this sets the cameras far clipping.




Something else to note is some RenderMan renderers can use something called a imager shader that can process both the background and entire render buffer. MOSAIC by default uses the built-in imager shader that simulates Blender's World background settings, although currently it only uses the HorRGB color to fill the background. After this blog series is complete I intend on rewriting the built-in shaders to fully simulate Blender's background settings (if possible). The imager shader can be applied to the camera (meaning different cameras could use different imager effects), and the the render pass scene setup tab so environment maps can match active camera.

The cameras tab is fairly straight forward so let's go ahead and list its groups and controls:

Navigation and RIBset management:
Cameras SetupThis group of controls is at the top of the tab and allows you to select available cameras, updating all controls and Blender selections accordingly. It also has controls for creating, deleting and selecting RIBsets for this tab.

Here's a breakdown of the controls in this group:

  • Select Camera -This will show a list of available cameras for selection, once selected it will update Blender's current selection and all controls in this tab.

  • Select RIBset -This will show a list of available RIBsets for selection, once selected it will update all controls in this tab.

  • Create New RIBset -This will create a new RIBset from the current RIBset control settings and select it.

  • Delete This RIBset - This will delete the currently selected RIBset and select the DEFAULT RIBset.



Code management:

This group of controls is for attaching user created code fragments (text file with the "cf_" prefix in their names) to the beginning and end of different RIB blocks. As the previous group, this group of settings is available in various configurations for all the remaining tabs.

Here's a breakdown of the controls in this group:

  • Camera Archive -This menu allows you to specify whether the exported RIB code for cameras is exported into separate RIB archives or inlined into the scene RIB.

  • Camera Begin Code - This allows the insertion of custom code fragments into the beginning of the camera block before anything MOSAIC exports.

  • Camera End Code - This allows the insertion of custom code fragments into the end of the camera block after anything MOSAIC exports.


Shader management:
This group of settings is available in various configurations for all the remaining tabs and is for selecting shaders for the selection.

Here's a breakdown of the controls in this group:

  • Image Shader - As mentioned previously this selects the desired imager shader for this camera.

  • Notes - This will display a popup of any notes attached to shader fragment by the author (usually containing information about which Blender controls are used by this shader).


Options and attributes:
This group of controls is for setting camera related options and attributes for this camera.

Here's a breakdown of the controls in this group:

  • Camera MBlur - This enables camera motion blur.

  • frames - This specifies the number of frames to blur across.

    Note : MOSAIC begins the blur by this number before the current frame so blur leads to current frame.

  • Use DOF - This enables the depth of field effect (uses the Blender's camera Dof Dist control for focal point).

  • fstop - This sets the RiDepthOfFeild "fstop" parameter (see your renderers docs or the RiSpec for more details).

  • focalL - This sets the RiDepthOfFeild "focal length" parameter (see your renderer's docs or the RiSpec for more details).

  • Shutter min - This sets the RiShutter "min" parameter (see your renderer's docs or the RiSpec for more details).

    Note : if set to 0 RiShutter will not be exported.

  • Shutter max - This sets the RiShutter "min" parameter (see your renderer's docs or the RiSpec for more details).

    Note : if set to 0 RiShutter will not be exported.

Well, that's it for the cameras tab... next up the "Groups Setup" tab :)

Thanks for reading, WHiTeRaBBiT

Monday, July 14, 2008

MOSAIC feature ramblings - part 6

Part 6 - The Scene Setup tab and display drivers:



The "Scene Setup" tab represents the currently selected Blender scene, and since MOSAIC uses scenes as passes most of the settings here are related to render passes. All tabs from this point forward begin having a direct relationship to Blender's GUI and data structure, meaning selections in Blender will affect MOSAIC and selections in MOSAIC affect Blender. This becomes especially helpful when dealing with complex scenes where mouse selection is difficult and the outliner clutters the project space... for instance if dealing with lights just leave the "Lights Setup" tab open, select the light you want from a list of only lights, not sure it was right? just spin the 3D view around and see what was selected, etc. This also means that all settings in each tab are written to whatever is selected (its datablock properties), so whatever you're setting up you can be sure that those settings will link and append as you'd expect into other projects. To aid in navigating, MOSAIC also color codes each tab, and controls in each tab are grouped visually according to similar tasks ;)

Render passes in MOSAIC also automatically use Blender's scene format controls "SizeX", "SizeY", "AspX", "AspY" and the Anim controls "Sta" and "End".

Now let's begin listing the controls, I'll break them down by group explaining what each group does and then outline each control in that group.

Navigation and RIBset management:Scene Setup
This group of controls is at the top of this and all the remaining tabs in MOSAIC and allows you to select available scenes, updating all controls and Blender selections accordingly. It also has controls for creating, deleting and selecting RIBsets for this tab.

Here's a breakdown of the controls in this group:

  • Select Scene -This will show a list of available scenes for selection, once selected it will update Blender's current scene and all controls in this tab.

  • Select RIBset -This will show a list of available RIBsets for selection, once selected it will update all controls in this tab.

  • Create New RIBset -This will create a new RIBset from the current RIBset control settings and select it.

  • Delete This RIBset - This will delete the currently selected RIBset and select the DEFAULT RIBset.


Code management:
This group of controls is for attaching user created code fragments (text file with the "cf_" prefix in their names) to the beginning and end of different RIB blocks. As the previous group, this group of settings is available in various configurations for all the remaining tabs.

Here's a breakdown of the controls in this group:

  • Frame Archive -This menu allows you to specify whether the exported RIB code for scenes is exported into separate RIB archives or inlined into the main RIB.

  • Header Begin Code -This allows insertion of custom code fragments into the beginning of the header block which is after all of MOSAIC's Options (search paths, etc), but before the RiFrame blocks.

  • Frame Begin Code -This allows the insertion of custom code fragments into the beginning of the RiFrame block (this is immediately after the FrameBegin call, before anything MOSAIC exports).

  • World Begin Code - This allows the insertion of custom code fragments into the beginning of the RiWorld block (this is immediately after the WorldBegin call, before anything MOSAIC exports).

  • World End Code - This allows the insertion of custom code fragments into the end of the RiWorld block (this is immediately before the WorldEnd call, after anything MOSAIC exports).

  • Frame End Code - This allows the insertion of custom code fragments into the end of the RiFrame block (this is immediately before the FrameEnd call, after anything MOSAIC exports).


Shader management:
This group of settings is available in various configurations for all the remaining tabs and is for selecting shaders for the selection.

Here's a breakdown of the controls in this group:

  • Atmosphere Shader -This will select an atmosphere (fog) shader that will affect everything in this scene. RenderMan and MOSAIC allows multiple types of atmosphere shading such as shading an entire scene in the scene tab, or individual objects in the geometry tab, or groups of objects in the group tab, and materials using interior and exterior volume shading. Be aware of this as you setup your scene, for instance if you only want a particular object to have fog you would disable the shader in the scene tab and enable it in the geometry tab of that object, etc.
  • Notes - This will display a popup of any notes attached to shader fragment by the author (usually containing information about which Blender controls are used by this shader).

Also note that the built-in vs_MOSAICfog shader automatically uses all Blender's world Mist settings and uses the HorRGB color for the mist. This means that setting up and using the world mist should feel identical to using it in Blender.

Note : Immediately following this blog series I will be rewriting the built-in shader system so some shader related information may change.


Pass utilities:
This group of controls is for creating specialty render passes related to this scene.

Here's a breakdown of the controls in this group:

  • Enable Occlusion Mapping -This will generate a scene and render pass entry for occlusion depth mapping using the current scene as its beauty pass. There will be a future blog covering this in more detail latter.

  • Edit - This will pop-up the occlusion map dialog for editing the occlusion pass if it exists.

  • Enable IBL Environment Map -This will generate a scene and render pass entry for making a global cube map for things like image based lighting or global environment maps, etc. There will be a future blog covering this in more detail latter.

  • Edit -This will pop-up the IBL map dialog for editing the IBL pass if it exists.

  • Custom Render Call - This allows you to manually type the call to the renderer for this pass only, this is handy for doing custom parameters to the renderer on a pass-by-pass basis (such as disabling threads of a photon map pass).


Options and attributes:
This group of controls is for setting frame and world related options and attributes for this pass.

Here's a breakdown of the controls in this group:

  • SizeX -This will bypass Blender's SizeX control if greater then 0 and allows for a much higher image width of up to 1000000000.

  • SizeY -This will bypass Blender's SizeY control if greater then 0 and allows for a much higher image height of up to 1000000000.

  • Steps -This sets how many steps to skip in-between frame animations.

  • Shading Rate - This sets RiShadingRate (0 is off, won't export).

  • eyesplits - This sets the eye plane failure detection (0 is off, won't export).

  • gridsize - This sets the number of micropolies shaded at once (0 is off, won't export).

  • bucketsize - This sets the render bucket size (0 is off, won't export).

  • Xsamples - This sets RiPixelSamples xwidth (0 is off, won't export).

  • Ysamples - This sets RiPixelSamples ywidth (0 is off, won't export).

  • Filter - This sets RiPixelFilter type (blank is off, won't export).

  • Xwidth - This sets xwidth for filter (off if no filter).

  • Ywidth - This sets ywidth for filter (off if no filter).

  • Xwidth - This sets xwidth for filter (off if no filter).

  • Hider - This sets the Hider to use (DEFAULT doesn't export anything).

  • Emit - This sets hiders emit value (-1 is off, won't export).

  • Jitter - This sets hiders jitter value (-1 is off, won't export).

  • Irr maxerror - This sets the irradiance maxerror attribute, see renderer's documents for details (0 is off, won't export).

  • Trace maxdepth - This sets the trace maxdepth option, see renderer's documents for details (0 is off, won't export).

  • Shadow bias - This sets the global shadow bias option, see renderer's documents for details (0 is off, won't export).

  • Trace bias - This sets the global trace bias attribute, see renderer's documents for details (0 is off, won't export).

  • Photon globalmap - This sets the photon globalmap attribute, see renderer's documents for details (0 is off, won't export).

  • Photon causticmap - This sets the photon causticmap attribute, see renderer's documents for details (0 is off, won't export).


Mapping Utility Controls:
This group of controls are normally setup and used by different autopass dialogs throughout MOSAIC's GUI automatically, they are responsible for controlling how MOSAIC handles the exporting of shadow and environment maps. You should rarely need to access these directly but are provided to offer full control in the spirit of the rest of MOSAIC's design decisions.

Here's a breakdown of the controls in this group:
  • Shadow - This will pop-up a dialog for entering parameters for MakeShadow (normally automatically filled in by autopass dialogs).

  • LatLong - This will pop-up a dialog for entering parameters for MakeLatLongEnvironment (normally automatically filled in by autopass dialogs).

  • Cube - This will pop-up a dialog for entering parameters for MakeCubeFaceEnvironment (normally automatically filled in by autopass dialogs).

  • Texture - This will pop-up a dialog for entering parameters for MakeTexture (normally automatically filled in by autopass utilities).

  • Projections: - This menu allows you to select the active camera projection type for active cameras that are lights or objects. Active cameras as lights are used for shadow mapping and active cameras as objects are used for environment mapping (usually this control is setup automatically by the autopass dialogs).

  • Degrees/Scale - The degrees for projection camera types and scale for orthographic projection types (only used if active camera is not a camera).

  • Near Clip - Cameras near clipping (only used if active camera is not a camera).

  • Far Clip - Cameras far clipping (only used if active camera is not a camera).

  • Dupli Index - This is used to select which object/light perspective position to use if active camera is in a dupli system (normally automatically filled in by autopass dialogs).

  • Area Index - Similar to the dupli index, this selects which x/y samples perspective position to use if this is an area light (area lights are translated into light arrays using the x/y samples to determine grid divisions, normally automatically filled in by autopass dialogs).

  • EnvDOF - This will enable the DOF effect for this object active camera to fake glossy reflections for environment maps (normally automatically filled in by autopass dialogs).

  • focalL - The focal length for DOF if EnvDOF is enabled.

  • fstop - The fstop for DOF if EnvDOF is enabled.

  • dist - The view distance for DOF if EnvDOF is enabled.

  • Image Shader - The image shader for active object camera.

  • Autopass Filter Setup - Shows the filter pop-up with a series of filters that control how this scene is updated if it is a autopass. MOSAIC uses these settings to determine how to rebuild this scene for updating against its beauty scene if its for shadow maps, environment maps, etc (normally automatically filled in by autopass dialogs).


Display Setup:
This group of controls is responsible for managing the export of display codes. RenderMan uses display codes to determine what to render to and is capable of not only writing images to file but also to framebuffers for preview and arbitrary output data. To make this as unrestricted as possible MOSAIC allows the user to directly type the display code exactly as they want it, then enabling and disabling them as they like. To get the user up and running quickly most MOSAIC renderer presets automatically include the default file and framebuffer displays so a render will preview and write to file automatically.

Here's a breakdown of the controls in this group:

  • Quantize -This will export RiQuantize for HDRI images (blank is off, won't export).

  • Add Display Driver - This will add a new file display to the display list as a starting place for user setup.

  • Use -This will enable or disable the display code on the same line (notice that this is achieved by simply adding a '#' to the beginning of the code, this is nice because it will still be exported in RIB and can be re-enabled in a text editor later).

  • Display Code - This contains the actual display code and can be edited as you see fit. Also note the use of the '#' for enabling and disabling the code and the use of the <###> token for inserting frame numbers in file names.

    Note : Even though the default display codes contain '+' on every line for appending, the exporter will actually strip it for the first display code by default.

  • Del - Deletes the display code on the same line.


Well that's it for the scene setup tab, as promised I'll cover the autopass dialogs for occlusion and IBL on a latter post ;) Next up cameras setup tab.

Thanks for reading, WHiTeRaBBiT

Saturday, July 12, 2008

MOSAIC feature ramblings - part 5

Part 5 - The Project Setup tab and render passes:


The "Project Setup" tab presents a series of controls for setting aspects of the current project. The term "project" is unique to MOSAIC since Blender has no project settings or internal datablocks (the lowest structures in Blender are scenes).

Since scenes are render passes to MOSAIC a project tab is necessary to have a global place for scenes to be managed as passes. This is also a convenient place to put settings global to all exported RIBs.

Before I begin outlining the controls for this tab I need to talk a little about render passes and RIBsets.

Render Passes:
We've learned from earlier posts that render passes are Blender scenes to MOSAIC. We've also hinted that these scenes can be managed by MOSAIC, so let's expound on that.

There are essentially 3 types of render passes to MOSAIC:

  • Generated map autopasses recognized by their names and extensions.

  • Generated user autopasses recognized by their extensions.

  • Manually linked scenes as passes (no special naming).

Generated map passes are automatically made by MOSAIC and are for things like shadow maps, occlusion maps, etc. They are created and edited by various controls in MOSAIC's interface and are named using the name of the object they are made for with an added special extension. So for example if you use the "Enable Shadow Mapping" dialog in the "Lights Setup" tab for a lamp called "mylamp", MOSAIC would generate a scene called "mylamp.sm" and add its entry to the render pass list.

MOSAIC recognizes five scene extensions for map autopasses:

  • ".sm" - shadow map scene

  • ".cm" - caustic map scene

  • ".om" - occlusion map scene

  • ".em" - environment map scene

  • ".wm" - world environment map scene

Generated user autopasses are created by a tool in the "MOSAIC Utilities" tab and allow the user to create a pass that's maintained by MOSAIC, but can be crafted for custom use (such as building an occlusion cache pass, etc). These passes are identified by MOSAIC because they have the ".ap" extension.

Manual passes are nothing but normal scenes linked to the render pass list and contain no filtering or automation. They are very flexible because MOSAIC does not mess with them (so anything is possible), but do not always update properly when the beauty scene is updated (such as adding objects to the beauty scene).

I've mentioned several times that autopasses are "maintained" by MOSAIC. By "maintained" I mean that the contents of these scenes are automatically updated according to filter settings before they are exported. This "filter" concept is the corner stone of autopasses. How this works is every scene can have a series of settings applied to them that tell MOSAIC how to filter the scene, these filters contain things like which scene this pass is to be updated from, which object will be the active camera, only link objects in certain groups, block all lights, block all objects, use a particular RIBset, etc. Before MOSAIC exports a scene it will look to see if it's an autopass (by its extension) and if so then filter its contents according to its filter settings before it's exported (unless you disable the "Export Render Passes" toggle in the actions tab). Both map and user autopasses use the same filter mechanism but map autopasses have several filter settings automatically filled in.

Even though this all sounds very complicated in practice all you really need to do for most projects is hit the button for the type of map you want (depending on where you are in MOSAIC) and it'll all be done for you ;)


RIBsets:
RIBsets are a simple mechanism to have multiple "sets" of RenderMan settings per MOSAIC tab (ergo "RIB" "set"). Scene, Camera, Geometry, Light, and Material tabs can all use RIBsets. RIBset controls are located at the top of each tab and have buttons for creating, deleting and selecting RIBsets. Any changes to any controls in the tab are applied to the current RIBset, all controls are updated by the selection of other RIBsets. All RIBsets have a "DEFAULT" selection that cannot be deleted, if a default RIBset is deleted all controls in it are reset to their default states. RIBsets have several purposes:

  • To allow the user to have multiple setups (such as multiple shader selections on one Blender material).

  • To allow multiple scenes with shared objects to use different settings (such as having shadow map passes with no surface shaders on shared materials).

  • To have potentially hundreds of settings in a single scene.

Occlusion


The last point is very important for occlusion mapping. Occlusion mapping involves having hundreds of spot lights in a hemisphere pointed at the center of the scene, each spot light needs to have its own render pass. Since we don't want hundreds of render passes entries we need a better way to do this. The best way to handle the setup for that many coordinated lights is by parenting a mesh to a light and using Blender's "DupliVert" feature thereby creating a light at every vertex of the mesh.

MOSAIC has a feature so that if a light is made an active camera and if that light is part of a dupli system then you can set the "Dupli Index" number in the "Scene Setup" tab to set which dupli light perspective to use for the camera. By itself this isn't very helpful but combined with RIBsets you can create hundreds of RIBsets for the "Scene Setup" tab for every index into the dupli system. Next if you set the render pass to use "RIBSETPASSES" then MOSAIC will export every RIBset (except DEFAULT) in the scene as a separate pass. Using this mechanism it's possible to create hundreds of passes in a single compact scene with just one render pass entry.

Again even though this sounds complicated all you have to do in reality is click "Enable Occlusion Mapping" in the "Scene Setup" tab and MOSAIC will build all of this for you ;)


Now let's outline the controls in this tab.

Project Folder:
This is the name of the folder to export the project into (this folder if created in the "Export Directory" set in "MOSAIC Settings"). Remember to change this for each project if you want multiple projects running (such as rendering one while you edit another).

Search Paths:
All options in this category allow you to control which paths are used in the RIBs, see your renderer's documentation for a more detailed description of searchpaths.

Note : If you blank a path it will reset to its default, if you type in "NONE" then it will not be exported.

Texture Export Options:
This utility allows you to set how a each texture is handled by MOSAIC. Their options are:

  • Completely ignore - Do not export or optimize this texture.

  • Export only - Simply export this texture, but do not optimize it.

  • Export and Optimize - Both export and optimize it for the renderer.

  • Export into Environment Map - Export map but optimize it as a lat/long env map.

Create Render Pass:
This button will generate a blank render pass. This control and everything below it are were render passes are managed in MOSAIC. When a render pass is added you will get a row of controls for managing that pass. Passes are exported and rendered from top down with the beauty pass normally being the last in the list. Render passes can be added manually or automatically created and ordered by autopass utilities throughout MOSAIC. When passes are automatically created they are stacked in this order:

  • occlusion map passes

  • shadow map passes

  • caustic map passes

  • environment map passes

  • world map passes

  • user autopasses

  • beauty passes

They are stacked in this order so that shadows are calculated before environments which are before final passes. Also note that MOSAIC can support multiple beauty passes. When a pass is created you will see a row of these controls for each pass:

  • "Use" - This lets you enable or disable the export of this pass.

  • "Select Scene" - This lets you select which Blender scene is used for this pass.

  • "Select RIBset" - This lets you select which RIBset to set for this scene for export. Use this to select a custom created scene setups or use RIBSETPASSESS to render every RIBset in scene as a separate pass (DEFAULT RIBset is ignored).

  • "Sta" - Set this to the starting animation frame for this pass (if 0 then uses scenes "Sta" control in Blender).

  • "End" - Set this to the ending animation frame for this pass (if 0 then uses scenes "End" control in Blender).

  • "Up/Dn" - Move this pass up or down the pass list to change its export and render order.

  • "Del" - Delete this pass entry (does not delete the scene however).


That's it for the project tab, next blog will be focused on the "Scene Setup" tab and will probably be broken into two blog posts (since it's such a large topic).

Thanks for reading, WHiTeRaBBiT