Page tree

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Contents

A lot of aspects of RenderMan for Blender such as defaults and labels can be customized using JSON (.json files).

Configuration Paths

To find configuration JSON files, RfB will check the following environment variables in order:

  • RFB_SITE_PATH
  • RFB_SHOW_PATH
  • RFB_USER_PATH

Each environment can also contain multiple, color-separated, paths (on Windows, these are semi-colon separated paths).

You can also specify a config path in the RenderMan for Blender preferences, under the Advanced section (requires restart).


rfb.json

This json file configure certain settings such as your site's Tractor engine configuration, directory mappings, or adding extra user tokens. Here's an example:

{
    "$schema": "./schemas/rfbSchema.json",
    "tractor_cfg": {
        "engine": "tractor-engine",
        "port": 80,
        "user": ""
    },    
    "dirmaps": {
        "seahome_to_z": {
            "from": "/seahome/",
            "to": "Z:/",
            "zone": "UNC"
        }
    },
    "woffs": [
        "R90007"
    ], 
    "user tokens": ["PROD", "SHOT"]
}

Configuring Panel Properties

The properties in some RenderMan panels can be configured to use different defaults. Here's an example.

{
    "name": "rman_properties_scene",
    "params": [
        {
            "name": "motion_blur",
            "label": "Motion Blur (Blurry!)",
            "type": "int",
            "default": 1,
            "help": "TURNS ON MOTION BLUR!"
        },
        {
            "panel": "RENDER_PT_renderman_custom_options",
            "name": "user_foobar",
            "label": "FooBar",
            "riopt": "user:foobar",
            "type": "int",
            "default": 0,
            "help": "This is a test user option"
        }        
    ]
}

"name", should be the name of the configuration we are interested in overriding (in this case it's the scene properties). "params" should follow name. In our example, the first property is an existing one and we are overriding the label, the default, and the description. If we are adding a new property, we also need to specify which panel this property should be drawn in; in this case we want to add it to the scene's custom options panel. This example also shows how we can add a RenderMan user option. Note, the name of the json file itself in this case does not matter; as long as the first "name" matches an already known configuration it will work. Here's what the result should look like after applying the above override:

As you can see, the label for Motion Blur has changed along with its default. There is also a new FooBar user option under Custom Options.


To get a list of configurable panels, you can run the following code in Blender's Python console:

import RenderManForBlender.rfb_api as rfbapi
rfbapi.GetConfigurablePanels()


Shader Defaults

We can also the override the defaults of any of RenderMan's shaders (bxdf's, patterns etc.)  Here's an example where we override parameters in PxrEnvDayLight:

{
    "name": "PxrEnvDayLight.args",
    "params": [
        {
            "name": "sunDirection",
            "default": [0.0, 0.0, 1.0] 
        }
    ]
}

In this case we want to change the default for the sunDirection to default to pointing up in the Z-direction. "name" should be the name of the Args file we want to override, follow by the parameters we want to configure. Note, the name of the json file itself in this case does not matter; as long as the first "name" matches an already known shader Args file it will work.

Display Channels

Finally, we can also add custom display channels that can be used in AOVs. Note, the name of this JSON file does matter; it must be named: rman_dspychan_definitions.json. Here's an example where we add a new channel called MyAOV.

{
    "channels": {
        "MyAOV": {
            "description": "This a custom AOV",
            "channelType": "color",
            "channelSource": "MyAOV",
            "group": "Pixar"
        }        
    }
}

Custom Shaders

You can also add your own custom shaders by using the environment variables RMAN_SHADERPATH for OSL shaders and RMAN_RIXPLUGINPATH for C++ shaders. For the latter, an accompanying Args file is required. 

Other Examples

You can also look at some other examples of JSON config files in Blender's Text Editor , under the Templates menu.