Skip to content

Commit

Permalink
usdPointInstancerAdaptor : Add UI for controlling default expansion
Browse files Browse the repository at this point in the history
  • Loading branch information
danieldresser-ie committed Jan 23, 2025
1 parent 5045245 commit 8503a6f
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 1 deletion.
3 changes: 2 additions & 1 deletion startup/GafferScene/usdPointInstancerAdaptor.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ def __usdPointInstancerAdaptor() :
result = GafferScene.SceneProcessor()

result["renderer"] = Gaffer.StringPlug()
result["pointInstancerAdaptorDefault"] = Gaffer.BoolPlug( defaultValue = True )

# First, a simple thing that is a bit messy to do currently: we need all the locations in
# the set usd:pointInstancers where the attribute gafferUSD:pointInstancerAdaptor:enabled isn't
Expand All @@ -73,7 +74,7 @@ def __usdPointInstancerAdaptor() :
result["expandInstancersAttribQuery"]["location"].setValue( "${collect:value}" )
result["expandInstancersAttribQuery"]["attribute"].setValue( 'gafferUSD:pointInstancerAdaptor:enabled' )
result["expandInstancersAttribQuery"]["inherit"].setValue( True )
result["expandInstancersAttribQuery"]["default"].setValue( True )
result["expandInstancersAttribQuery"]["default"].setInput( result["pointInstancerAdaptorDefault"] )

result["pathsInSetWithAttribute"] = GafferScene.PathFilter()

Expand Down
54 changes: 54 additions & 0 deletions startup/GafferSceneUI/usdPointInstancerAdaptor.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
##########################################################################
#
# Copyright (c) 2025, Image Engine Design Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above
# copyright notice, this list of conditions and the following
# disclaimer.
#
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials provided with
# the distribution.
#
# * Neither the name of John Haddon nor the names of
# any other contributors to this software may be used to endorse or
# promote products derived from this software without specific prior
# written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
##########################################################################

import GafferSceneUI

def __expandUSDPointInstancersMenu( menuDefinition, plugValueWidget ) :

sceneView = plugValueWidget.getPlug().node()
renderAdaptor = sceneView["__preprocessor"]["RenderAdaptors"]["USDPointInstancerAdaptor"]["SceneProcessor"]

current = renderAdaptor["pointInstancerAdaptorDefault"].getValue()
menuDefinition.append( "/AttributesDivider", { "divider" : True } )
menuDefinition.append(
"/Expand USD Instancers When Rendering",
{
"command" : lambda plug : renderAdaptor["pointInstancerAdaptorDefault"].setValue( not current ),
"checkBox" : current
}
)

GafferSceneUI.SceneViewUI._ExpansionPlugValueWidget.popupExpansionMenuSignal().connect( __expandUSDPointInstancersMenu )

0 comments on commit 8503a6f

Please sign in to comment.