Page tree

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

Compare with Current View Page History

« Previous Version 11 Next »

Contents

Overview

RenderMan diagnostics have a built-in configuration for live data that is always presented in the it tool, toggled on with the "V" (capital "vee") shortcut. For DCC plugins the live stats are also built in but are not enabled by default. This is a prototype feature which may require manual configuration as explained in Live Statistics Configuration.

Advanced users may also configure other presentation Listeners through the use of an "ini" configuration file.

Live Statistics Configuration

Each DCC has a window dedicated to Live Statistics presentation and configuration. Below is a snapshot of the configuration options as seen in RenderMan for Maya:

Enable Live Stats

Toggle this on to enable the built-in WebSocket server and connect the DCC's client window to the live data stream. This works best if only one render is connected at a time, on the default port.

WebSocket Port

In the event multiple renders are attempting to run live stats, each render will need a unique WebSocket port configured manually. The default port is 9723.

Connect/Disconnect

When the Enable button is toggled on a button is available for manually connecting and disconnecting from a running render.

Status

The bottom line of the configuration portion of the Live Statistics window is the current state of the connection, if the Live Stats Server is enabled.

Configuration options are limited as this is a prototype feature. As this feature evolves so will the ability to create custom configurations of live stats.




Configuration File

The stats configuration file (default name: "stats.ini") holds the basic default settings for the stats session, a list of listeners to attach, and per-listener rules for metric data to be observed by each listener.

Below is an example of a simple configuration file that enables an end-of-render JSON report, including checkpoints: 

checkpoint_stats.ini
# checkpoint_stats.ini
# Stats default configuration file
#
# Copy this file to: /a/path/of/your/choosing
# then run:
# prman -statsconfig /a/path/of/your/choosing/checkpoint_stats.ini

version 0.1

# Set this to 1 for extra information when parsing this file
verbose 0

# Stats processing log level.
# Range is 0 (none) to 5 (debug output). Default is 3 (warnings)
logLevel 3

# Session configuration
[Session]
name "Checkpoint Session"

# List of listeners which the session should create and manage.
[ManagedListeners]
    
# JSON output report listener
[Listener]
    type "jsonreport"
    name "jsonListener"
    outputFilename "checkpoint_stats.json"
	keepAllCheckpoints 1

[MetricRules]
    # Save all metrics to the JSON file, sampled once per second
    [Rule]
    regexp ".*"
    samplingInterval 1000

The stats configuration file is provided to the prman command via the "-statsconfig" option:

prman -statsconfig /path/to/checkpoint_stats.ini /path/to/rib/scene.rib

See JSON Report Listener reference page for JSON output configuration options.

Config File Search Order

The default configuration filename is "stats.ini" . If prman is not provided a config file via the -statsconfig option, or if the filename given is a relative filename, then the stats configuration search path order will be used to attempt to find a configuration file.

The stats system will search for the configuration file in the following order:

OrderLocationDefault
1

/stats/configpath setting in rendermn.ini

.:${RMANTREE}/etc
2

RMAN_STATS_CONFIG_PATH environment variable override

none
3prman -statsconfig </path/to/filename.ini>stats.ini

Configuration files are not merged if more than one is found. The last one found wins.

In other words, if you specify an absolute path on the command line it will override any requested search paths. This is a convenient way to do quick testing without having to modify an existing config file. Maybe you normally run with a certain configuration of listeners but then want to do a render with details printed to the console about a specific metric or group of metrics. 

For example, if you'd like to do a debugging run that temporarily overrides the default configuration:

setenv RMAN_STATS_CONFIG_PATH /my/test/directory
prman -statsconfig debug_stats.ini complicatedScene.rib

Which will load the stats configuration from "/my/test/directory/debug_stats.ini"


Listener control and configuration are not yet dynamic. In most cases a render must be restarted in order to see the configuration change. In the case of RfM and RfB, the application will need to be restarted.



DCC Configuration

Blender

RfB uses the prman command-line mechanism as described above.

Houdini

If the RMAN_STATS_CONFIG_PATH environment variable is set RfH will use that search path to look for a file named stats.ini.

If no file is found, or if that environment variable is not set then the default configuration will be used.

Katana

