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