ID 416898 - OutputChannelDefine DAP does not respect `attrRoot` scope

Follow

Problem summary:

The OutputChannelDefine DAP does not respect the DAP attrRoot scope. If output channel definition attributes exist in the incoming scene, the top-level __meta attribute is populated even if the attrRoot does not demand it.

Steps to reproduce:

  1. Open the attached project (which makes use of RenderMan for Katana).
  2. In the Scene Graph tab, select the /root location.
  3. In the Attributes tab, check the cookDaps attribute set at /root by the OpScript node.
    The OpScript node does the following:
    1. Sets cookDaps.none to be the group attribute returned by InterfaceUtils.CookDaps("does_not_exist"), which should be empty, and
      • 
        Interface.SetAttr("cookDaps.none", InterfaceUtils.CookDaps("does_not_exist"))
    2. Sets cookDaps.all to be the group attribute returned by InterfaceUtils.CookDaps(""), which should contain a number of attribute defaults and hints set by various DAPs:
      • 
        Interface.SetAttr("cookDaps.all", InterfaceUtils.CookDaps(""))

Expected behaviour:

The cookDaps.none attribute should be empty, since no DAPs should produce defaults or hints for attributes at or beneath the arbitrary does_not_exist name.

Actual behaviour:

The OutputChannelDefine DAP, enabled by the existence of a renderer output channel, produces defaults and hints for attributes below prmanGlobalStatements, even when scoped to an arbitrary, unused attribute name (in this case does_not_exist).

Workaround:

Aside from performing unnecessary work, the effect of this bug is limited to cases in which unexpected provision of the __meta attribute causes the incoming attribute to be discarded. The workaround is to avoid manually setting attribute hints in the __meta attribute as part of a standard Op.

Tested versions/platforms:

  • 2.0v1 - Affected
  • 3.2v3 - Affected

Customer version/platform:

Not supplied

    We're sorry to hear that

    Please tell us why