PotterDraw Help

Contents

Getting Started
Introduction
License
Requirements
Installing
Uninstalling
Getting help
View
View
Render Styles
Spline
Spline
Properties
Properties
Mesh
Rings
Sides
Radius
Wall Thickness
Twist
Ring Phase
Aspect Ratio
Polygon
Polygon Sides
Polygon Roundness
Polygon Bulge
Polygon Phase
Scallop
Scallops
Scallop Depth
Scallop Phase
Scallop Waveform
Scallop Operation
Scallop Range
Scallop Motif
Scallop Power
Scallop Power Type
Scallop Pulse Width
Scallop Slew
Ripple
Ripples
Ripple Depth
Ripple Phase
Ripple Motif
Ripple Operation
Ripple Power
Ripple Power Type
Bend
Bends
Bend Depth
Bend Phase
Bend Motif
Bend Poles
Bend Pole Phase
Bend Pole Motif
Bend Operation
Bend Power
Bend Power Type
Ruffle
Ruffles
Ruffle Depth
Ruffle Phase
Ruffle Waveform
Ruffle Motif
Ruffle Power
Ruffle Power Type
Ruffle Pulse Width
Ruffle Slew
Helix
Helix Frequency
Helix Amplitude
Texture
Texture Path
Colors
Color Sharpness
Color Cycles
Stripe Frequency
Stripe Amplitude
Stripe Phase
Petals
Color Pattern
Palette Type
U Offset
V Offset
Cycles V
Edge Gain
View
Animation
Frame Rate
Background Color
Auto Rotate
Auto Rotate Yaw
Auto Rotate Pitch
Auto Rotate Roll
Auto Rotate Zoom
Modulation
Modulation
Target
Type
Waveform
Operation
Range
Motif
Frequency
Amplitude
Phase
Phase Speed
Bias
Power
Power Type
Pulse Width
Slew
Secondary modulation
Oscilloscope
Oscilloscope
Palette
Palette
Texture synthesis
Menus
File
New
Open
Close
Save
Save As
Export
Record
Load Texture
Print Setup
Print Preview
Print
Exit
Edit
Undo
Redo
Cut
Copy
Paste
Delete
Select All
View
Toolbars and Docking Windows
Status Bar
Record Status
Application Look
Rotate
Pan
Zoom In
Zoom Out
Zoom Reset
Animation
Step Forward
Step Backward
Random Phase
Render
Wireframe
Gouraud
Highlights
Culling
Texture
Transparent
Bounds
Lighting
Spline
Add Node
Delete Node
Translate
Scale
Rotate
Flip Horizontal
Flip Vertical
Show Grid
Snap to Grid
Show Rulers
Opposite Wall
Grid Setup
Import
Export
Node Type
Segment Type
Zoom
Tools
Options
Mesh Information
Import Palette
Export Palette
Window
New Window
Cascade
Tile Horizontal
Tile Vertical
Arrange Icons
Full Screen
Help
Help Topics
PotterDraw on the Web
Check for Updates
About
Options
Zoom Step
Pan Step
Drag Rotate Step
Use Vertex Color
Use Custom Image Size
Custom Image Width
Custom Image Height
Floating-Point Precision
Plot All Modulations
Spline Zoom Step
Show Spline Drag in View
Show Property Descriptions
Automatically check for updates
Reference
Normalized angle
Properties Summary
Options Summary
Shortcuts

Getting Started

Introduction

PotterDraw is a free 3D software application for designing and visualizing pottery. It's useful for creating cylindrical shapes such as pots, flasks, vases, bowls, plates, cups, glasses, goblets, or anything similar. The outer wall of the pot is drawn using a spline, which consists of one or more curved or linear segments. The inner wall is generated automatically.

PotterDraw can export files suitable for 3D printing. It can also map synthesized or user-specified textures onto the pot. Mesh and texture properties can be modulated by oscillators for more complex effects, and the modulations can be animated to create videos.

License

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.

Requirements

Recommended:

Windows 7 or higher, 64-bit
4GB memory or more
Quad-core CPU
Decent graphics card

Installing

PotterDraw comes in two flavors (Installer and Portable), each of which is available in both 64-bit and 32-bit versions. If you have a 64-bit CPU, it's strongly recommended to use the 64-bit version of PotterDraw. Most users want an installer, because it's easier. For example, installing adds PotterDraw to the Windows start menu, and allows PotterDraw to register its file types, so that they have appropriate icons and can be opened via double-clicking in Explorer.

Installing for the first time:

Make sure you're logged on as Administrator. The Installer flavor of PotterDraw is distributed as a zip file. Unzip the distribution file, using WinZip or an equivalent program, and then double-click on PotterDraw.msi to launch the installer. The installer is about as simple as an installer can be: for the default setup, just keep hitting "Next." Note that on the "Select Installation Folder" page, you have the option to install for all users, but the default is to only install for the current user.

Upgrading a previous installation:

  1. Make sure you're logged on as Administrator.
  2. Unzip the distribution file to a folder, if you haven't already.
  3. In that folder, double-click Upgrade.bat to launch the installer.
  4. In the installer, select the "Repair" option.

Note that double-clicking PotterDraw.msi won't work for upgrades: you will get the message "Another version of this product is already installed".

To use the portable app, simply unzip the distribution file to a folder and double-click PotterDraw.exe to run the application.

Uninstalling

To uninstall PotterDraw, use Add/Remove Programs in the Control Panel, or double-click on PotterDraw.msi and select the "Remove" option.

To remove the portable version, delete the folder you unzipped the application files into, and also delete the following registry key:
HKEY_CURRENT_USER\Software\Anal Software\PotterDraw

Getting help

PotterDraw has context-sensitive help, which means that pressing F1 shows different topics depending on the situation. Context-sensitive help is available for the following types of user-interface objects:

Object typeTo get help:
Menus and context menusHover the cursor over a menu item and press F1.
Toolbar buttonsHover the cursor over a button and press F1.
Property barsLeft-click a property name and press F1.
Other toolbarsLeft-click a control and press F1.
Modal dialogsPress F1 while the dialog is displayed. For some dialogs, the topic shown depends on which control has focus.

If none of the above cases apply, or if help is accessed via Help Topics, a default topic is shown.

View

View

PotterDraw's main view shows the pot in 3D. The view is read-only. To change the pot, edit its spline or other properties.

To rotate the pot, left-click and drag the cursor while keeping the left mouse button pressed. The cursor affects pitch and yaw, i.e. rotation around the x and y axes. To roll, i.e. to rotate the pot around the z-axis, also press the Shift key and drag the cursor horizontally.

To zoom in or out, position the cursor at the desired location and spin the mouse wheel. The Ctrl+= and Ctrl+- shortcuts also work, and Ctrl+0 resets the zoom.

To pan the view, press the middle mouse button and drag the cursor while keeping the middle mouse button pressed.

The view supports various render styles.

By default PotterDraw uses tabbed MDI. If you prefer the classic non-tabbed MDI look, you can enable it via the Tabs command.

Render Styles

StyleDescription
WireframeDisplay the pot as a wireframe model.
GouraudInterpolate color within facets so that the pot's surface appears smooth.
HighlightsDisplay specular highlights as if the pot were made of a shiny material.
CullingSkip the rendering of completely hidden facets to improve performance.
TextureDisplay the current synthesized or user-specified texture on the pot.
AnimationAnimate any modulations that have non-zero phase speeds.
BoundsShow an outlined bounding box around the pot.

Spline

Spline

The spline lets you to draw the pot's outer wall using a series of curves or lines. The spline determines the radius of each of the pot's rings.

Segments and nodes

The spline consists of one or more segments. Each segment can be a Bézier curve or a straight line. The segments join at nodes. When a segment is selected, its nodes are displayed as small hollow squares. A Bézier segment also has two control points, which can be moved to adjust the curve. The control points are displayed as small solid squares, connected to their corresponding nodes by lines called curve vectors. To change the shape of a Bézier segment, drag its control points and/or its nodes.

There are three types of nodes. A node's type determines how the two curve vectors sharing that node are constrained.

Node TypeConstraint
CuspNo constraint; use this type to create a sharp corner between two adjacent curves.
SmoothThe two curve vectors meeting at the node are constrained to be co-linear and opposite.
SymmetricalSimilar to smooth, but the curve vectors are additionally constrained to be the same length.

Shape limitations

For normal operation, the entire spline must be positive in X, i.e. it should be entirely to the right of the x-axis. If the spline crosses the x-axis, the resulting pot will have a discontinuous surface, and won't be 3D-printable.

The spline should also continuously increase in the y-axis. Put another way, the spline should intersect any given y-coordinate no more than once. If this isn't so, PotterDraw will simplify the spline as needed.

Note that only a subset of the possible Bézier curves can be faithfully translated into a 3D mesh. For example, curves that loop or cross themselves won't work properly. For each Bézier segment, if its lower control point is below its lower node, or its upper control point is above its upper node, the segment crosses a y-coordinate more than once and will be simplified.

To check your spline's conformance with the above constraints, use the Mesh Information command.

Navigation and selection

To zoom in or out, position the cursor at the desired location and spin the mouse wheel. The Ctrl+= and Ctrl+- shortcuts also work, and Ctrl+0 resets the zoom.

To pan the spline window, press the middle mouse button and drag the cursor while keeping the middle mouse button pressed.

To select a segment, left-click it. A range of segments can be selected, either by using Shift+left-click, or by drag selecting. To drag select, press the left mouse button and hold it down while dragging the cursor, moving the selection rectangle so that it intersects the desired segments; they will be selected when you release the left mouse button. To cancel a drag select, press Escape.

To select all segments, use Edit/Select All or Ctrl+A. To deselect all segments, left-click in the spline window's background, i.e. somewhere not on the spline.

Changing segment and node types

To change a single segment's type, right-click the segment and select the desired type from the context menu. To change the type of multiple segments at once, first select the segments and then change their type via Spline/Segment Type in the main menus, or by right-clicking somewhere not on the spline and using the context menu.

Node type works similarly. To change a single node's type, right-click the node and select the desired type from the context menu. To change the type of multiple nodes at once, first select the segments and then change their node type via Spline/Node Type in the main menus, or by right-clicking somewhere not on the spline and using the context menu.

Adding and removing nodes

To add a node, double-click where the node should go. To delete a node, double-click it. You can also add and delete nodes by right-clicking and using the context menu.

Nodes can be added anywhere except on top of an existing node. If you add a node to a segment, the segment is divided into two segments. If you add a node somewhere else, a new segment is added between the nearest end of the spline and the cursor position.

The spline must contain at least one segment, otherwise all the rings will have a radius of zero, resulting in an invisible pot.

Dragging segments and nodes

To move a segment, left-click it anywhere but on its nodes, and drag it while holding down the left mouse button. To move a node or a control point, left-click it and drag it while holding down the left mouse button.

Selected segments can also be moved by left-clicking one of the selected segments anywhere but on its nodes, and then dragging while holding down the left mouse button.

Editing and transformations

Selected spline segments can be cut, copied, pasted and deleted, using the standard Windows editing commands, accessible via the main menu's Edit submenu. Selected spline segments can be also transformed in various ways. They can be translated (moved), scaled, rotated, and flipped horizontally or vertically. All of these transformations are accessible via the main menu's Spline submenu.

Scaling can be proportional (isotropic) or non-proportional (anisotropic). Scaling and rotation can be relative to the origin, or relative to the center of the selected segments. Scaling relative to the origin is useful for changing the size of the entire pot without otherwise changing its geometry.

Grid and rulers

