1.1. Overview

The fundamental organizing structure of K-3D is the Visualization Pipeline: K-3D user documents are made up of Nodes. When you use a plugin, you are usually adding a new node to the document. Each node created is a new instance of a specific plugin type. We represent nodes diagrammatically as boxes, and label them based on either the node’s type or its purpose:

pipeline2.png

Although there are exceptions, most nodes can be categorized as Sources Modifiers or Sinks of data. Sources create data, modifiers process data, and sinks consume data. Thus, data “flows” from sources, is altered by modifiers, and terminates at sinks. We can represent this flow using arrows:

pipeline3.png

This is where the term Pipeline originates - connections between nodes act as “pipes” and data flows through them like water. Though it may not be obvious to the casual observer, all K-3D operations are performed using the pipeline, with human interaction converted into pipeline manipulations by the user interface layer.

As a concrete example, here is a typical example of a “real” pipeline:

pipeline4.png

In this example, the PolyGrid plugin acts as a source, producing geometric data (in this case, a regular polygon grid). The ScalePoints plugin acts as a modifier, applying a scaling transformation to any geometry that passes through it. Finally, the MeshInstance plugin is a consumer of data, rendering geometric input to the screen as a 2D image.

Of course, the pipeline can grow to be as complex as needed … for example, a pipeline can contain multiple modifiers:

pipeline5.png

Here, a second modifier - RotatePoints - is added to the pipeline, further altering data after it is modified by ScalePoints. As you might imagine, you are free to chain-together modifiers in any number and combination desired.