Roadmap ideas - martin-pr/possumwood GitHub Wiki
This page contains a list of ideas and suggestions for future development of the Possumwood project.
Possumwood application
Core system
- Undo framework (using native Qt functionality)
- Error handling
- Return status for each node (returned by compute())
- Visual representation of erroring nodes
- Exception handling + tests
- Add OpenMesh error handling
- Node errors visualised in the error log only if a node is selected
- Parallel evaluation (possibly using TBB Flow Graph)
- Recompute on disconnect (as a flag - needs introduction of flags)
- Type traits
- colours for datatypes
- explicit "saveable" flag, linked to disconnect signal
- readable type string, to be shown in a tooltip
- Interval attribute type
- Deployment
- Windows (AppVeyor)
- Linux (Travis CI)
- Node grouping using "containers" + collapsing (just a UI-side feature, no impact on evaluation, for now)
- Predefined setups using "toolbars" (+ toolbar groups) - instantiates a set of nodes (group?); might be user-definable?
- Parallel evaluation of nodes
Testing
- Add working examples for all nodes
- Setup a regression testing framework, based on examples
Rendering
- Refactoring of the OpenGL rendering as a "renderable" object
- Render modes as a dropdown in viewport
- OpenSceneGraph
- Lighting model / shaders (Disney model?)
- Bounding boxes, returned by all render calls, to allow centering
- Viewport centering
- Shadertoy-like fragment shaders, for drawing "background" or objects in the scene (returns x,y colour + depth)
UI
- Timeline support
- Viewport interaction (OSG?)
- Improve node connection / movement (only connect by dragging from squares)
- Add "minimized" mode for the graph display (to save space in the graph)
- Auto reorganization of the graph nodes
- Ordering of properties in the tree view (partial ordering based on the "order" in the graph?)
- TAB menu with search (same as Maya or Houdini)
- Clear log button
Plugins
Maths expressions
- Cparse?
- unary/binary/ternary operators?
- generic - add_variable/extract_variable/compute
- generate 3D objects (manifolds) by sampling a 2D function + examples
- Python using boost::python?
OpenMesh
- Progressive meshes support + slider to test them
- Loading an .x file into series of meshes
CGAL
- Feasibility of replacing OpenMesh with CGAL?
Animation
- Setup a plugin and a semi-separate library (static?)
- Loading of BVH files
- Skinning of meshes
- Retargetting + remapping of animations
- Rigid skinning assignment (for "eyes" meshes of ishtarian proog model)
- Nonlinear animation editor
- Root bone instantiation (multiple methods + filtering?)
Shaders
- Simple "background shader" setup (similar to ShaderToy)
- Ground shader
- Simple GPU-rendered CSG (?)
- Separate attribute types:
- vertex attributes (i.e., points + geom + stuff)
- uniform attributes
- texture attributes
- Dropdown for selecting GL version
- "Attributes" datatype, passed through the graph
- UI to show what attributes are available in shader editor
- Compositing shader framework
- refactor drawing code
- support for compositing shaders - screen-space ambient occlusion
- Port shaders to GL 3.x to support older GPUs
- Display accessible parameters as type-based UI
- VBO objects, names and types
- Uniforms
- Vertex shader outputs [ ] Lightfields display
Points
- Simple generic point attrs representation
- CGAL -> Points -> CGAL
- Skeleton -> Points -> Skeleton
- PCA
- Pointcloud rendering
Docs
- New README
- A simple Youtube video introducing the thing
- Reorganize example files + add licenses
- Reorganize examples
- Rename and reorganize all nodes