Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Certain Nodes Blocks Edit Source Node of Selection (Alt + E) in viewer | SceneAlgo.history bug #5406

Closed
LinasBeres opened this issue Jul 24, 2023 · 1 comment

Comments

@LinasBeres
Copy link

Version: Gaffer 1.2.x-linux
Third-party tools: None
Third-party modules: None

Description

Certain nodes block seeing the "correct" edit source node of selection (Alt + e).

The ones that cause this issue (so far) are MeshType and OSLObject, but freezeTransform is "seen through" by the hotkey.

It is not completely certain what should be the correct functionality of the hotkey.

Steps to reproduce

  1. Link a plane to meshType
  2. Select plane in viewer
  3. Hit Alt+e in the viewer
  4. meshType opens up instead of plane

Example File

import Gaffer
import GafferImage
import GafferOSL
import GafferScene
import IECore

__children = {}

__children["Plane"] = GafferScene.Plane( "Plane" )
parent.addChild( __children["Plane"] )
__children["MeshType"] = GafferScene.MeshType( "MeshType" )
parent.addChild( __children["MeshType"] )
__children["PathFilter"] = GafferScene.PathFilter( "PathFilter" )
parent.addChild( __children["PathFilter"] )

__children["MeshType"]["in"].setInput( __children["Plane"]["out"] )
__children["MeshType"]["filter"].setInput( __children["PathFilter"]["out"] )
__children["PathFilter"]["paths"].setValue( IECore.StringVectorData( [ '/plane' ] ) )


del __children

@danieldresser also used this following script to indicate that the scene history is not going any further than the MeshType for the above scene.

hist = GafferScene.SceneAlgo.history( root['MeshType']['out']['object'], "/plane" )

def printPredecessors( h, depth ):
    for i in h.predecessors:
        print( "\t" * depth + i.scene.fullName() )
        printPredecessors( i, depth + 1 )    

printPredecessors( hist, 0 )
@johnhaddon
Copy link
Member

Duplicate of #3875.

I believe this is the offending code : https://github.com/GafferHQ/gaffer/blob/main/src/GafferScene/SceneAlgo.cpp#L415-L427. It ignores the private internal plug that we use for computing the processed object, truncating the history as demonstrated in Daniel's script.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Archived in project
Development

No branches or pull requests

2 participants