ID 267710 - Ops can prematurely stop child traversal

Follow

Problem summary:

Under certain certain cooking conditions, Ops can prematurely stop child traversal, producing incorrect scene.  This manifestation of this bug is dependent on the order of cook operations.

Specifically, Ops that operate on pre-existing descendants of children that they create using copyLocationToChild() or replaceChildren(), fail to do so under certain cooking conditions.

Steps to reproduce (original):
  1. Using the attached 'OrderDependentSceneEvaluation.katana' project, expand the first child location of each level of the scene graph down to the 'instanceSources' location, then expand the last child location of each level of the scene graph down to the leaf location.
  2. Close all and flush caches, then expand the last child location of each level of the scene graph down to the leaf location.

Expected behaviour:

In both cases, there should be a single child at every level below the component location.

Actual behaviour:

In case 1, there is a single child at every level below the component location, but in case 2, there exist locations that should have been pruned upstream.

Workaround:

Inserting additional nodes targeting certain locations (e.g. a dummy AttributeSet node) can prevent the incorrect behaviour, but the necessary change is arbitrary and uncertain.

Steps to reproduce (simple):

  1. Follow instructions in the attached 'TP 267710' project to observe incorrect scene graph produced due to this bug.

Reproduced versions/platforms:

  • 2.0+

Customer version/platform:

Not supplied.

    We're sorry to hear that

    Please tell us why