The spline window can display a grid, and the dragging of segments and nodes can be snapped to the grid. To change the grid spacing, use the Grid Setup command in the Spline submenu. The spline window can also display rulers. The opposite wall of the shape can also be displayed. This is useful because the opposite wall is updated continuously during node or segment dragging, whereas the view is normally only updated when the dragging is completed (though this is configurable).

Spline import/export

Splines can be exported or imported as text files containing a series of 2D points which constitute the spline. This allows splines to be generated by or processed by an external program. The format of the spline text file is explained below. For an example, use the export command and then examine the resulting file.

Each line of a spline text file must contain exactly one 2D point. The point's X and Y values must be separated by one or more tabs or spaces. The first point is the start point of the entire spline. Each subsequent group of three points describes a Bézier curve, specified by its first control point, its second control point, and its end point. After the first curve, each subsequent curve starts at the previous curve's end point. The total number of 2D points in the file must be a multiple of three, plus one for the start point.

Properties

Properties

PotterDraw supports a list of properties which can be used to enhance the pot's appearance beyond its basic shape, which is determined by its spline. Properties can also be modulated by oscillators for more complex effects. The properties are explained in detail in the topics below, and summarized here. They're grouped into the following categories:

GroupPurpose
MeshAlterations to the pot's 3D mesh.
TextureAlterations to the pot's 2D texture.
ViewView-related properties; also see Render Styles.

The properties bar displays the property values for the active document, and lets you edit them. To show the properties bar, use View/Toolbars and Docking Windows/Properties. To edit a property, left-click its value. You can also navigate the list using the Up and Down arrows, and edit the selected property by pressing the Tab key. Most properties are either numeric values or lists. The editing features of the different property types are explained below.

TypeUsage
NumericLeft-click the value to display an edit box; then type a new value, or edit the existing value, and press Enter or Tab to save your change. Left-clicking anywhere outside of the value also saves your change. To cancel your change, press Esc.
ListLeft-click the value to display a button on the right featuring a downward-pointing arrow; then left-click the button to drop the list, and left-click the desired list item. If you left-click in the area where the button would appear, the list is displayed immediately, skipping a step. While the value has focus, you can also change it via the mouse wheel or the Up and Down arrow keys.
PathLeft-click the value to display a button on the right featuring an ellipses; then left-click the button to display a file dialog. In the file dialog, navigate to the desired file, and press OK to select it. If you left-click in the area where the button would appear, the file dialog is displayed immediately, skipping a step. You can also type a path in the edit box.
ColorLeft-click the value to display a button on the right featuring a downward-pointing arrow; then left-click the button to display a palette, and left-click the desired color swatch, or "More Colors" to display a color picker dialog. If you left-click in the area where the button would appear, the palette is displayed immediately, skipping a step. You can also type a hexadecimal color value in the edit box.

Selecting a property sets the modulation target to the selected property. In other words, when you select a property, the modulation bar is automatically updated to display the modulation values for that property.

Mesh

Rings

The pot is constructed as a vertical stack of polygonal rings. This property sets the number of rings in the pot. It's a tradeoff between smoothness and performance: the more rings there are, the smoother the pot's surface is, but the longer it takes to render the pot. Too few rings gives the pot a jagged, faceted appearance; excessive values make the application sluggish. The default value of 100 is a reasonable starting point.

The Rings and Sides properties together determine the total number of facets, which is approximately Rings × Sides × 4. The exact number can be displayed via Mesh Information.

Sides

This sets the number of sides in each of the pot's polygonal rings. It's a tradeoff between smoothness and performance: the more sides there are, the smoother the pot's surface is, but the longer it takes to render the pot. Too few sides gives the pot a jagged, faceted appearance; excessive values make the application sluggish. The default value of 100 is a reasonable starting point.

The Rings and Sides properties together determine the total number of facets, which is approximately Rings × Sides × 4. The exact number can be displayed via Mesh Information.

Don't use the Sides property to create polygonal pots, because the resulting facet count will be too low to resolve other mesh effects. To create polygonal pots, use Polygon Sides and the other polygon properties instead.

Radius

This is a scaling factor applied to the overall radius of the pot. If it's one (the default), no scaling occurs. Values greater than one widen the pot, while values less than one narrow it. Any value other than one causes the pot to have different proportions than the spline. Note that you can also change the radius of the pot by moving the spline towards or away from the x-axis. Unlike the spline, the Radius property can be modulated with a waveform.

Wall Thickness

This is the thickness of the pot's wall, in millimeters. Increasing this value makes the wall thicker. For variable wall thickness, apply a modulation to this property.

Twist

This is the amount of twist, as a normalized angle. Twist is a rotation applied to the pot while drawing it from bottom to top. It's easier to see the effect of twist if the pot has scallops. For more complex twisting effects, modulate Ring Phase.

Ring Phase

This is the initial phase of each ring, as a normalized angle. Setting this property rotates the entire pot around its center axis. If you just want to see the pot from a different angle, it's usually preferable to rotate the view instead, because doing so is very efficient, unlike rotating the pot which involves rebuilding the mesh.

This property is primarily intended as a modulation target, in order to achieve twisting effects by rotating each ring differently. The Twist property only supports simple linear twisting, whereas modulating Ring Phase allows many other types of twisting. The Twist property is equivalent to modulating Ring Phase with a unipolar Ramp Up waveform. Twist and Ring Phase modulation can also be combined for even more complex effects.

Aspect Ratio

This scales the pot asymmetrically, making its cross-section elliptical instead of circular. For circular shapes, the aspect ratio should be one. Values greater than one make the pot wider in the x-axis. Values less than one make the pot narrower in the x-axis.

Polygon

Polygon Sides

This is the number of sides a polygonal pot has. If this value is two or more, the polygon effect is enabled and the pot is polygonal. If it's less than two, the polygon effect is disabled and the pot is circular.

The number of sides can be fractional. An integer number of sides produces a regular polygon, whereas a fractional number of sides produces a polygon with one side shorter than the others. The number of sides can be modulated for interesting effects, but don't let the modulated value go below two, otherwise invalid geometry results.

To round the polygon's corners, use Polygon Roundness. To bulge or pinch the polygon's sides, use Polygon Bulge.

Polygon Roundness

For polygonal pots, this is the roundness of the polygon's corners. If this value is zero, the polygon has sharp corners. Positive values increase their roundness, up to one, which produces the circumscribed circle. Negative values also increase their roundness, but by shrinking instead of expanding the polygon, down to −1, which produces the inscribed circle. Values outside the range −1 to 1 are clamped. Note that this property has no effect unless Polygon Sides is at least two. This property combines with Polygon Bulge to determine the polygon's shape.

ValueDescription
−1Inscribed circle.
−1 < x < 0Corners get rounder as value decreases; polygon shrinks.
0Sharp corners.
0 < x < 1Corners get rounder as value increases; polygon expands.
1Circumscribed circle.

Polygon Bulge

For polygonal pots, this is how much the polygon's sides are bulged or pinched. If this value is zero, the polygon has straight sides. Positive values bulge them out, whereas negative values pinch them in. Note that this property has no effect unless Polygon Sides is at least two. This property combines with Polygon Roundness to determine the polygon's shape.

ValueDescription
< 0Sides pinch in as value decreases.
0Straight sides.
0 < x < 1Sides bulge out as value increases.
1Circumscribed circle.
> 1Sides continue to bulge out, forming curved petals.

Polygon Phase

For polygonal pots, this is the polygon's rotation, as a normalized angle. Note that this property has no effect unless Polygon Sides is at least two.

Scallop

Scallops

Scallops are vertical grooves in the pot's wall, resulting from a scallop waveform that's applied to the pot's radius. This property sets the number of scallops. For normal operation, use integer values; a fractional number of scallops may cause a sharp edge in the pot's surface. Note that this property has no effect unless Scallop Depth is also non-zero.

Scallop Depth

This sets the depth of the scallops, normally in millimeters. Note that this property has no effect unless Scallops is also non-zero. Also note that if Scallop Operation is Multiply, Divide, or Exponentiate, the depth is used as a scaling factor and much smaller values are recommended.

Scallop Phase

This is the initial phase of the Scallops waveform, as a normalized angle. This is useful if you want the waveform to start at a phase other than 0°. Note that this property has no effect unless both Scallops and Scallop Depth are non-zero. Applying a modulation to this property results in wavy scallops.

Scallop Waveform

This selects which waveform is used to create scallops. The default is a sine wave.

Note that the Ramp Up, Ramp Down, and Square waveforms may cause excessively thin radial walls. The same warning applies to pulse waveforms that lack sufficient slew.

To create pinwheel shapes, use a Triangular Pulse with a Pulse Width of one, and skew the triangle via Slew.

Scallop Operation

This determines how the scallop waveform operates on the radius of each of the pot's rings. The following operations are available:

OperationDescription
AddThe scallop waveform is added to the radius.
SubtractThe scallop waveform is subtracted from the radius.
MultiplyThe radius is multiplied by the scallop waveform. If the waveform is positive, the radius is multiplied by the waveform plus one, otherwise it's multiplied by the waveform minus one.
DivideThe radius is divided by scallop waveform. If the waveform is positive, the radius is divided by the waveform plus one, otherwise it's divided by the waveform minus one.
ExponentiateThe waveform is used as an exponent, and the radius is multiplied by two raised to that exponent.

For Add and Subtract, the scallop depth doesn't scale with radius. This may be undesirable if the pot's radius varies widely, because the scallops may appear too shallow where the pot is wide, or too deep where the pot is narrow. If you want the scallops to scale proportionally with radius, use Multiply, Divide, or Exponentiate.

Exponentiate is optimal for proportional scaling. For example if the waveform ranges from −1 to 1, Exponentiate produces values ranging from 2−1 to 21, i.e. from ½ to 2. Thus the effect ranges from halving to doubling. Note that this assumes Scallop Depth is one. If Scallop Depth were two, Exponentiate would produce values ranging from 2−2 to 22, i.e. from ¼ to 4 instead.

Scallop Range

This lets you select the range of the Scallop Waveform. The following normalized ranges are available:

RangeDescription
BipolarThe waveform ranges from −1 to 1.
UnipolarThe waveform ranges from 0 to 1.

Scallop Motif

This selects a decorative motif and applies it to the Scallops waveform. Note that this property has no effect unless both Scallops and Scallop Depth are non-zero.

Scallop Power

This is the base used for exponential Scallops. If it's zero, exponential scallops are disabled. Otherwise, the curvature of the scallops becomes more extreme as the power diverges from one. This property lets you make a wider variety of shapes by distorting the scallop waveform. For more information, see Power. Exponential power can be applied in different ways, depending on the Scallop Power Type.

Scallop Power Type

This lets you select how exponential power is applied to the scallop waveform. It has no effect unless Scallop Power is non-zero. For more information, see Power Type.

Scallop Pulse Width

This property only affects pulse waveforms, and together with Scallop Slew it determines the pulse's shape. Also known as duty cycle, Pulse Width is the fraction of the cycle occupied by the pulse, normalized to the range zero to one. For more information, see Pulse Width.

Scallop Slew

This property only affects pulse waveforms, and together with Scallop Pulse Width it determines the pulse's shape. For the Pulse and Rounded Pulse waveforms, it sets how quickly the pulse rises and falls. For the Triangular Pulse waveform, it skews the triangle. For the Ramp Pulse waveform, it rotates the ramp. Slew is normalized to the range zero to one. For more information, see Slew.

Ripple

Ripples

Ripples are horizontal grooves in the pot's wall, resulting from a sine wave added to the pot's radius. This property sets the number of ripples. Note that this property has no effect unless Ripple Depth is also non-zero.

Ripple Depth

This sets the depth of the ripples, in millimeters. Note that this property has no effect unless Ripples is also non-zero.

Ripple Phase

