Gaffer 1.2.0.0a1 #5040
Replies: 4 comments 12 replies
-
Amazing effort! |
Beta Was this translation helpful? Give feedback.
-
Thanks for this new release.
I get an error in this new version that I don't get in 1.2.0.0a1 on Windows:
```
ERROR : IECore.loadConfig : Error executing file
"C:\fbFiles\pipeline\software\windows\gaffer\1.2.0.0a2\startup\gui\lightEditor.py"
- "File "maya/osl/pointLight" could not be found.".
Traceback (most recent call last):
File
"C:\fbFiles\pipeline\software\windows\gaffer\1.2.0.0a2\python\IECore\ConfigLoader.py",
line 79, in loadConfig
fileContextDict, fileContextDict
File
"C:\fbFiles\pipeline\software\windows\gaffer\1.2.0.0a2\startup\gui\lightEditor.py",
line 95, in <module>
shader.loadShader( light )
File
"C:\fbFiles\pipeline\software\windows\gaffer\1.2.0.0a2\startup\GafferOSL\shaderNameCompatibility.py",
line 152, in loadRenamedShader
return originalLoadShader( self, renamed, **kwargs )
IECore.Exception: File "maya/osl/pointLight" could not be found.
```
Anyone on Windows get this error too?
Thanks. Regards,
Miguel
|
Beta Was this translation helpful? Give feedback.
-
I can confirm that error too, @LichiMan. I'll have a look this afternoon at it. John's fix for it (commenting out lines 89 to 104 of |
Beta Was this translation helpful? Give feedback.
-
I have a candidate fix in #5082. If you're not using 3Delight, the manual fix above is as good as any. If you are, see my note on #5081 for an interim fix. |
Beta Was this translation helpful? Give feedback.
-
This version enables Cycles support by default, as we believe we have made sufficient progress to allow wider testing. We may continue to make behaviour-changing updates if necessary though, so support is not yet considered final.
Features
light:mute
attribute. If that attribute is not present, the light will not be muted.soloLights
set. If that set has one or more members, only the lights in that set will emit. If the set is empty, all lights emit according to their mute state. If a light is both muted and in thesoloLights
set, it will emit.mute
toggle, which can be accessed in the node editor from theLight Linking
tab.Improvements
Fixes
pathlib.Path
objects, and any other classes which throwAttributeError
for an attribute advertised bydir()
.setImage()
from within awith widgetContainer
block.parallelGetValue()
to use the wrong context.postCall
to be called on a widget that had already been removed from the UI.API
std::filesystem::path
andpathlib.Path
in the C++ and Python APIs respectively, with automatic conversion between the two. These simplify common use cases, and provide for more elegant cross-platform path handling.serialiseToFile()
,executeFile()
andimportFile()
now takefilesystem::path
arguments.load()
now takes afilesystem::path
argument.fileName()
now returns afilesystem::path
argument.exportForReference()
now takes afilesystem::path
argument.savePreferences()
now takes afilesystem::path
argument.preferencesLocation()
now returns afilesystem::path
.setValue()
overload taking afilesystem::path
.jobDirectory()
now returns afilesystem::path
.pathlib.Path
.temporaryDirectory()
now returns apathlib.Path
.registerReferenceScene()
now takes afilesystem::path
.save()
andload()
take afilesystem::path
, andgenerateFileName()
returns one.exportExtension()
now takes apathlib.Path
in thedirectory
argument.buttonPressSignal()
,buttonReleaseSignal()
andbuttonDoubleClickSignal()
. These allow a PathColumn to implement its own event handling.setVisiblesSet()
,getVisibleSet()
, andaffectsVisibleSet()
methods.setVisibleSet()
, andgetVisibleSet()
methods._postContructor()
method, which is called after the widget is fully constructed. This can be useful for performing post-initialisation work from a base class.repeatGetValue()
andparallelGetValue()
.assertParallelGetValueComputesObjectOnce()
. This can be used to check that expensive computes are using an appropriate cache policy.rootPath()
andexecutablePath()
methods.Breaking Changes
disconnect( slot )
method. This was a performance hazard because it was linear in the number of connections. UseConnection::disconnect()
instead, which is constant time.expectedFailure()
decorator. Useunittest.expectedFailure()
instead.SceneInterface::writeSet()
is now used in preference toSceneInterface::writeTags()
for all non-legacy file formats.SceneInterface::readSet()
is now used in preference toSceneInterface::readTags()
for all non-legacy formats.ui:scene:expandedPaths
context variable. Any code directly accessingui:scene:expandedPaths
should instead use thegetExpandedPaths()/setExpandedPaths()/expand()/expandDescendants()
methods provided byContextAlgo
.setExpandedPaths()
andgetExpandedPaths()
methods.setVisibleSet()
andgetVisibleSet()
are now used instead.setReadOnly()
andgetReadOnly()
methods from the following widgets :GafferUI.PlugValueWidget
GafferUI.NodeEditor
GafferUI.NodeUI
GafferUI.PlugLayout
fileName()
Python binding now returns apathlib.Path
argument, orNone
for empty file names.preferencesLocation()
Python binding now returns apathlib.Path
argument.setValue( std::filesystem::path & )
now usespath.generic_string()
for the value, whereas before an automatic conversion would have usedpath.string()
(the native string).jobDirectory()
Python binding now returns apathlib.Path
, orNone
if it is empty.gadgetsAt()
signature.Build
This discussion was created from the release Gaffer 1.2.0.0a1.
Beta Was this translation helpful? Give feedback.
All reactions