gafferhq / gaffer Goto Github PK
View Code? Open in Web Editor NEWGaffer is a node-based application for lookdev, lighting and automation
Home Page: http://www.gafferhq.org
License: BSD 3-Clause "New" or "Revised" License
Gaffer is a node-based application for lookdev, lighting and automation
Home Page: http://www.gafferhq.org
License: BSD 3-Clause "New" or "Revised" License
To help orient users, we should draw an x,y,z gnomon in the corner of the 3d viewport.
Also, a configurable grid centred on the origin would be a welcome addition.
Configurable options:
Suggested new name: 'EntityInspector' - in line with adoption of 'entity' to describe objects that exist at path in a scene.
Users may want to be able to re-arrange layouts by dragging and dropping panels/tabs.
This means we need an unsavedChanges plug on the ScriptNode(), and a way of setting it.
Allow the user to interactively switch nodes on/off to see what their affect is.
Type name clashes can result in nodes parameters not being drawn in the NodeEditor.
# Traceback (most recent call last):
# File "/software/apps/gaffer/0.53.0/cent5.x86_64/cortex/8/maya/2012/python/GafferUI/NodeSetEditor.py", line 187, in __updateTimeout
# self._updateFromSet()
# File "/software/apps/gaffer/0.53.0/cent5.x86_64/cortex/8/maya/2012/python/GafferUI/NodeEditor.py", line 114, in _updateFromSet
# GafferUI.Label( node.typeName() )
# Boost.Python.ArgumentError: # Python argument types in
# ArnoldLight.typeName(ArnoldLight)
# did not match C++ signature:
typeName(GafferArnold::ArnoldLight {lvalue})
Add support for drawing textured models in the 3d viewer.
How would textures be specified? Based on shaders assigned? Or some extra attribute?
Support for 'UDIM' style textures would be required.
A 'Dot' is a node that performs no modifications to the scene graph, but which can be used to control the path of noodles between nodes.
Should be implemented such that one node type (or template type) can provide dots for all processing modules (image, scene, etc)
Should be more like cropping.
Currently users can only view the 3d scene through the generic perspective camera.
They should be able to pick the camera to view the scene through from any camera existing in the scene.
Implementation details:
This is a result of legacy naming.
Also should it be called 'ObjectReader' or 'CortexReader' to distinguish it from other readers?
A viewer capable of displaying the uv layout of models would be helpful when working with textures mapped to models.
Suggested features:
Make 'current frame' a plug which drives the default context
Add ability to import saved .gfr files into the current session.
So we can connect an image to the skydome for instance...
Implement simple 3d painting system to provide an artist friendly way to set point/face attributes.
Example uses would be painting a mask to be passed via a primvar into a shader.
Requires drawing of custom design for each light type.
A majority of production renderers offer some form of raytrace hider based interactive rendering (often know by the maya name 'IPR').
This approach to setting up lighting and shading is gaining traction in production.
What features would we expect?
What changes would reasonably require a re-export of the scene?
Users will want to clear output after running scripts to ease identification of new output.
Decide whether the ScriptEditor will have a toolbar for this sort of thing, or a context sensitive right-click menu, or something else.
Need to recover and display an error, rather than silently fail.
Each type of drag should display a cursor indicating what is being dragged.
As objects approach the camera, the rate of zoom appears to increase significantly, limiting precision for the user.
When copy->pasting nodes, the newly created nodes should be pasted either:
Review behaviour in other applications, and use that to inform choice. Then implement.
Pressing 'Tab' to raise a node creation menu is commonly used in node graph editing software.
To aid user familiarity it makes sense to emulate this.
Implementation details.
Users should be able to middle-mouse click-drag to pan in the NodeGraph.
This should only occur when they click in empty space (to avoid conflict with actions related to middle-mouse clicking on nodes and noodles).
Because you can't use wildcards when a single path is needed.
Filters will always be used when multiple paths can be matched.
So that one entity can be constrained to follow the transform of another entity.
Allow for offsets to constraint.
Users should be able to filter the displayed contents of the SceneHierarchy editor by
We don't need the last two lines :
__children["Displays"]["__uiPosition"].setValue( IECore.V2f( 5.65656, 11.4747 ) )
__children["Displays"]["__uiPosition"]["x"].setValue( 5.6565647125244141 )
__children["Displays"]["__uiPosition"]["y"].setValue( 11.474745750427246 )
Add a user preference whether to restore layout from .gfr file when loading or not.
Users may not (for example) want to get the window layout when opening someone else's work.
Users are likely to want to modify what objects are visible in the 3d viewer whilst interacting with the application, without constructing and maintaining graph branches to achieve this.
suggested functionality:
Should build from source as part of the general gaffer build.
Right/left arrow keys should increment/decrement current frame when focus is not in text/numerical entry field.
NodeGraph should scroll automatically when dragging nodes or noodles outside the visible area.
To help with display of more complex attributes attached to entities.
Some minor UI improvements to come along with that:
Investigate OSL metadata standard, and if it seems sensible, adopt that.
Being limited to picking and framing the view to object level items can be restrictive.
Complex models made up of small numbers of objects (for example organic shapes with no edges where joins could be hidden) can be very unwieldy.
Most 3d packages allow the current selection to be composed of components such as points and faces.
How can we enable that functionality in gaffer?
Currently users can place networks of nodes inside boxes.
What else do we need to enable a 'gizmo' or 'houdiniDigitalAsset' type workflow?
Users can save custom layouts, but currently by default the 'Default' layout is loaded on startup.
Users should be able to specify one of the other available layouts to be loaded on startup.
Using the scroll wheel to track the camera in a viewer will 'zoom in' at a greater rate than when 'zooming out'.
The same occurs in the NodeGraph.
Layouts should restore
Users will want to be able to 'tear-off' or 'float' the contents of a tab/panel.
See if we can add ability to echo all commands in the ScriptEditor output, no matter where they originate. This involves:
To help users to create tidy node graphs, we should implement snapping of nodes.
It would be good to move nodes and have them snap to positions that align horizontally and vertically with their input and/or output nodes.
Use PopupWindow so we get to test that a bit.
Both these things mean having custom editor widgets on the qt view.
Ben and Edmond are both busy men with important things to do.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.