This is the initial phase of the Ripples waveform, as a normalized angle. This is useful if you want the waveform to start at a phase other than 0°. Note that this property has no effect unless both Ripples and Ripple Depth are non-zero.

Ripple Motif

This selects a decorative motif and applies it to the Ripples waveform. Note that this property has no effect unless both Ripples and Ripple Depth are non-zero.

Ripple Operation

This determines how the ripple waveform operates on the radius of each of the pot's rings. The available operations are listed below. If you want the ripples to scale proportionally with the pot's radius, use Exponentiate, typically with a much smaller Ripple Depth.

OperationDescription
AddThe ripple waveform is added to the radius.
ExponentiateThe waveform is used as an exponent, and the radius is multiplied by two raised to that exponent.

If the pot's radius varies considerably, the Add operation may be unsatisfactory, because the ripples may be too deep in the pot's narrower portions, and too shallow in its wider portions. In such cases the Exponentiate operation may be preferable, because it proportionally scales the radius rather than offsetting it. Note that the reasonable range of Ripple Depth is much smaller for Exponentiate than it is for Add. With Add, a Ripple Depth of one is subtle, but with Exponentiate it produces ripples that extend from half the radius to double the radius, which is extreme. This is further explained below.

The ripple waveform is bipolar, meaning it ranges from negative to positive Ripple Depth. Hence when it's used as an exponent, the resulting ripple multiplier ranges from a fraction to its reciprocal. For example, if Ripple Depth is one, the multiplier ranges from 2−1 to 21 (½ to 2), whereas if Ripple Depth is two, the multiplier ranges from 2−2 to 22 (¼ to 4). A more moderate depth of 0.5 scales the radius by 2−0.5 to 20.5, or 0.707 to 1.414.

Ripple Power

This is the base used for exponential Ripples. If it's zero, exponential ripples are disabled. Otherwise, the curvature of the ripples becomes more extreme as the power diverges from one. This property lets you make a wider variety of shapes by distorting the ripple waveform. For more information, see Power. Exponential power can be applied in different ways, depending on the Ripple Power Type.

Ripple Power Type

This lets you select how exponential power is applied to the Ripples waveform. It has no effect unless Ripple Power is non-zero. For more information, see Power Type.

Bend

Bends

This sets the number of bends. Bends are sinusoidal offsets added to the pot's radius. The effect is similar to Ripples but with an extra oscillator: in addition to the sine wave applied vertically to the pot's surface, a second sine wave is applied around the circumference of each ring. Bends can be used to create complex surfaces such as S-curves, honeycombs, bumps, and pits. For even more variety, a third oscillator is available; see Ruffles. Note that this property has no effect unless Bend Depth is also non-zero, and for typical usage, Bend Poles should also be non-zero.

Bend Depth

This sets the depth of the bends, normally in millimeters. Note that this property has no effect unless Bends is also non-zero. Also note that if Bend Operation is Exponentiate, the depth is used as a scaling factor and much smaller values are recommended.

Bend Phase

This is the initial phase of the Bends waveform, as a normalized angle. This is useful if you want the waveform to start at a phase other than 0°. Note that this property has no effect unless Bends and Bend Depth are both non-zero.

Bend Motif

This selects a decorative motif and applies it to the Bends waveform. Note that this property has no effect unless Bends and Bend Depth are both non-zero. For more complex results, such as bumps and pits, you can also apply a motif to the bend poles waveform, via Bend Pole Motif.

Bend Poles

This sets the frequency of the secondary oscillator in the Bends effect. If this property is zero, the bends effect is identical to Ripples. For S-curves, use a value of one. For honeycomb effects, use values greater than one. For normal operation, use integer values; a fractional number of poles may cause thin-walled areas in the pot's surface. Note that this property has no effect unless Bends and Bend Depth are both non-zero.

Bend Pole Phase

This is the initial phase of the Bend Poles waveform, as a normalized angle. This is useful if you want the waveform to start at a phase other than 0°. Special effects similar to twist can be created by applying a modulation to this property. Note that this property has no effect unless Bends, Bend Depth and Bend Poles are all non-zero.

Bend Pole Motif

This selects a decorative motif and applies it to the Bend Poles waveform. Note that this property has no effect unless Bends, Bend Depth and Bend Poles are all non-zero. For bumps, set this property and Bend Motif to Parted Reeds; for pits, set them both to Parted Flutes.

Bend Operation

This determines how the bend waveform operates on the radius of each of the pot's rings. The available operations are listed below. If you want the bends to scale proportionally with the pot's radius, use Exponentiate, typically with a much smaller Bend Depth.

OperationDescription
AddThe bend waveform is added to the radius.
ExponentiateThe waveform is used as an exponent, and the radius is multiplied by two raised to that exponent.

If the pot's radius varies considerably, the Add operation may be unsatisfactory, because the bends may be too deep in the pot's narrower portions, and too shallow in its wider portions. In such cases the Exponentiate operation may be preferable, because it proportionally scales the radius rather than offsetting it. Note that the reasonable range of Bend Depth is much smaller for Exponentiate than it is for Add. With Add, a Bend Depth of one is subtle, but with Exponentiate it produces bends that extend from half the radius to double the radius, which is extreme. This is further explained below.

The bend waveform is bipolar, meaning it ranges from negative to positive Bend Depth. Hence when it's used as an exponent, the resulting bend multiplier ranges from a fraction to its reciprocal. For example, if Bend Depth is one, the multiplier ranges from 2−1 to 21 (½ to 2), whereas if Bend Depth is two, the multiplier ranges from 2−2 to 22 (¼ to 4). A more moderate depth of 0.5 scales the radius by 2−0.5 to 20.5, or 0.707 to 1.414.

Bend Power

This is the base used for exponential Bends. If it's zero, exponential bends are disabled. Otherwise, the curvature of the bends becomes more extreme as the power diverges from one. This property lets you make a wider variety of shapes by distorting the bend waveform. For more information, see Power. Exponential power can be applied in different ways, depending on the Bend Power Type.

Bend Power Type

This lets you select how exponential power is applied to the Bends waveform. It has no effect unless Bend Power is non-zero. For more information, see Power Type.

Ruffle

Ruffles

This sets the number of ruffles. Ruffles are essentially wavy ripples, and they're an optional feature of the Bend effect. The Bend effect consists of three LFOs (Low Frequency Oscillators), which interact to change the pot's radius, as follows:

LFOFunction
BendThis LFO varies the radius periodically with vertical position; by itself it's identical to Ripples.
PoleThis LFO varies the radius periodically with angle, similarly to Scallops; in combination with the Bend LFO, it creates honeycomb-like effects.
RuffleThis LFO also varies with angle, but instead of changing the radius, it changes the phase of the Bend LFO. This produces wavy ripples, also known as ruffles.

You can have poles without ruffles, or ruffles without poles, but the Pole and Ruffle LFOs both depend on the Bend LFO. To enable ruffles, the Bends, Bend Depth, Ruffles, and Ruffle Depth properties must all be non-zero.

Ruffle Depth

This sets the depth of the ruffles. It's normalized such that a value of one yields ruffles twice the height of the pot. Much smaller values are recommended, for example 0.1 is a reasonable starting value. Note that to enable ruffles, the Bends, Bend Depth, Ruffles, and Ruffle Depth properties must all be non-zero.

Ruffle Phase

This is the initial phase of the Ruffles waveform, as a normalized angle. This is useful if you want the waveform to start at a phase other than 0°. Ruffle Phase is relative to Bend Pole Phase; in other words, it's the rotational difference between the ruffles and the poles. Note that this property has no effect unless Bends, Bend Depth, Ruffles, and Ruffle Depth are all non-zero.

Ruffle Waveform

This selects which waveform is used to create ruffles. The default is a sine wave. Note that this property has no effect unless Bends, Bend Depth, Ruffles, and Ruffle Depth are all non-zero.

Ruffle Motif

This selects a decorative motif and applies it to the Ruffles waveform. Note that this property has no effect unless Bends, Bend Depth, Ruffles, and Ruffle Depth are all non-zero.

Ruffle Power

This is the base used for exponential Ruffles. If it's zero, exponential ruffles are disabled. Otherwise, the curvature of the ruffles becomes more extreme as the power diverges from one. This property lets you make a wider variety of shapes by distorting the ruffle waveform. For more information, see Power. Exponential power can be applied in different ways, depending on the Ruffle Power Type. Note that this property has no effect unless Bends, Bend Depth, Ruffles, and Ruffle Depth are all non-zero.

Ruffle Power Type

This lets you select how exponential power is applied to the Ruffles waveform. It has no effect unless Ruffle Power is non-zero. For more information, see Power Type.

Ruffle Pulse Width

This property only affects pulse waveforms, and together with Ruffle Slew it determines the pulse's shape. Also known as duty cycle, Pulse Width is the fraction of the cycle occupied by the pulse, normalized to the range zero to one. For more information, see Pulse Width.

Ruffle Slew

This property only affects pulse waveforms, and together with Ruffle Pulse Width it determines the pulse's shape. For the Pulse and Rounded Pulse waveforms, it sets how quickly the pulse rises and falls. For the Triangular Pulse waveform, it skews the triangle. For the Ramp Pulse waveform, it rotates the ramp. Slew is normalized to the range zero to one. For more information, see Slew.

Helix

Helix Frequency

The Helix effect is a sinusoidal displacement added to the origin of each of the pot's rings. The resulting effect resembles a corkscrew. Helix is similar to Twist, except that Twist affects the radius whereas Helix affects the origin. This property sets the frequency of the helix, as a normalized angle; it determines the number of 360° rotations over the height of the pot. Note that this property has no effect unless Helix Amplitude is also non-zero.

Helix Amplitude

This is the amplitude of the helical displacement, in millimeters. Note that this property has no effect unless Helix Frequency is also non-zero.

Texture

Texture Path

This is the path to an image file containing a texture to display on the pot. Supported image formats include bitmap (BMP), PNG, and JPEG; for a complete list, see below. If this property is blank, a texture is synthesized using the current palette and color properties.

To load a texture, left-click the property to display a browse button on the right; then left-click the browse button to display a file dialog, navigate to the desired folder, select the image file, and press OK. You can also type or paste a path if you prefer.

You can also load a texture via the File menu's Load Texture command, or by dragging and dropping a suitable file from Explorer onto PotterDraw's main window.

How the texture is mapped onto the pot is determined by various properties, most importantly the color pattern. To minimize image distortion, use either Stripes or Polar mapping, with specific values for certain properties, as shown below.

Color PatternColor CyclesStripes FrequencyStripes AmplitudeCycles V
Stripes110−1
PolarN/A11N/A

The following file formats can be used as texture:

TypeDescription
BMPWindows bitmap (BMP) file format.
DDSDirectDraw surface (DDS) file format.
DIBWindows device-independent bitmap (DIB) file format.
HDRHigh dynamic range (HDR) file format.
JPGJoint Photographics Experts Group (JPEG) compressed file format.
PFMPortable float map file format.
PNGPortable Network Graphics (PNG) file format.
PPMPortable pixmap (PPM) file format.
TGATruevision (Targa, or TGA) image file format.

Colors

This is the number of colors in the palette used for texture synthesis. The number of colors can also be changed by adding or deleting colors in the Palette Bar. This property only affects synthesized texture; it has no effect if the texture is an image file.

Color Sharpness

This sets the sharpness or fuzziness of the colors used for texture synthesis. For maximum sharpness, use 100; for maximum fuzziness and blending, use 1. Technically this property determines the width (in pixels) of each color in the palette. This property only affects synthesized texture; it has no effect if the texture is an image file.

Color Cycles

This sets how many times the colors are cycled in synthesized textures. It also affects the mapping of image file textures. In general larger values make the texture busier. Notes that this property has no effect on the Polar color pattern.

