All pastes #983263 Raw Edit

Stuff

public text v1 · immutable
·published 2008-04-13 05:40 UTC
rendered paste body
6.0 Details of the New Node-based Modifier System

6.1 Advantages of the system

Having node-based modifiers would be a new and exciting paradigm for Blender.
Node systems have the advantage of allowing multiple roots in the execution
graph, and for the execution branches to grow back together (unlike a stack
or a tree form).

Practically, this results in a more flexible system.  One single mesh input
could drive multiple modifiers.  Modifiers could be blended together in
a configurable way with special blend nodes.

The priority for the SoC period is to port all current modifiers to the new
system, as well as implement the nodes listed in 6.2.  In addition, the 
following nodes will be created if time permits:

 * UV Unwrap node
   A UV Unwrap node, supporting all UV unwrap modes.
   
 * Spherical effectors (e.g. a "bulge" modifier that bulges meshes at where an object is)
   Riggers use these as part of rough muscle simulator setups.

6.2 List of Nodes
  The following is a rough list of what would be desired in a complete node
  modifier system. The nodes in this list will be completed within the SoC period.
  The list will change to take user feedback into account.
  
  The following node socket types will be defined: Color, Value, Vector3, Vector4
  and Matrix.
  
6.2.1 Input nodes
 * Mesh input - Inputs: None; Outputs: Mesh
   Inputs a mesh into the node tree
   
 * Object input - Inputs: None; Outputs: Mesh, Matrix
   Inputs from an object and output a mesh (if needed
   by the graph) and a matrix representing the object's
   transform.
   
 * Color input
 
 * Vector input - Outputs: Vector
    A four-component vector
 
 * Matrix - Inputs: Vector, Vector, Vector, Vector; Outputs: Matrix
   A generic matrix input node, that takes either three or four vectors
   (depending on whether the user desires a 3x3 or 4x4 matrix) as inputs.
   The vectors represent rows in the final matrix.

6.2.2 Math Nodes
  * Matrix Math (multiply, invert, transpose) - Inputs: Matrix, Matrix; Outputs: Matrix
  * Vector-Matrix Math (multiply, multiply with inverse) - Inputs: Matrix, Vector; Outputs: Vector
  * Vector Math (multiply, subtract, add, divide, cross product)
      Inputs: Vector, Vector; Outputs: Vector, Value (dot product result)

6.2.3 Transform Nodes
  * Matrix Transform - Inputs: Matrix, Mesh; Outputs: Mesh
  * Generic Transform (rotate/translate/scale/shear/warp)
      Inputs: Vector(rotate), Vector(scale), Vector(translate); Outputs: Mesh
  * Mesh Blend node
    A simple blending node to blend between two deformed meshes.  Note that
    both meshes would have to have to have identical vertex ordering, and also
    an identical number of verts.

6.2.4 Modifiers
  * Triangulation node - Inputs: Mesh; Outputs: Mesh
  * Mesh Concatenation - Inputs: Mesh, Matrix, Mesh, Matrix; Outputs: Mesh
    This node would concatenate two meshes together.  Each mesh would be transformed
    by the matrix input following its input.
  * All the currently implemented modifiers

6.3 Additional Node Ideas
  The following is a list of additional node ideas that would most likely
  be impractical to implement during the SoC period, but are nonetheless
  usefull.
 
 * Pynodes
   Pynodes would be used to implement python-driven modifiers
   
 * Cut
   This node would cut a mesh with a plane and remove all geometry on one side
   
 * Boolean
   A generic CSG node
   
 * An improved hook modifier with weight control and control
   over the falloff curve.