If the RMAN_STATS_CONFIG_PATH environment variable is set RfK will use that search path to look for a file named stats.ini.

If no file is found, or if that environment variable is not set then the default configuration will be used.

Additional configuration is also available in RfK through the following attributes:

prmanGlobalStatements.stats.sessionConfigSearchPath (default: ".")

prmanGlobalStatements.stats.sessionConfigFile (default: "stats.ini")

These attributes are currently not exposed in PrmanGlobalStatements, they must be set via AttributeSet or OpScript at the moment. Attribute names are subject to change.

Configuration OpScript Node
<katana release="4.0v2" version="4.0.2.000001">
  <node name="__SAVE_exportedNodes" type="Group">
    <node baseType="OpScript" edited="true" name="StatsConfiguration" ns_colorb="0.050000" ns_colorg="0.260000" ns_colorr="0.090000" ns_errorGlow="0.000000" ns_fromContext="legacy" selected="true" type="OpScript" x="143.024861" y="-253.437185">
      <port name="i0" source="PrmanGlobalStatements.out" type="in"/>
      <port name="out" type="out"/>
      <group_parameter name="StatsConfiguration">
        <string_parameter name="CEL" value="((/root))"/>
        <string_parameter name="location" value="/root/world/location"/>
       <group_parameter name="script">
          <string_parameter name="lua" value="&#0010;-- Default: &apos;stats.ini&apos;&#0010;local configFile = Interface.GetOpArg(&apos;user.configFile&apos;):getValue()&#0010;&#0010;-- Default: &apos;.&apos;&#0010;-- Can be overriden with RMAN_STATS_CONFIG_PATH&#0010;local configSearchPath = Interface.GetOpArg(&apos;user.configSearchPath&apos;):getValue()&#0010;&#0010;-- Default: $RMANTREE/lib/plugins/listeners &#0010;-- Can be overriden with RMAN_LISTENER_SEARCHPATH&#0010;local listenerSearchPath = Interface.GetOpArg(&apos;user.listenerSearchPath&apos;):getValue()&#0010;&#0010;Interface.SetAttr(&#0010;    &apos;prmanGlobalStatements.stats.sessionConfigFile&apos;,     &#0010;     StringAttribute(configFile))&#0010;&#0010;Interface.SetAttr(&#0010;     &apos;prmanGlobalStatements.stats.sessionConfigSearchPath&apos;, &#0010;     StringAttribute(configSearchPath))&#0010;&#0010;Interface.SetAttr(&#0010;    &apos;prmanGlobalStatements.stats.listenerSearchPath&apos;,&#0010;    StringAttribute(listenerSearchPath))&#0010;&#0010;"/>
        </group_parameter>
        <string_parameter name="executionMode" value="immediate"/>
        <string_parameter name="applyWhere" value="at locations matching CEL"/>
        <string_parameter name="applyWhen" value="during op resolve"/>
        <string_parameter name="modifierNameMode" value="node name"/>
        <string_parameter name="modifierName" value="modifier"/>
        <string_parameter name="resolveIds" value=""/>
        <number_parameter name="recursiveEnable" value="0"/>
        <string_parameter name="disableAt" value=""/>
        <string_parameter name="inputBehavior" value="by index"/>
        <number_parameter name="multisampleUserOpArgs" value="0"/>
        <group_parameter hints="{}" name="user">
          <string_parameter hints="{&apos;widget&apos;: &apos;fileInput&apos;}" name="configFile" value="stats.ini"/>
          <string_parameter expression="&apos;.:&apos;+getenv(&quot;RMANTREE&quot;, &quot;.&quot;)+&apos;/etc&apos;" hints="{}" name="configSearchPath"/>
          <string_parameter expression="getenv(&quot;RMANTREE&quot;, &quot;./&quot;)+&apos;/lib/plugins/listeners&apos;" hints="{}" name="listenerSearchPath"/>
        </group_parameter>
      </group_parameter>
    </node>
  </node>
</katana>


Maya

If the RMAN_STATS_CONFIG_PATH environment variable is set RfM will use that search path to look for a file named stats.ini.

If no file is found, or if that environment variable is not set then the default configuration will be used.

Solaris

The new stats are not yet supported in Solaris.