Stripe Frequency

The stripes effect generates sinusoidal waves in the pot's texture. The waveform is applied to the texture coordinates, so it affects both synthesized and image file textures. This property sets the frequency of the stripes effect, as a number of cycles. Note that this property has no effect unless Stripe Amplitude is also non-zero.

Stripe Amplitude

This sets the amplitude of the stripes effect. Note that this property has no effect unless Stripe Frequency is also non-zero.

Stripe Phase

This is the initial phase of the stripes waveform, as a normalized angle. This is useful if you want the waveform to start at a phase other than 0°. Note that this property has no effect unless both Stripe Frequency and Stripe Amplitude are non-zero.

Petals

This sets the number of petals generated by the Petals Color Pattern. It has no effect on other color patterns.

Color Pattern

This selects a color pattern, which determines how the current texture is mapped onto the pot. Color patterns are trigonometric mapping functions that generate a two-dimensional texture coordinate for each of the pot's vertices. The mapping affects both synthesized and user-specified textures. By convention the two texture coordinate axes are named U and V, to avoid confusion with the Cartesian axes. The color pattern selection affects which texture properties are applicable; see Texture Property Usage.

PatternDescription
StripesThis function generates vertical stripes. The stripes can be made wavy by setting Stripe Frequency and Stripe Amplitude non-zero. More complex waviness can be achieved by applying modulations to the Stripe properties. The Stripes function is also useful for typical cylindrical texture mapping, in which an image is wrapped around the cylinder like a sheet of paper. In this case, to minimize distortion, set stripe amplitude to zero.

RingsThis function generates horizontal rings. The rings can be made wavy by setting Stripe Frequency and Stripe Amplitude non-zero.

PetalsThis function generates petal-like shapes. It's affected by the stripe frequency and amplitude. The Petals property determines the number of petals.

PolarThis function uses polar coordinates to map a circular image onto the pot, such that the center of the image is mapped to the center of the pot's bottom. This function is primarily intended for use with a square user-specified texture containing a circular, radially symmetrical pattern that's centered within the square. Note that for typical polar mapping, both Stripe Frequency and Stripe Amplitude should be one. Use Stripe Phase to rotate the texture around the center, and V Offset to shift it vertically. The V axis is alternately flipped for smooth wrapping.

RadiusThis function uses the radius as the U coordinate, resulting in a texture mapping that illustrates the contours of the pot. It's more interesting if the pot isn't circular, e.g. if it's polygonal or has scallops. The radius is normalized so that when Color Cycles is one, the pot's range of radius matches the range of the U coordinate. Use U Offset to shift the radius mapping. This function doesn't use Stripe Frequency or Stripe Amplitude.

AzimuthThis function sets the U coordinates according to how non-round the surface is. The azimuthal portion of each vertex normal is compared to a circular reference, yielding an angle of deviation from circular, in normalized degrees. The azimuthal deviation is multiplied by Color Cycles and has U Offset added to it. This function is only useful if some portion of the pot isn't round.

InclineThis function sets the U coordinates according to how non-vertical the surface is. The inclinational portion of each vertex normal is compared to a vertical reference, yielding an angle of deviation from vertical, in normalized degrees. The inclinational deviation is multiplied by Color Cycles and has U Offset added to it. This function is only useful if some portion of the pot isn't vertical.

Azimuth & InclineThis function combines the Azimuth and Incline functions described above. Azimuthal deviation (non-roundness) controls the U coordinate, while inclinational deviation (non-verticalness) controls the V coordinate. The resulting texture mapping fully illustrates the pot's 3D curvature.
EdgesThis function sets the U coordinates according to how much the curvature varies. This causes edges to be highlighted in proportion to how sharp they are. Specifically, for each vertex, the standard deviation of the adjacent face normals is computed. The more the normals deviate, the larger the corresponding U coordinate value is. The sensitivity of the edge detection is adjustable via the Edge Gain property.

Texture Property Usage

 Color CyclesStripe FrequencyStripe AmplitudeStripe PhasePetalsU OffsetV OffsetV CyclesEdge Gain
StripesYesYesYesYesNoYesYesYesNo
RingsYesYesYesYesNoYesYesYesNo
PetalsYesYesYesYesYesYesYesYesNo
PolarNoYesYesYesNoNoYesNoNo
RadiusYesNoNoNoNoYesYesYesNo
AzimuthYesNoNoNoNoYesYesYesNo
InclineYesNoNoNoNoYesYesYesNo
Azimuth & InclineYesNoNoNoNoYesYesYesNo
EdgesYesNoNoNoNoYesYesYesYes

Palette Type

This selects a palette type, which determines how the palette is used for texture synthesis.

TypeDescription
LinearThe palette colors are mapped into a one-dimensional texture. The texture is one pixel high, forming a single row which is divided into linear swatches, one for each of the palette's colors. The size of each swatch is determined by the Color Sharpness, thus the texture's width equals the color sharpness times the number of colors.
ComplementThe palette colors and their complements are mapped into a two-dimensional texture. The texture is two pixels high, and its width is the number of colors times the Color Sharpness. The first row contains the palette colors, and the second row contains their complements, in reverse order. In other words, if the palette consists of red, green and blue, the second row will be yellow, magenta, and cyan.
SplitThe palette colors are mapped into a two-dimensional texture. The texture is two pixels high, and its width is half the number of colors times the Color Sharpness. The first row contains the first half of the palette, and the second row contains the second half. The palette should contain an even number of colors, otherwise its last color will be skipped.

U Offset

This is an offset added to the U-value of texture coordinates. Its effect depends on which color pattern is in use. Texture coordinates are normalized from zero to one.

V Offset

This is an offset added to the V-value of texture coordinates. Its effect depends on which color pattern is in use. Texture coordinates are normalized from zero to one.

Cycles V

This sets the number of times the V-value of texture coordinates is cycled during texture mapping. Values greater than one cause the texture to be repeated in the V-axis.

Edge Gain

This sets the sensitivity of the Edges color pattern. The larger its value, the more edges are amplified. In other words, the larger its value, the less variation it takes for an area to be considered an edge. The edge detection algorithm computes the standard deviation of the adjacent face normals at each vertex. The deviation is then logarithmically scaled, in order to amplify small differences. Edge Gain controls the amount of scaling. It's a base ten exponent, so each successive integer is ten times more gain, i.e. 1 is x10, 2 is x100, 3 is x1000, etc.

Edge sensitivity is also affected by the mesh density, which is determined by Rings and Sides. If either of these properties are changed significantly, the edge areas may grow or shrink, and you may need to adjust Edge Gain to compensate.

View

Animation

This enables or disables the animation of any mesh or texture properties that are ready to animate. A property is ready to animate if has an active modulation with a non-zero Phase Speed. Modulation and animation readiness are indicated by the presence and color of an upward-pointing triangle to the left of the property's name in the Properties bar, as shown in the table below.

TriangleMeaning
NoneThe property isn't modulated. To modulate it, set its Waveform to a value other than None, and configure other modulation parameters as needed.
BlueThe property is modulated, but not ready to animate. To make it ready, set its Phase Speed to a non-zero value.
OrangeThe property is ready to animate, but animation is disabled.
GreenThe property is animating.

To enable animation, set the Animation property to true, or use the View/Animation main menu command. Enabling animation causes the view to automatically update itself at the current frame rate. For every frame, PotterDraw iterates through the animated properties and advances their oscillators by the appropriate amount.

Frame Rate

This sets the frame rate in frames per second. It's only relevant during animation, auto-rotation or video recording.

Background Color

This sets the view's background color. To pick a color, left-click the down-arrow button on the right side of the property's value. A small drop-down palette is displayed. If the desired color is available, select it by left-clicking its swatch, otherwise left-click "More Colors" to display a color dialog. You can also enter a numeric color value in hexadecimal.

Auto Rotate

Auto Rotate Yaw

This sets the yaw speed when auto-rotating the view, in degrees per second.

Auto Rotate Pitch

This sets the pitch speed when auto-rotating the view, in degrees per second.

Auto Rotate Roll

This sets the roll speed when auto-rotating the view, in degrees per second.

Auto Rotate Zoom

This sets the zoom speed when auto-rotating the view, in percent per second. Use a positive percentage to zoom in, or a negative percentage to zoom out. Automatic zoom can be useful for demos or when recording a video.

If you're making a video, you may want to know what auto-zoom percentage will reach a given scaling by the end of the video. The calculation is as follows:

AutoZoom = (exp(log(Scaling) / Duration)) - 1) * 100

For example to zoom by 5x (500%) over 30 seconds:

AutoZoom = (exp(log(5) / 30) - 1) * 100
AutoZoom = 5.5113

Modulation

Modulation

PotterDraw properties can be modified by oscillators, a process called modulation. Most mesh and texture properties can be modulated, with a few exceptions. Each property has its own Low-Frequency Oscillator (LFO), allowing multiple properties to be modulated at once. The LFO outputs a periodic waveform having a user-specified frequency and amplitude. This waveform is applied to the property using an operation such as addition, subtraction, multiplication, or division.

The waveform's cycle is synchronized with vertical position on the pot. In other words, if the modulation frequency is one, the waveform completes one cycle from the bottom to the top of the pot. The waveform's cycle can also be varied over time during animation; this is accomplished by setting the modulation's phase speed.

Modulation can be used as an envelope that incrementally increases or decreases the strength of an effect. This lets you limit the scope of a property, so that instead of affecting the entire pot, it only affects a given subset of the pot's rings.

You can also modulate your modulations; see secondary modulation.

Creating modulations

To create a modulation, first show the Modulation bar, via View/Toolbars and Docking Windows/Modulation. Then select the desired target property, by left-clicking its name in the Properties bar, or by selecting it in the Modulation bar's Target drop-list. Now make the modulation active by setting its Waveform to a value other than None. You may also want to change the other modulation parameters.

A modulated property has an upward-pointing triangle to the left of its name in the Properties bar. The triangle's color indicates the property's animation state: green or orange if the property is animating or ready to animate, otherwise blue.

It may be helpful to also show the Oscilloscope bar, which draws a plot of the currently selected property's modulation.

Target

This specifies which PotterDraw property the Modulation bar is currently affecting, also known as the target property. It contains a drop list of all the properties that can be modulated. You can also change the modulation target by left-clicking a property name in the Properties bar.

Most target properties are floating-point values, but enumerated values such as Scallop Motif can also be modulated. Note that the following properties can't be modulated: Rings, Sides, Texture Path, Colors, Color Sharpness, and Palette Type.

Type

This enables secondary modulation, an advanced feature. If you're new to PotterDraw, leave this set to "Property". This setting changes the meaning of both the modulation bar and the oscilloscope, as explained below.

TypeMeaningComment
PropertyPrimary modulationThe modulation bar edits the primary modulation, i.e. the LFO that directly modulates the currently selected target property. Similarly, the oscilloscope plots the modulated target property. This is the default setting. Don't change it unless you're an advanced user.
Any other valueSecondary modulationThe modulation bar edits a secondary modulation, i.e. an LFO that modulates one of the primary modulation's properties. This allows modulation of a modulation, also known as second-order modulation. In this case the oscilloscope plots the secondary modulation instead of the target property, and the name of the affected modulation property is highlighted in red as a reminder.

Waveform

This lets you select a modulation waveform. If it's None, modulation is disabled for the target property. The following waveforms are available:

