Input ports not updating

Something really strange is happening. I am using Canvas in Maya 2014 and drawing some Polygon Mesh Instances in the viewport. They are being transformed and are linked to the timeline.
But now it happens that the whole Canvas node will only update if I select it in the outliner, even though the frame input is animated.
Is there some sort of "only update on select" mode or am I missing something?
Here in the screenshot you can see that I have changed the frame in the timeline and the frame input of the canvas node correctly shows the new value. Yet the canvas node is not being evaluated and only does when I click on it in the outliner. In one of the nodes (canvasNode_Chords) there is a report node, which should report the current frame. You can still see the report of the previous frame, but no current one. As soon as you select it in the outliner it reports the correct frame.

Thanks for any hints why this might be happening. What could be causing it? Has anyone experienced this as well?

Thanks, Armin.

Tagged:

Comments

  • Roy NieterauRoy Nieterau Posts: 258 ✭✭✭
    edited September 2016

    Maya evaluation (pull)

    A Canvas node is only updated in Maya when it is being evaluated by a "pull" in Maya. Maya's dependency graph has an optimization system that it only updates what it needs. Since your Canvas nodes has no outputs it considers it as being redundant information, basically optimizing it away. This results in the Canvas node not being computed at all.

    This is just the way Maya operates and allows the Canvas node to optimally perform in any Maya scene, only updating whenever it should.

    The fact that selecting it works is because Maya instantly thinks it has some important information as it tries to pull some of it to draw in the Attribute Editor or Channel Box. (I think it's usually the Attribute Editor forcing the pull).

    Solution

    The solution is to force an evaluation by Maya. You can do this by making a locator (or anything with a shape in the scene) and connect one of the outputs of the Canvas node to the locator (e.g. a simple eval scalar attribute that you connect to the locator.translateY). This way Maya believes the output is used for something actually visible in the scene, and as such pulls it accordingly when any of the inputs changes (and respectively allows the Canvas graph to updates itself)

  • seltzdesignseltzdesign Posts: 80

    Thanks Roy,
    That really makes sense. I guess Maya doesn't "know" about the Instances being drawn in its viewport or at least doesn't consider them. Even simpler I just feed the output port of the frame input to drive a locators x, y and z coordinates as you suggested. Working perfectly now AND learned something :smiley:

Sign In or Register to comment.