WaveformDescription
NoneModulation is disabled.
SineA sine wave.
TriangleA triangle wave.
Ramp UpAn ascending ramp wave.
Ramp DownA descending ramp wave.
SquareA square wave.
PulseA pulse wave with variable Pulse Width and Slew.
Rounded PulseA pulse wave having sinusoidal transitions, with variable Pulse Width and Slew.
Circular PulseA pulse wave having circular or elliptical transitions, with variable Pulse Width and Slew.
Triangular PulseA triangular pulse wave with variable Pulse Width and Slew.
Ramp PulseA ramp pulse with variable Pulse Width and Slew.
Sine CubedA sine wave raised to the third power.
FlameA flame-like wave, similar to the Flame stitch in needlepoint, resulting from: squarewave(x) - squarewave(x * 2) * cos(x * PI * 2).
SemicircleA semicircle wave, consisting of alternating half-circles.

Operation

This lets you specify how the modulation affects the target property. The following operations are available:

OperationDescription
AddThe modulation output is added to the target property.
SubtractThe modulation output is subtracted from the target property.
MultiplyThe target property is multiplied by the modulation output.
DivideThe target property is divided by the modulation output. The user is responsible for ensuring that the modulation doesn't output zero.
ExponentiateThe waveform is used as an exponent, and the target property is multiplied by two raised to that exponent.

Exponentiate is optimal for proportional scaling. For example if the waveform ranges from −1 to 1, Exponentiate produces values ranging from 2−1 to 21, i.e. from ½ to 2. Thus the effect ranges from halving to doubling. Note that this assumes Amplitude is one. If Amplitude were two, Exponentiate would produce values ranging from 2−2 to 22, i.e. from ¼ to 4 instead.

Range

This lets you select the range of the modulation oscillator. The following normalized ranges are available:

RangeDescription
BipolarThe oscillator's output ranges from −1 to 1.
UnipolarThe oscillator's output ranges from 0 to 1.

Motif

This selects a motif and applies it to the modulation oscillator. A motif is a decorative embellishment of a periodic waveform. It can emulate various types of gadrooning—specifically reeding and fluting—commonly seen in classical architecture and furniture design. The table below explains the available motifs.

MotifAppearanceMethodExpression
InvertOppositeNegative values are made positive, and vice versa; inversion−x
ReedsConvex ridgesNegative values are made positive; full-wave rectificationabs(x)
FlutesConcave groovesPositive values are made negative; inverted full-wave rectification−abs(x)
Parted ReedsConvex ridges separated by gapsNegative values are zeroed; half-wave rectificationmax(x, 0)
Parted FlutesConcave grooves separated by gapsPositive values are zeroed; inverted half-wave rectificationmin(x, 0)

Frequency

This sets the frequency of the modulation oscillator. The frequency is in cycles per pot height, i.e. if the frequency is one, the waveform does one complete cycle from the bottom to the top of the pot. If the frequency is zero, the modulation output doesn't vary with vertical position, but it may still vary with time, if phase speed is non-zero and animation is enabled.

Amplitude

This sets the amplitude of the modulation oscillator. The unit is the same as the target property's unit.

Phase

This is the initial phase of the modulation oscillator, as a normalized angle. This is useful if you want the waveform to start at a phase other than 0°. The phase can also be automatically incremented for each frame of an animation, by setting a non-zero Phase Speed.

Phase Speed

This sets how rapidly the modulation changes phase during animation, in Hertz (cycles per second). Note that this property is only effective while animation is enabled, otherwise it's ignored. If it's zero, time has no effect on the oscillator. If it's negative, the oscillator runs backwards. Normally the modulation also varies with vertical position, but you can disable this by setting the modulation frequency to zero.

Bias

This is an offset added to the modulation, before it's scaled by the amplitude. The bias is in oscillator normalized units, which means one cycle corresponds to [−1..1] or [0..1] depending on the range setting.

Power

This is the base used for exponential modulation. If it's zero, exponential modulation is disabled. Otherwise, the modulation's curvature becomes more extreme as the power diverges from one, as shown in the table below. This property supports a huge range of values, so it's usually best to change it by large amounts, e.g. powers of ten.

ValueDescription
< 0Not allowed.
0Linear (disabled).
0 < x < 1Starts out curving more steeply and then levels off; the smaller the value, the more extreme the curvature.
1Linear. Use zero instead to avoid needless computations.
> 1Starts out curving more gradually and then gets steeper; the larger the value, the more extreme the curvature.

Exponential modulation is also affected by Power Type. If the power type is asymmetric, the wave's upper and lower halves are affected differently, in which case a given power and its reciprocal (e.g. 10 and 0.1) produce mirror images of each other. If the power type is symmetric, the wave's upper and lower halves are affected equally, and the wave's vertical symmetry (if any) is preserved. The image below shows how a range of powers affect a sine wave, for both power types. Other waveforms respond similarly.

Power Type

This determines how exponential power is applied to the waveform during modulation. The available methods are listed below, and illustrated here.

Power TypeDescription
AsymmetricPower is applied while the wave is unipolar, so that the wave's upper and lower halves are affected differently, giving the wave a lopsided appearance.
SymmetricPower is applied while the wave is bipolar, so that the wave's upper and lower halves are affected equally, preserving any vertical symmetry the wave may have.

Pulse Width

This property only affects pulse waveforms, and together with Slew it determines the pulse's shape. Also known as duty cycle, Pulse Width is the fraction of the cycle occupied by the pulse, normalized to the range zero to one. If pulse width is zero, the pulse is non-existent. If it's one, the pulse occupies the entire cycle. If it's 0.5, the pulse occupies half the cycle.

Slew

This property only affects pulse waveforms, and together with Pulse Width it determines the pulse's shape. For the Pulse and Rounded Pulse waveforms, it sets how quickly the pulse rises and falls. For the Triangular Pulse waveform, it skews the triangle. For the Ramp Pulse waveform, it rotates the ramp. Slew is normalized to the range zero to one.

WaveformDescription
PulseSlew determines the portion of the pulse spent rising and falling. As slew increases, the pulse becomes less rectangular and more beveled. If slew is zero, the pulse is rectangular, because it rises and falls instantaneously. If slew is one, the pulse is an isosceles triangle, because it's entirely rise and fall, with no sustain. Otherwise, the pulse is an isosceles trapezoid. At the default slew of 0.5, the pulse is half rise and fall, and half sustain, i.e. 25% attack, 50% sustain, 25% decay.
Rounded PulseSlew determines the portion of the pulse spent rising and falling, but the rise and fall are curved rather than linear. As slew increases, the pulse becomes less rectangular and more sinusoidal. The rounded pulse is useful for smoothly fading effects in and out, because it avoids banding artifacts caused by sudden slope changes. If slew is zero, the pulse is rectangular. If slew is one, the pulse is the positive half of a sine wave. Otherwise, the pulse is an isosceles trapezoid, but with sinusoids replacing the beveled sides.
Circular PulseSlew determines the portion of the pulse spent rising and falling, but the rise and fall are circular quadrants rather than linear. As slew increases, the pulse becomes less rectangular and more semicircular. If slew is zero, the pulse is rectangular. If slew is one, the pulse is a semicircle or semiellipse.
Triangular PulseSlew determines how skewed the triangle is. If it's zero, the pulse is a ramp (sawtooth). If it's one, the pulse is also a ramp, but sloping up instead of down. At the default value of 0.5, the pulse is an isosceles triangle. The pulse can be curved via the Power property.
Ramp PulseSlew determines how skewed the ramp is. If it's zero, the pulse is a typical ramp. If it's one, the pulse has a lightning bolt shape. At the default value of 0.5, the pulse is a triangle wave. The lightning bolt shape slopes from the center to one rail, and then slopes from the other rail back to the center.

Secondary modulation

Each of PotterDraw's properties can be modulated by an oscillator. Each of these oscillators has its own properties, such as waveform, frequency, amplitude and so on, and these properties can also be modulated. In other words, you can modulate a modulation. This means there are two levels of modulation in PotterDraw: primary modulation, in which an oscillator directly modulates one of the pot's properties, and secondary modulation, in which an oscillator modulates a property of a primary modulation.

Secondary modulation is an advanced feature that lets you create more complex effects. Its most common applications are amplitude modulation (AM) and frequency modulation (FM). For example you might want to apply a waveform to a property, but only on part of the pot. This is amplitude modulation, and it can be visualized as applying an amplitude envelope to a waveform. For another example, you might want the waveform's frequency to vary over the range of the pot. This is frequency modulation.

Other more esoteric types of modulation are supported, such as pulse width modulation (PWM), phase modulation, etc. Mutiple-choice (drop list) properties such as waveform or motif can also be modulated, but note that because they're integers they will modulate in discrete steps rather than continuously. Multiple types of secondary modulation can be applied to the same primary modulation, for example you could modulate a primary modulation's amplitude AND its frequency.

Secondary modulations are accessed via the modulation type drop list. This setting affects what's shown in both the modulation and oscilloscope bars. When modulation type is set to "Property", you're accessing the target property's primary modulation, but if it's set to any other value, you're accessing a secondary modulation. Note that for a secondary modulation to have any effect, the primary modulation it applies to must be enabled, i.e. its waveform must be set to something other than "None".

Example

Suppose you're modulating the Scallop Depth property with a sine wave, so that the scallops undulate as they progress vertically up the pot. Now suppose you also want to vary the intensity of that undulation, so that it's strong at the bottom of the pot, and gradually weakens to nonexistent at the top of the pot. In other words, you want to apply an amplitude envelope to the undulation. More specifically, you want to modulate the amplitude of the Scallop Depth modulation with a descending ramp wave. You could do this as follows:

  1. In a new document, set the number of scallops to 5, and the scallop depth to 10. Also disable Texture so you can see the pot's shape more clearly.
  2. In the modulation bar, make sure the selected target is "Scallop Depth". Now set the waveform to "Sine", and the operation to "Multiply". You should see undulations in your scallops.
  3. Change the modulation type from "Property" to "Amplitude". You're now editing a secondary modulation (amplitude modulation), and the Amplitude row is highlighted in red to remind you of this. Notice that the modulation properties and oscilloscope no longer reflect the edits you made in step 2, because you're no longer accessing the primary modulation.
  4. Change the waveform to "Ramp Down", the operation to "Multiply", and the range to "Unipolar". The oscilloscope should show a ramp wave descending from one to zero. A blue triangle appears to the left of the Amplitude row to indicate that amplitude is modulated.
  5. Change the modulation type back to "Property". The edits you made in step 2 reappear, and the oscilloscope and the view should now show an amplitude-modulated scallop depth modulation.

Oscilloscope

Oscilloscope

The oscilloscope helps you to visualize your modulations. It displays a plot of the currently selected property, including the effect of the property's modulation if any. The plot is continuously updated during animation. The plot's vertical axis corresponds to vertical position on the pot, from bottom to top. The horizontal axis is automatically scaled to fit the range of property values. To show the Oscilloscope bar, use View/Toolbars and Docking Windows/Oscilloscope.

The oscilloscope can optionally display all modulated properties at once, so that you can see how your modulations interact with each other. This is particularly useful when animating multiple properties. To enable this feature, set Plot All Modulations to true in the Options dialog. The currently selected property is also shown, even if it isn't modulated. Note that if your modulations cover very different ranges, you may need to zoom or pan the plot to see the smaller ranges clearly; see below.

The oscilloscope window supports zooming (via mouse wheel) and panning (via left-click and drag). To zoom, left-click in the oscilloscope window to ensure it has focus, position the cursor at the desired location, and then spin the mouse wheel to zoom in or out. To pan, left-click in the oscilloscope window and while holding down the left mouse button, move the cursor left or right to scroll the plot.

Palette

Palette

The palette lets you choose the colors used for texture synthesis. To show the Palette bar, use View/Toolbars and Docking Windows/Palette. The palette bar has two components: a color picker on top, and underneath it a color bar, containing a row of square color swatches, one for each color in the palette. Note that if the pot's texture is a user-specified image file, changing the palette has no effect.

Editing a color

One of the swatches in the color bar has a highlight around it. This highlight indicates which of your palette's colors is displayed and editable in the color picker. To change the selected color, left-click a different color swatch. You can also use the arrow keys to scroll through the color swatches.

To edit a color, first select it the color bar as explained above. Then use the color picker to change its value as desired, and press the Apply button to save your change and update the view. The color picker has two pages, Standard and Custom, which are explained below.

Standard color picker

The Standard color picker limits you to the colors displayed on its hexagonal tiles. If one of these colors is acceptable, simply left-click it and press Apply. Pressing the Enter key is equivalent to pressing Apply. You can also double-click one of the hexagonal tiles, which picks the color and applies the change immediately, in which case there's no need to press the Apply button.

Custom color picker

The Custom color picker lets you pick any color, by adjusting the hue/saturation and lightness positions, or by entering numeric HLS or RGB values. The new and current colors are displayed on the right, below the buttons. When the new color is changed as desired, be sure to press Apply to save your change. Pressing the Enter key is equivalent to pressing Apply.

Palette editing commands

The palette can be reordered by dragging the color bar's swatches. You can also copy, cut and paste individual swatches using the standard Windows editing keys Ctrl+C, Ctrl+X, and Ctrl+V, or via the color bar's context menu. Use the Insert key to insert a swatch, or the Delete key to delete a swatch.

Texture synthesis

PotterDraw can synthesize a texture to display on the pot, using the colors specified in the palette. The Color Pattern selects a trigonometric mapping function that determines how the texture is mapped to the pot's surface, e.g. stripes, rings, petals, polar, etc. The mapping functions are affected by various parameters, including Color Cycles, Stripe Frequency, Stripe Amplitude, Stripe Phase, Petals, V Offset, and U Offset. The Palette Type determines how the palette colors are used in the texture.

Note that texture synthesis only occurs if the Texture Path property is blank. If Texture Path specifies an image file, the image file is used as the texture, and the palette is ignored.

Menus

File

New

Use this command to create a new PotterDraw document. To open an existing document, use Open instead.

Open

Use this command to open an existing PotterDraw document. A document can also be opened by drag/drop from Windows Explorer, or by specifying the document's path on the command line.

Close

Use this command to close the active document. If the document has been modified, you'll be prompted to save your changes.

Save

Use this command to save the active document to its current name and directory. If you want to change the name or directory of an existing document before you save it, use Save As instead.

Save As

Use this command to save and name the active document.

Export

Use this command to export the active document as a 2D image or a 3D model. The command displays a standard file dialog. Navigate to the desired location, enter a filename if necessary, and use the "Save as type" drop list to select the desired export type. The export types are explained below.

2D exports

The 2D exports output an image with the same dimensions as the current view, unless Use Custom Image Size is set to true in the Options dialog. In the latter case the dimensions are specified by Custom Image Width and Custom Image Height, also in the Options dialog, regardless of the view's size. This is useful for exporting images with specific dimensions, or high-resolution images bigger than the view.

FormatComments
BMPOutputs a Device-Independent Bitmap file with 24-bit color.
PNGOutputs a Portable Network Graphics file with 24-bit color. The resulting file may be significantly smaller than the equivalent bitmap, with no loss of quality.

3D exports

The 3D exports have been tested using MeshLab. If you need a 3D format that PotterDraw doesn't support, it's recommended to export PLY or OBJ and use MeshLab to convert to the desired format.

FormatComments
OBJOutputs a Wavefront OBJ file, along with its corresponding MTL file specifying material properties. This export handles texture mapping. The texture file is automatically copied to the destination folder, and renamed if necessary to avoid spaces in the filename. OBJ is an ASCII format, which is potentially less accurate than a binary format, depending on the numeric precision used. The default precision is six digits after the decimal point, but this can be changed via Floating-Point Precision in the Options dialog.
PLYOutputs a PLY file. This export handles texture mapping. The texture file is automatically copied to the destination folder, and renamed if necessary to avoid spaces in the filename. Not all applications support texture mapping in PLY files, but vertex color is widely supported. To output a PLY with vertex color instead of texture mapping, set Use Vertex Color to true in the Options dialog. PLY is a binary format, so numeric precision doesn't apply.
STLOutputs a binary Stereo Lithography (STL) file. This export doesn't handle texture mapping or color. STL format doesn't support vertex indices, and consequently STL files contain large numbers of duplicate vertices.

Record

Use this command to record a video of an animation. The video is recorded as a series of sequentially-numbered image files, which must be converted to a video using additional software such as ffmpeg or VLC. To start recording, use File/Record or the Record button on the main Toolbar.

The Record command first displays a folder dialog. Use the folder dialog to select a destination folder for the image files, and then press OK. Next the Record dialog is displayed. Use the Record dialog to specify the recording's duration (in time or frames), its frame rate in frames per second, its frame size in pixels, the image file format, and whether to automatically start animating and/or auto-rotating when recording begins. Press OK to start recording.

During recording, the Record Status dialog is displayed, so that you can tell how far along the recording is, and cancel it if necessary. Note that the application's user interface may be sluggish during recording, due to the overhead of creating image files, particularly for large frame sizes.

The usual reason to make a video is to show auto-rotation, animation, or both. If neither of these features is enabled, the recording may be dull. Note that for animation to do anything you must have at least one modulation with a non-zero Phase Speed. It's difficult (but not impossible) to manually change the pot's properties during recording, due to the aforementioned sluggishness of the user interface.

ItemComments
DurationUse this edit box to enter the recording's duration. Use the radio buttons to specify what unit the duration is in. If the unit is Time, the duration is hours, minutes, and seconds in H:MM:SS format. Otherwise it's a frame count.
Frame RateUse this edit box to enter the recording's frame rate, in frames per second. Fractional frame rates are permitted. For best results, specify this same frame rate in whatever software you use to convert the image files to a video.
Frame SizeUse this drop list to select the recording's frame size, in pixels. If the desired dimensions aren't listed, select Custom and use the Width and Height edit boxes to enter the dimensions.
File FormatUse this drop list to specify which image file format the recording should use. Note that using PNG format will usually result in smaller files without any loss of quality, but may slow the recording process, due to compression overhead.
Auto RotateCheck this if you want the pot to automatically rotate during the recording.
AnimationCheck this if you want the pot to animate during the recording.

Load Texture

Use this command to load a texture from a file. The command displays a file dialog. Navigate to the appropriate location, select the desired file, and press OK to load the file.

You can also load a texture via the Texture Path property, or by dragging and dropping a suitable file from Explorer onto PotterDraw's main window.

Print Setup

Use this command to select a printer, page orientation, and paper size before printing the active document.

Printer

Allows you to specify the printer. If you don't select a printer, PotterDraw prints to the Windows default printer.

Paper

Allows you to select the paper size and source (from among those available for the printer). The sizes and sources available depend on the printer you have selected and they change when you change printers.

Orientation

Allows you to specify whether the program is to print in Portrait or Landscape orientation.

Print Preview

Use this command to see how the active document will look before printing it. To print the document, press the Print button. To navigate multiple pages, use the Next Page and Prev Page buttons or the scroll bar. To toggle between single and dual page view, press the Two Page button. To change magnification, use the Zoom In and Zoom Out buttons. To exit preview mode, press the Close button.

Print

Use this command to print the active document. You may need to set up your printer first. You may also want to see a preview before printing.

Exit

Use this command to end your PotterDraw session. You can also use the Close command on the application Control menu. PotterDraw prompts you to save documents with unsaved changes.

Edit

Undo

This command undoes the last action. To undo, use Edit/Undo, press Ctrl+Z, or select Undo from the toolbar. PotterDraw supports unlimited undo and redo.

Redo

This command redoes the previously undone action. To redo, use Edit/Redo, press Ctrl+Y, or select Redo from the toolbar. PotterDraw supports unlimited undo and redo.

Cut

This command deletes the selection after copying it to the clipboard. To cut, use Edit/Cut, press Ctrl+X, or select Cut from the Toolbar or the Spline bar's context menu.

Copy

This command copies the selection to the clipboard. To copy, use Edit/Copy, press Ctrl+C, or select Copy from the toolbar or the Spline bar's context menu.

Paste

This command inserts the contents of the clipboard at the cursor position. To paste, use Edit/Paste, press Ctrl+V, or select Paste from the toolbar or the Spline bar's context menu.

Delete

This command deletes the selection. To delete, use Edit/Delete, press the Delete key, or select Delete from the Spline bar's context menu.

Select All

This command selects all items. To select all, use Edit/Select All, or press Ctrl+A.

View

Toolbars and Docking Windows

This submenu lets you show or hide any of the toolbars and docking windows, including the Properties bar, the Modulation bar, the Spline bar, the Palette bar, and the Oscilloscope bar.

Status Bar

The status bar displays hints for the menus, and other status information. To show or hide the status bar, use View/Status Bar.

Record Status

This command shows or hides the record status dialog, which displays progress information during recording.

ItemDescription
DurationThe recording's intended duration, displayed in both time (hours, minutes, seconds), and number of frames (in parentheses).
CompletedThe portion of the recording completed so far, displayed in both time (hours, minutes, seconds), and number of frames (in parentheses).
RemainingAn estimate of the time remaining until the recording is finished, in days, hours, minutes, and seconds.

Application Look

This submenu allows you to customize PotterDraw's appearance. The different looks correspond to various versions of Windows.

Tabs

This command enables or disables the tabbed MDI (Multiple Document Interface) look, which is common in newer applications. Tabbed MDI shows a row of tabs above the view. The tabs allow you to switch between different documents, and can also be reordered via dragging. However the disadvantage of tabbed MDI is that only one document can be shown at a time.

The classic non-tabbed MDI can show multiple documents at once, and supports the Cascade, Tile Horizontal, Tile Vertical and Arrange Icons commands. To use the older MDI, disable Tabs.

Rotate

This submenu contains commands for rotating the view. Seven preset orientations are provided: Above, Front, Back, Top, Bottom, Left, and Right. These can be selected via the View menu, toolbar, or keyboard shortcuts, as shown below.

CommandShortcutResult
AboveShift+AView from above
FrontShift+FView from front
BackCtrl+Shift+FView from back
TopShift+TView from top
BottomCtrl+Shift+TView from bottom
LeftShift+SView from left
RightCtrl+Shift+SView from right

Note that you can also rotate the view by left-clicking in the view and then moving the cursor while keeping the left mouse button pressed.

Auto Rotate

This command enables or disables auto-rotation of the view. The rotation speed in each axis is specified by the View properties Auto Rotate Yaw, Auto Rotate Pitch, and Auto Rotate Roll. At least one of these properties must be non-zero for auto-rotate to work. Use the command View/Rotate/Auto Rotate or Shift+R.

Zero Rotation

This command resets the view's rotation to its default value. The panning is also reset. Use the command View/Rotate/Zero Rotation or Shift+Z.

Edit Rotation

This command lets you specify the view's rotation numerically. The Rotate dialog is displayed, showing the view's current rotation in each axis, in degrees. The X, Y, and Z values correspond to pitch, yaw and roll. Edit the values as desired and press OK to save your changes.

Pan

This submenu contains commands for panning the view. To reset the panning to its default value, use View/Rotate/Zero Rotation. The following commands pan the view by one step. To change the step size, edit Pan Step in the Options dialog.

CommandShortcutResult
LeftCtrl+LeftPan view left
RightCtrl+RightPan view right
UpCtrl+UpPan view up
DownCtrl+DownPan view down

Note that you can also pan the view by middle-clicking in the view and then moving the cursor while keeping the middle mouse button pressed.

Edit Panning

This command lets you specify the view's panning numerically. The Pan dialog is displayed, showing the view's current panning in each axis, in view coordinates. Edit the values as desired and press OK to save your changes.

Zoom In

This command zooms into the center of the view. The shortcut is Ctrl+=. The zoom step size is determined by Zoom Step in the Options dialog.

Zoom Out

This command zooms out from the center of the view. The shortcut is Ctrl+-. The zoom step size is determined by View Zoom Step in the Options dialog.

Zoom Reset

This commands resets the view's zoom to its default value. The shortcut is Ctrl+0. Note that this command doesn't reset the view's rotation or panning; to reset both of these, use View/Rotate/Zero Rotation or Shift+Z.

Animation

This command enables or disables animation. For animation to work, at least one mesh or texture property must have a modulation with a non-zero Phase Speed.

Step Forward

Use this command to step animated modulations forward by one frame. Combined with Step Backward, this lets you move to a precise position within an animation by stepping through it one frame at a time. This can be useful for fine-tuning an image or model prior to exporting it. The command is only available while the animation is stopped. The shortcut is Ctrl+Space.

Only animated modulations (those with a non-zero Phase Speed) are affected. The affected properties will have upward-pointing orange triangles to the left of their names in the Properties bar. If no animated modulations exist, the command is disabled.

Step Backward

Use this command to step animated modulations backward by one frame. Combined with Step Forward, this lets you move to a precise position within an animation by stepping through it one frame at a time. This can be useful for fine-tuning an image or model prior to exporting it. The command is only available while the animation is stopped. The shortcut is Ctrl+Shift+Space.

Only animated modulations (those with a non-zero Phase Speed) are affected. The affected properties will have orange upward-pointing triangles to the left of their names in the Properties bar. If no animated modulations exist, the command is disabled.

Random Phase

Use this command to jump to a random position within an animation. The command sets the phase of every animated modulation to a random value. By using this command repeatedly, you can explore an animation's phase space, i.e. its range of possible states. The animation can be running or stopped. The shortcut is F9.

Only animated modulations (those with a non-zero Phase Speed) are affected. The affected properties will have green or orange upward-pointing triangles to the left of their names in the Properties bar. If no animated modulations exist, the command is disabled.

Render

Wireframe

This command enables or disables showing the pot as a wireframe model. The current texture if any remains faintly visible on the wires unless you disable texture mapping. To see all facets, you must also disable culling; doing so will make the wireframe much denser.

Gouraud

This command enables or disables Gouraud shading, which interpolates the colors of the pixels within each facet so that the pot's surface appears smooth.

Highlights

This command enables or disables specular highlights, which make the pot's surface appear shiny, as if the pot were made of a reflective material. For a matte appearance, disable highlights.

Culling

This command enables or disables backface culling, which skips the rendering of completely hidden facets. For optimal performance, culling should normally be enabled. Disabling it has no visible effect unless you're viewing the pot as a wireframe.

Texture

This command enables or disables texture mapping. If it's enabled, the current synthesized or user-specified texture is shown; if it's disabled, the pot is rendered in shades of grey.

Transparent

This command enables or disables transparency. To emulate clear glass, disable texture mapping, and enable highlights. The effect is more realistic when the background color is white. It may also help to adjust the lighting, for example by increasing its angle and specular component. Note that if texture mapping is enabled, the material appears translucent, but the texture's colors are inverted.

Bounds

This command enables or disables showing an outlined bounding box around the pot. If the bounding box is hard to see, try changing the background to a darker color.

Lighting

This command displays the Lighting dialog, which lets you edit the lighting properties. When you're done editing them, press the OK button to save your changes. The properties are explained below. To restore the default lighting, press the Reset button.

PropertyDescription
DirectionThis is the direction that the light source is pointing, as a vector in view coordinates. Positive X lights the model's left side, positive Y lights its bottom, and positive Z lights its front, from the user's point of view. Only the vector's direction matters; its length is ignored. The vector needn't be normalized, but at least one of its coordinates must be non-zero. Negative Z causes back-lighting, which is usually unhelpful.
DiffuseThis value specifies the brightness of the diffuse lighting. It generally ranges from zero to one.
AmbientThis value specifies the brightness of the ambient lighting. It generally ranges from zero to one. Ambient lighting is unaffected by direction.
SpecularThis value specifies the brightness of the specular lighting. It generally ranges from zero to one. Specular lighting only has an effect if Highlights are enabled.
PowerThis value specifies the sharpness of specular highlights. The higher the value, the sharper the highlight.

Spline

Add Node

This command adds a node to the spline at the cursor position.

Delete Node

This command deletes a node from the spline at the cursor position.

Translate

This command translates (moves) the selected segments of the spline. The Translate dialog prompts you for the translation amount in both axes. This is useful if you want to specify a translation numerically, instead of via dragging.

Scale

This command scales the selected segments of the spline. The scaling can be proportional (isotropic) or non-proportional (anisotropic). The Scale dialog prompts you for the scaling percentage, or in the non-proportional case, for the width and height percentages. You can also specify whether the scaling should be relative to the origin, or relative to the center of the selection.

Rotate

This command rotates the selected segments of the spline. The Rotate dialog prompts you for the rotation in degrees. You can also specify whether the rotation should be relative to the origin, or relative to the center of the selection.

Flip Horizontal

This command horizontally flips the selected segments of the spline. When combined with Copy and Paste, this can be useful for creating symmetrical shapes.

Flip Vertical

This command vertically flips the selected segments of the spline. When combined with Copy and Paste, this can be useful for creating symmetrical shapes.

Show Grid

This command shows or hides the grid in the spline window. To change the grid spacing, use the Grid Setup command.

Snap to Grid

This command enables or disables snapping to the grid in the spline window. To change the grid spacing, use the Grid Setup command.

Show Rulers

This command shows or hides the rulers in the spline window.

Opposite Wall

This command enables or disables horizontal mirroring in the spline window. Mirroring shows you what the opposite wall of the pot will look like at all times. This is useful because it provides immediate visual feedback during spline dragging, unlike the view which normally only updates when spline dragging is complete. You can configure PotterDraw to continuously update the view during spline dragging, by setting the Show Spline Drag in View option to true, but note that doing so may degrade performance.

Grid Setup

This command lets you change the spacing of the spline window's grid.

Import

This command lets you import a spline from a plain text file containing a list of 2D points. The format is explained here. This is useful if you want use an external program to generate the spline.

Export

This command lets you export the spline as a plain text file containing a list of 2D points. The format is explained here. This is useful if you want use the spline as input to an external program.

Node Type

This submenu lets you change the type of selected nodes in the spline window.

Segment Type

This submenu lets you change the type of selected segments in the spline window.

Zoom

This submenu lets you zoom in, zoom out, or reset zoom and panning in the spline window. You can also use the shortcuts Ctrl+= and Ctrl+-, and Ctrl+0.

Tools

Options

This command displays a dialog that lets you edit PotterDraw's options, which are global user preferences that apply to all documents. The options are summarized here. Press OK to close and save your changes, or Cancel to close without saving. To reset all options to their default values, press the Reset All button.

Mesh Information

This command displays information about the current mesh, including its vertex count, facet count, and bounds. The command also checks your spline for conformance and warns you if problems are detected.

Import Palette

This command imports a palette from a file. The file must be plain text. Each line is expected to contain an RGB color value, consisting of three decimal numbers, separated by tabs or spaces. These numbers are the color's red, green, and blue values, and they should be in the range 0 to 255. Any other information in the file is ignored. The palette size is inferred from the number of colors found in the file.

Note that large palettes may cause the error message "Texture is too wide." To avoid this error, try reducing Color Sharpness to ten or less. The issue is that during texture synthesis, the texture width is determined by multiplying the palette's number of colors by Color Sharpness. Texture width is typically limited to 8,192 pixels, though the actual limit is platform-dependent.

Export Palette

This command exports the current palette to a file. The file is plain text, containing one RGB color value per line. Each color value consists of three tab-separated decimal numbers. For more information, see the Import Palette command.

Window

New Window

Use this command to open a new window with the same contents as the active window. You can open multiple document windows to display different parts or views of a document at the same time. If you change the contents in one window, all other windows containing the same document reflect those changes. When you open a new window, it becomes the active window and is displayed on top of all other open windows.

Cascade

Use this command to arrange multiple opened windows in an overlapped fashion. Note that this command isn't supported for tabbed MDI.

Tile Horizontal

Use this command to arrange multiple opened windows as horizontal, non-overlapping tiles. Note that this command isn't supported for tabbed MDI.

Tile Vertical

Use this command to arrange multiple opened windows as vertical, non-overlapping tiles. Note that this command isn't supported for tabbed MDI.

Arrange Icons

Use this command to arrange the icons for minimized windows at the bottom of the main window. If there is an open document window at the bottom of the main window, then some or all of the icons may not be visible because they will be underneath this document window. Note that this command isn't supported for tabbed MDI.

Full Screen

Use this command to toggle full screen mode. In full screen mode, the view is enlarged to fill the entire monitor, and all other application windows are hidden, including the menus and caption bar. The shortcut keys still work however.

To enter full screen mode, use Window/Full Screen or press F11. To exit full screen mode, press F11 or the Escape key. If your Windows desktop spans multiple monitors, drag the application onto the desired monitor before going full screen.

Help

Help Topics

Use this command to display the help's table of contents and default topic.

PotterDraw on the Web

Use this command to launch your web browser to PotterDraw's home page.

Check for Updates

Use this command to determine if a more recent version of PotterDraw is available. If a newer version is available, you'll be asked whether you want to download and install it. For more information, see Automatically check for updates. You must be logged on as Administrator to install an update.

About

Use this command to display PotterDraw's copyleft notice, version number, and license.

Options

Zoom Step

This is the percentage by which the view zooms for each step of the mouse wheel. The zoom in and zoom out commands and their shortcuts also use this step size. Increase it to make zooming faster but coarser; decrease it to make zooming slower but more precise.

Pan Step

This is the amount by which the panning commands pan the view, in view coordinates. Increase it to make panning faster but coarser; decrease it to make panning slower but more precise.

Drag Rotate Step

In the view, the pot can be rolled (rotated around the z-axis) by left-clicking and dragging horizontally while pressing and holding down the Shift key. This value sets how sensitive the roll behavior is, in degrees of z-axis rotation per pixel of horizontal cursor motion. Increase it to make rolling faster but coarser; decrease it to make rolling slower but more precise.

Use Vertex Color

If this is true, 3D exports use vertex color instead of texture mapping. Currently only the PLY export respects this setting. Texture mapping usually gives superior results, particularly if the texture contains fine detail or sharp edges. However if you're exporting to a 3D software that doesn't support texture mapping, vertex color may be a useful alternative.

The color at each vertex is computed by linearly interpolating the colors of the texture's nearest pixels. This works well for soft color gradations, but for sharp edges, it tends to produce artifacts such as stairstepping. Increasing the number of facets in the model (by increasing rings and sides) may lessen the artifacts, but at the cost of increased file size.

Use Custom Image Size

This controls how 2D exports determine the size of exported images. If this option is false, exported images have the same dimensions as the view (the default behavior). If this option is true, the dimensions come from the custom image width and height instead. If you want to export 2D images of a particular size, set this option true and use the width and height to specify the size in pixels. For optimal quality, export your images at the intended size rather than resizing them afterwards with an image editor.

Custom Image Width

If Use Custom Image Size is true, exported 2D images have this width in pixels, otherwise they have the same width as the view.

Custom Image Height

If Use Custom Image Size is true, exported 2D images have this height in pixels, otherwise they have the same height as the view.

Floating-Point Precision

This is the number of digits after the decimal point for 3D exports that store values as ASCII text, as opposed to binary. Currently only the Wavefront OBJ export respects this setting. More digits will make the exported model more precise, but at the cost of increased file size. At the upper limit (17 digits), text exports are as precise as binary exports.

Plot All Modulations

This affects which properties are plotted in the oscilloscope window. If this option is false, the oscilloscope plots only one property at a time: the current modulation target. If this option is true, the oscilloscope plots all modulated properties at once, which lets you see how they interact with each other.

Spline Zoom Step

This is the percentage by which the spline window zooms for each step of the mouse wheel. The zoom in and zoom out commands and their shortcuts also use this step size when the spline window has focus. Increase it to make zooming faster but coarser; decrease it to make zooming slower but more precise. Note that the view has its own independent Zoom Step.

Show Spline Drag in View

This determines how the view responds to dragging segments and nodes in the spline window. If this option is false, the view isn't updated until dragging is complete, i.e. until the left mouse button is released. If this option is true, the view is updated continuously while the spline is being dragged. This option is false by default, because view updates are potentially time-consuming and doing them frequently can degrade performance.

Continuously updating the view gives useful feedback and makes the spline editor more intuitive and fun to use, but it can also make the user interface sluggish, jerky or unresponsive, particularly if the pot has a large number of facets (rings and sides) or a large texture. As a safer alternative, the spline editor can show the pot's opposite wall, which is always updated continuously during dragging and doesn't impact performance.

Show Property Descriptions

This option determines whether a description pane is shown at the bottom of property bars, including the properties, modulation, and options bars. If you don't need the descriptions, you can make room for more properties by setting this option false.

Automatically check for updates

This option determines whether PotterDraw automatically checks for updates when it launches. If a newer version is available, you will be prompted with the message "A newer version of PotterDraw is available. Do you want to download and install it?" The options are as follows:

YesDownload and installThe newer version is downloaded and installed.
NoSkip this versionThe newer version is NOT downloaded, and no further notifications are given for this version, though you'll continue to be notified of subsequent versions.
LaterDefer the updateThe newer version is NOT downloaded, but you'll be notified about it again the next time you launch PotterDraw.

To disable automatically checking for updates, uncheck this option. Note that automatic checking costs you nothing in terms of performance, because it's done from a worker thread. Regardless of whether automatic checking is enabled, you can always manually check for a newer version via Check for Updates.

PotterDraw must exit before it can be reinstalled. The update procedure attempts to close PotterDraw, however if there's an unsaved document, the update stalls until you respond to the "Save changes" dialog. In this case a console window will be visible, repeatedly displaying the message "Waiting for PotterDraw to exit...".

If reinstallation fails with a permissions-related error it's most likely because you're not logged on as Administrator.

Reference

Normalized angle

In PotterDraw all phase-related properties are expressed as normalized angles. A normalized angle maps the full range of angles (360 degrees) to the range zero to one. The following table shows the relationship between normalized angles and degrees:

NormalizedDegrees
00
0.2590
0.5180
0.75270
1360

Values outside the range [0..1] wrap around, e.g. 1.25 wraps to 90° and −0.25 wraps to 270°.

Properties Summary

Mesh
RingsNumber of rings
SidesNumber of sides in each ring
RadiusRadius scaling factor
Wall ThicknessDistance between inner and outer wall
TwistCorkscrew effect, normalized so that 1 twists 360 degrees from bottom to top
Ring PhaseInitial phase of each ring; normalized from 0 to 1
Aspect RatioWidth scaling for elliptical shapes; 1 for normal, > 1 for wider, < 1 for narrower
Polygon SidesPolygon's number of sides
Polygon RoundnessRoundness of polygon's corners; normalized from -1 to 1
Polygon BulgeAmount to bulge or pinch polygon's sides
Polygon PhasePolygon rotation as a normalized angle from 0 to 1
ScallopsNumber of scallops
Scallop DepthDepth of each scallop
Scallop PhaseInitial phase of scallops; normalized from 0 to 1
Scallop WaveformType of waveform used for scallops
Scallop OperationOperation of scallop waveform on radius
Scallop RangeRange of scallop waveform
Scallop MotifFunction applied to scallop waveform
Scallop PowerBase of scallop waveform's power function, or zero if none
Scallop Power TypeType of power function applied to scallop waveform
Scallop Pulse WidthWidth of pulse, for pulse waveforms only; normalized from 0 to 1
Scallop SlewAmount of slew, for pulse waveforms only; normalized from 0 to 1
RipplesNumber of ripples
Ripple DepthDepth of each ripple
Ripple PhaseInitial phase of ripples; normalized from 0 to 1
Ripple MotifFunction applied to ripple waveform
Ripple OperationOperation of ripple waveform on radius
Ripple PowerBase of ripple waveform's power function, or zero if none
Ripple Power TypeType of power function applied to ripple waveform
BendsNumber of bends
Bend DepthDepth of each bend
Bend PhaseInitial phase of bends; normalized from 0 to 1
Bend MotifFunction applied to bend waveform
Bend PolesNumber of bend poles
Bend Pole PhaseInitial phase of bend poles; normalized from 0 to 1
Bend Pole MotifFunction applied to bend pole waveform
Bend OperationOperation of bend waveform on radius
Bend PowerBase of bend waveform's power function, or zero if none
Bend Power TypeType of power function applied to bend waveform
RufflesNumber of ruffles
Ruffle DepthDepth of each ruffle
Ruffle PhaseInitial phase of ruffles; normalized from 0 to 1
Ruffle WaveformType of waveform used for ruffles
Ruffle MotifFunction applied to ruffle waveform
Ruffle PowerBase of ruffle waveform's power function, or zero if none
Ruffle Power TypeType of power function applied to ruffle waveform
Ruffle Pulse WidthWidth of pulse, for pulse waveforms only; normalized from 0 to 1
Ruffle SlewAmount of slew, for pulse waveforms only; normalized from 0 to 1
Helix FrequencyNumber of turns in local origin's spiral
Helix AmplitudeMagnitude of local origin's spiral
Texture
Texture PathPath of file to use as texture, if any; if specified, overrides palette
ColorsNumber of colors in palette
Color SharpnessSharpness of stripes; 1 is fuzziest, 100 is sharpest
Color CyclesNumber of times to cycle through palette
Stripe FrequencyFrequency of stripe waves, normalized to number of waves per height
Stripe AmplitudeAmplitude of stripe waves
Stripe PhaseInitial phase of stripe waves; normalized from 0 to 1
PetalsNumber of petals, for Petals color pattern
Color PatternType of color pattern
Palette TypeType of palette
U OffsetOffset applied to U coordinate for texture mapping; normalized from 0 to 1
V OffsetOffset applied to V coordinate for texture mapping; normalized from 0 to 1
Cycles VNumber of times to cycle V coordinate through its normalized range
Edge GainSensitivity of edge detection, for Edges color pattern
View
AnimationEnables animation
Frame RateFrame rate in frames per second
Background ColorBackground color of view window
Auto Rotate YawYaw speed when auto-rotating view, in degrees per second
Auto Rotate PitchPitch speed when auto-rotating view, in degrees per second
Auto Rotate RollRoll speed when auto-rotating view, in degrees per second
Auto Rotate ZoomZoom speed when auto-rotating view, in percent per second
Modulation
TargetTarget property to be modulated
TypeModulation type; values other than Property access secondary modulation
WaveformType of waveform
OperationOperation of modulation on target property
RangeRange of modulation
MotifFunction applied to modulation waveform
FrequencyModulation frequency
AmplitudeModulation amplitude
PhaseInitial phase of modulation; normalized from 0 to 1
Phase SpeedModulation phase delta during animation, in Hertz
BiasOffset added to modulation
PowerBase of power function, or zero if none
Power TypeType of power function
Pulse WidthWidth of pulse, for pulse waveforms only; normalized from 0 to 1
SlewAmount of slew, for pulse waveforms only; normalized from 0 to 1

Options Summary

GroupNameDescription
ViewZoom StepZoom step size, as a percentage
Pan StepPanning step size, in view coordinates
Drag Rotate StepDrag rotation step size, in degrees per pixel
ExportUse Vertex ColorIf true, PLY export uses vertex color instead of texture map
Use Custom Image SizeIf true, image export uses custom size instead of view size
Custom Image WidthWidth of exported image if using custom size, in pixels
Custom Image HeightHeight of exported image if using custom size, in pixels
Floating-Point PrecisionNumber of digits after decimal point for OBJ export
OscilloscopePlot All ModulationsIf true, show all modulations in oscilloscope bar
SplineZoom StepSpline zoom step size, as a percentage
Show Spline Drag in ViewContinuously update 3D view while spline is being dragged
GeneralShow Property DescriptionsIf true, show descriptions area in properties bar
Automatically check for updatesAutomatically check for newer version of app during startup

Shortcuts

Ctrl+SpaceStep ForwardStep animation forward one frame
Ctrl+Shift+SpaceStep BackwardStep animation backward one frame
Ctrl+LeftPan LeftPan view left
Ctrl+UpPan UpPan view up
Ctrl+RightPan RightPan view right
Ctrl+DownPan DownPan view down
DeleteDeleteDelete selected items
Ctrl+0Zoom ResetReset zoom and panning to defaults
Ctrl+ASelect AllSelect the entire document
Shift+AAbove ViewView from above
Shift+BBoundsShow bounding box
Ctrl+CCopyCopy the selection and put it on the Clipboard
Shift+CCullingCull hidden surfaces
Ctrl+EExportExport image or 3D model
Shift+ETransparentShow transparent material
Shift+FFront ViewView from front
Ctrl+Shift+FBack ViewView from back
Ctrl+GShow GridShow or hide grid
Shift+GGouraudUse Gouraud shading
Ctrl+Shift+GSnap to GridToggle snap to grid
Shift+HHighlightsShow specular highlights
Ctrl+LLoad TextureLoad a texture from a file
Shift+LLightingEdit lighting properties
Ctrl+NNewCreate a new document
Shift+NAnimationEnable animation
Ctrl+OOpenOpen an existing document
Shift+OOptionsEdit options
Ctrl+PPrintPrint the active document
Alt+Ctrl+PEdit PanningEdit panning numerically
Ctrl+RRecordRecord video as sequence of bitmaps
Shift+RAuto Rotate ViewAutomatically rotate view
Alt+Ctrl+REdit RotationEdit rotation numerically
Ctrl+SSaveSave the active document
Shift+SLeft ViewView from left
Ctrl+Shift+SRight ViewView from right
Shift+TTop ViewView from top
Ctrl+Shift+TBottom ViewView from bottom
Ctrl+UShow RulersShow or hide rulers
Ctrl+VPasteInsert Clipboard contents
Ctrl+WOpposite WallHorizontally mirror spline
Shift+WWireframeShow wireframe
Ctrl+XCutCut the selection and put it on the Clipboard
Shift+XTextureShow texture map
Ctrl+YRedoRedo the previously undone action
Ctrl+ZUndoUndo the last action
Shift+ZZero RotationReset view rotation and panning
F1Help TopicsList help topics
F6Next PaneSwitch to the next window pane
Shift+F6Previous PaneSwitch back to the previous window pane
Ctrl+F6Next DocumentActivate the next MDI child window
Ctrl+Shift+F6Previous DocumentActivate the previous MDI child window
F9Random PhaseRandomize phases of animated modulations
F11Full ScreenToggle full screen mode
Ctrl+=Zoom InZoom in to center of view
Ctrl+-Zoom OutZoom out from center of view
Ctrl+TabNext DocumentActivate the next MDI child window
Ctrl+Shift+TabPrevious DocumentActivate the previous MDI child window