ArtMatic - Metasynth
Transcription
ArtMatic - Metasynth
ArtMatic Component Reference software by Eric Wenger manual by Edward Spiegel manufactured by U&I software LLC, 701 Seventh Avenue Redwood City, CA 94063 http://www.uisoftware.com This documentation describes ArtMatic version 6.0 ©2015 U&I software LLC. ArtMatic Pro Component Reference Component Reference Overview ...................................................................... 4 1->1 Components: Filters ................................................................................. 7 1->2 Components ........................................................................................... 22 1->3 Components ........................................................................................... 26 1->4 Components ........................................................................................... 29 2->1 Components: 2D Scalar Functions ........................................................ 33 2->2 Components: 2D Vector Functions ........................................................ 59 2->3 Components ........................................................................................... 72 2->4 Components ........................................................................................... 84 2->5 Components ......................................................................................... 112 3->1 Components: 3D Scalar (Space/Field) Functions ................................ 121 3->2 Components: 3D Vector Functions ...................................................... 154 3->3 Components ......................................................................................... 177 3->4 Components ......................................................................................... 203 4->1 Components ......................................................................................... 241 4->2 Components: 4D Vector Functions ...................................................... 244 4->3 Components ......................................................................................... 251 4->4 Components ......................................................................................... 269 Memory Components ................................................................................... 280 History ........................................................................................................... 284 -3- Component Reference Overview The Component Reference provides detailed information about ArtMatic’s components – the functions that can be assigned to the tiles of the ArtMatic structure tree. The number of inputs and outputs that a tile has determines which components are available for the tile. The Component Reference chapters are organized by tile connections (the number of inputs and outputs). Pre-Requisites. The Component Reference assumes that you are familiar with ArtMatic’s basic concepts and operation. We urge all users to read the Concepts chapter of the ArtMatic user guide and to perform the tutorials – including the Getting Deeper tutorial as it provides a valuable framework for understanding the types of components.. What are components? You can think of ArtMatic’s components as graphics filters, space distortion functions, signal processors, or mathematical functions. Components are mathematical functions and procedural rules that take values via the inputs, process the values, and pass out new values from the component’s outlets. In the reference chapters, we provide the actual mathematical formulas used by the components where they are meaningful. It is not necessary to understand the mathematics involved, but users with some background in mathematics will find the formulas useful. How to approach the Component Reference The component descriptions make for pretty dry reading. But, we do recommend browsing through the chapters to get an idea of what is available. Where possible, we have provided simple examples and illustrations that will give you ideas about how the various components can be used. You may find it useful to quickly browse through the component descriptions before reading the Getting Deeper chapter, but don’t worry if you don’t understand all of the descriptions. The Getting Deeper chapter will help you to make sense of the components and how they function. Important Component Characteristics Certain mathematical characteristics are frequently mentioned in this documentation and are important to understand: Band-limited. A function is band-limited when its frequency content falls within specific intervals. (You can think of frequency as a measure of the size of the function’s features--high frequencies generate small-scale features and low frequencies generate large-scale features). The Perlin Noise function is a good example of a band-limited function whose output falls in a very narrow frequency band. Continuity. A function is said to be continuous when its derivative (its local slope) does not exhibit any sudden changes. Continuity is an important issue for ArtMatic Voyager. Certain functions (such as the Step Quantize function) produce a non-derivable, non-continuous result. Many discontinuous functions have a “smooth” variant or a smoothing parameter that softens the discontinuity and makes the result continuous Linearity. A function is said to be linear when its derivative (or slope) has a constant value. If you connect the derivative operator to a linear function (such as the plane Ax+ By +C component), you will just obtain a single color -- an expensive way to clear your canvas. Multi-fractal. A Multi-fractal function is a function with a varying fractal dimension. Fractal dimension is a measure of statistical roughness. Multi-fractals are very good for capturing the complexity of natural textures. Periodicity. A function is said to be periodic when it repeats itself ad infinitum with a specific period. -4- COMPONENT REFERENCE: Overview Component Functions & Conventions In the following sections, some functions are described as generating surfaces and others as distorting space and others as filters. These labels are intended as useful guidelines to give you an idea of the component’s prototypical use, but these functions when combined together work in ways that no simple labels can capture. The wonderfully rich image universes generated by these complex dynamical systems are beyond description. While the individual components are quite simple, the results can be quite surprising, especially when a complex component tree is being used. Complex numbers. You will notice that many components use complex numbers in their calculations. Complex numbers are numbers made up of a real and an imaginary part in the form of a + bi where i is the imaginary number (the square root of -1). Complex numbers and operations involving them have many fascinating properties which are beyond the scope of this documentation. If you search the internet, you will find many sites that cover this topic. Conventions and definitions. In the tables below, there are a few conventions worth noting in the formulas that appear. A, B and C refer to the values of parameter sliders A, B and C. x, y, and z refer to the inputs to component tiles. The first input (counting from the left) is x, the second is called y, etc. Where the word distance is used, it refers to the Euclidean distance which is or About x, y, and z. X, y and z are sometimes used in two very different ways. In some cases, x, y and z refer to spatial coordinates. However, when describing an individual component’s inputs, x, y and z merely refer to the component’s first, second and third inputs. In many cases, these values will not be spatial coordinates. For example, a 2->1 function might receive input from two separate branches of the tree; in such a case, the component’s left and right inputs would be referred to as the x input and the y input even though the values being received are not xy spatial co-ordinates; they are just two numbers to be acted on by the function. Procedural functions. Some functions are described as procedural functions. A procedural function does not have a simple mathematical formula but has a rule or algorithm that may change based on the function’s inputs or parameter settings. For example, the MinMax component may choose either the minimum or the maximum of the two inputs or it may interpolate between the two values depending on the setting of parameter B. Common Parameters There are a number of component parameters that you will encounter over and over in the component descriptions. They are: Amplitude. Amplitude generally controls the amount or strength of the effect. It often will affect the range of the effect as well. Frequency. Frequency generally controls the spacing of repeated effects and cyclic functions. For example, in the Ripples component, the frequency determines the ripple spacing. Phase. Phase usually acts as an offset which shifts repeated patterns and cyclic functions up or down and/or left or right. Scale. Scale acts as a multiplier which is usually applied to the component output. Offset. Offset is a constant value added to either an input value or to the output value. -5- COMPONENT REFERENCE: Overview Component Types The following table shows the component types sorted by the number of inputs and outputs. Click on the underlined text to jump to the corresponding reference chapter. The Interpretation column summarizes possible functional categories of the various tile types. These categories are described in detail in the Understanding Components section of the Getting Deeper chapter of this manual. # inputs/outputs 1->1 1->2 1->3 1->4 2->1 2->2 2->3 2->4 2->5 3->1 3->2 3->3 3->4 4->1 4->2 4->3 4->4 Common Interpretations 1D filter. adjust the input/output values of another component. “dual filters” and “motion functions” map a single value to an RGB color, generate three independent values, unpack an RGB stream. map a single value to an RGBA, create four independent values from a single value, unpack a packed RGBA stream 2D scalar functions: surface generation, shading, mixing 2D vector functions: space distortion, parallel filtering space translation, RGB shading RGBA color shaders (many of which are implementations of 2->3 RGB color shaders), RGBA packed mixers, and the composite XYza functions that create interesting tiled spaces + value + alpha mask composite functions that produce a space transform and a color texture generator surface generation, mixing, packing 3D vector functions: space translation/distortion, texture generation space distortion, colorspace translation, packed stream mixing color texture components, color texture + elevation components for ArtMatic Voyager, packed mixers mix four independent outputs, create a texture from two space transforms, pack the outputs of RGB+Alpha components into a stream to be fed to a packed mixer space distortion, ArtMatic Voyager elevation and extra outputs RGB/3D mixing, loopers process RGB+Alpha information, ArtMatic Voyager cities and themes -6- 1->1 Components: Filters 1->1 components are scalar (single ouptut) functions. Most of them act as filters that modulate or remap the incoming values. They also provide basic building blocks for implementing your own algorithms and formulas. In many cases, the component’s name is the calculation performed by the component. An essential in-depth discussion of function categories is found in the Getting Deeper chapter and is recommended reading for everyone. In the discussion below, x signifies the tile’s input value. It is often useful to insert 1->1 components between other components (and at the end of the tree) in order to adjust individual value ‘streams’. Set Constant (New 5.0) This component returns a constant value set by parameter A regardless of the input value. The options popup provides three interpretations of parameter A: direct value, 1/value, angle in °. When direct value is selected, the output value is the setting of parameter A. When the 1/value option is used, the output is 1 divided by the parameter A value. When the angle in degrees option is selected, parameter A is treated as a value in degrees, and the output value is the equivalent value expressed in radians. Ax + B (also called Scale) A: Scaling B Offset This component is a basic scaling filter. It multiplies the input with parameter A then adds an offset (parameter B). It is nice for adjusting the contrast and level of a system. Parameter options: direct value, 1/value, or angle in degrees. When direct value is selected, the output value is simply the setting of parameter A. When the 1/value parameter option is used, the output is 1 divided by the parameter A value. When the angle in degrees option is selected, parameter A is treated as a value in degrees and the output value is equivalent value expressed in radians. The angle in degrees option is convenient for multiplying by Pi (180 degrees) or Pi/n. Offset(x +A) (Updated) A: Offset Math primitive that adds a value supplied by the Offset parameter to the incoming value. This component now has parameter options for increased functionality: direct value, 1/value, angle in degrees, value *10 and value *20. The last two options are handy for large displacements A - x A: Level This component inverts and offsets the input values. When A is zero, this component just returns the negative of the input. Formula: A - x Parameter options: direct value, 1/value, angle in degrees, value *10 and value *20. Abs x A: Offset Absolute value of the input (i.e. it strips the minus sign from the input) plus the value of parameter A. Parameter A added in ArtMatic 6. -7- REFERENCE: 1->1 Components Formula: |x| + A Mirror Symmetry with ABS X! When applied to a space coordinate, Abs X will create a mirror symmetry as shown below. TIP! Neon Line. Put this component after the A/x component to create a neon line effect. A basic structure By inserting the ABS X, com- that creates a line ponent the line can be mirrored about the X or Y axis or both. A simple line. Abs X applied to Abs X on the y the x-input input A - ABS(x) Abs X applied to both inputs A: Size B: Offset C: Scale This function is an inverted absolute value where B offsets the input and A offsets the output. When applied to a space coordinate, the resulting space will be both symmetrical and mirror-inverted. Formula: (A - ABS(x + B)) * C Third parameter, Scale, added in ArtMatic 6. Smooth Abs x A: Amount B: Offset This is a modified version of the absolute value function which is smoothed near the origin. Amount is the degree of smoothing. Parameter B added in ArtMatic 6. Gaussian A: Power B: Phase C: Amplitude The Gaussian transform imposes a contour like a bell curve. The output of a Gaussian function at 0 is 1 and approaches 0 when A( x+B) is greater than 2. To increase the width of the bell curve, decrease parameter A. Formula: C exp(-(A( x+B))2) with A from 0 to 128 Plateau A: slope B: size C: amplitude Plateau is a gaussian-type filter with an extended plateau on either side of 0. It is useful for delineating symmetrical shapes and creating edge effects. See the file Flying Rectangles to see how plateau can be used to provide rounded corners. Slope determines the sharpness of the plateau edge. Size determines the plateau width. Amplitude is a multiplier that sets the plateau height. x power A A: Power B: Scale This component provides non-linear remapping of values. With the power parameter set to the minimum, you can get useful discontinuities such as well-defined islands and borders (depending on the input). The range of A is from -8- REFERENCE: 1->1 Components the eighth root of x to the 16th power of x. If the incoming value is negative, the absolute value is taken before applying the function. Parameter B is applied as a divisor. Formula: When (x<0): - (-x/B)A When (x>=0): (x/B)A Advanced tip: This component can be used to create metallic effects when applied to a value stream that is providing light intensity. For an example, see the file Disgusting Shader. Math Tools # (Updated) A: Algorithm Selector (Formerly Math Utils). This is an advanced level component for implementing mathematical equations or optimizing the performance of a complex structure tree. This component performs a mathematical operation selected with Parameter A on the input. Parameter A should not be animated since it is a selector that determines what operation this component performs. When you move the parameter slider, the Tool Tips region will display the operation that corresponds to the slider value. Some of these (like sin) have equivalent components with more parameters. Functions that can be used as limiting envelopes use parameter B for scaling. Using parameter B essentially gives control over the envelope size. This functionality is useful when you want to limit the output of another component by multiplying the results. This parameter (B) applies to gauss: exp-x*x, clamp unity, cubic unity, and cubic unity in x-. In some cases, there are other 1->1 components that implement version of this function. When that is the case the this component’s version (Math Tools #) will be fastest as it is optimized for speed. For instance, if you need a superfast sin(x) transform, use this one. The normal sin(x) has more parameters, but that flexibility comes at the cost of computation speed. The available functions (available either from the Algorithm popup or parameter A) are: • x *x. x-squared. • sqrt(x). Square root of x. If x<0, the output is 0 • log(x). Natural log of x. Infinity when x<=0 • exp(x). e^x • gauss: exp(-x*x). Gaussian curve • sin(x). Simple sine function . • cos(x). Simple cosine function. • atan(x). Arctangent • zero floor(x+). x is limited to values from 0 through infinity. If x<0, the output is 0. • clamp unity. x limited to values from 0 to 1. If x<0, the output is 0. If x>1, the output is 1. • cubic unity. Cubic spline of x from 0 - 1 using (x*(x*(3-x-x))) • tanh: hyperbolic tangent • 4-abs(x). • roofed 4-abs(x). • iteration break |x|>32. This algorithm aborts iterations within a recursive compiled tree when the input value is larger than 32. This can be used to optimize certain fractals by aborting meaningless (and time-consuming) iterations. • fract(x)(%1). Returns the fractional part of the input and is much faster than modulo. • balanced unit mod. Balanced modulus from -1 to 1. When the input is 0, the output is 0. This is a classic ramp wave. • balanced unit saw. Saw (triangle) wave whose output range is -1 to +1. • balanced smooth saw. A triangle wave with rounded edges: a great primitive to build periodic, continuous signals. • smooth floor 0 (x+). Same as the zero floor algorithm but with smoothing around 0 that results in continuous values. -9- REFERENCE: 1->1 Components All output values > 0. • smooth roof 0 (x-). Same as the zero floor with continuity at zero for the x- domain. Resulting values are ≤ zero. • cubic unity in x-. Similar to the cubic unity algorithm (a cubic envelope limiting values to the range 0-1) but acting on on the negative part of x-axis. • acos(x). ArcCos ( inverse Cos) function. The input values are “tiled” to the range -1 to 1. • asin(x). ArcSin function. The input values are “tiled” to the range -1 to 1 Power Slope A: Size B Phase C:Power An exponential curve with a step function-like effect except that it is continuous with rounded edges near the “step”. This function, when used at the final stage of a system, tends to make the image very high contrast -- black and white rather than shades of gray, for example. Normal grid output. A grid with the Power Slope component filtering its output A Power X A: A B: Amplitude Another basic mathematical building block : it returns the x power of parameter A. Formula: B * (Ax) A(1-exp(-x)) A: Amplitude This component filters the input with an inverted Gaussian curve. It provides a convenient way to smoothly clip values that approach infinity. It is a little like log, but has a steeper slope and sharper cutoff. Log A: Amount This filter applies the natural log to the input. It is good for decreasing the output range of functions that go to infinity. The amount parameter determines the steepness of the output curve. x squared A: Amount B: Scale Another mathematical primitive that returns x-squared. When the amount parameter is set to the maximum, the output is the input-value squared for input values above 0 and 0 for input values below 0. Otherwise, amount blends the unfiltered input value with the squared version. The scale parameter is applied to the input value before it is squared. Formula: LERP(x , x>0 ? (Bx)2 else 0) A/x (Updated) A: Amplitude This component creates a non-linear inversion of the input. Formula: A/x. Algorithms added in ArtMatic 6. Algorithms: • inverse 1/x. This is the original algorithm. The component returns the A/x where A is the value of parameter slider A and x is the input value. - 10 - REFERENCE: 1->1 Components • contours. 1/abs(x) - returns A/abs(x). This algorithm is great for neon effects. See the file Power Arc Neon for an example. A/(xx+A-1) A: Amplitude This component is similar to Gaussian but has a steeper curve and a sharp discontinuity around zero. Formula: A/ (x2+A-1) Saw A: Right Slope B: Amplitude C: Offset This component filters the input using a ramp that has a sharp attack and a slow decay. Values outside of the ramp’s range are mapped to zero. This component can serve as a nice contrast or surface contour control. It can also serve as an envelope filter for sound design when multiplying its output with the sound waveform. The Offset parameter moves the saw envelope with respect to the input’s origin. The Amplitude essentially sets the height of the saw envelope, and the Slope parameter sets the decay length. The Right Slope parameter (A) may have a value less than 0. A negative slope provides a gradual attack and a rapid decay rather than the a quick attack and slow decay. Raw output of the Grid component (no filtering) The Grid component’s output filtered through the Saw component with the Slope parameter at its minimum. . Saw filter of the Grid component with the Slope set to Grid filtered by Saw with the Slope and Amplitude set to the maximum intermediate values. Sin x A: Frequency B: Phase C: Amplitude This component returns the sine of the input which renders its output periodic (cyclic). It is the basic primitive for pitched sounds and any periodic phenomenon. It can be used for sound creation, wood-type textures, zebra patterns and much much more. Power sin A: Frequency B: Phase C: Power This periodic component is useful for creating banding effects and for adding harmonics when in Sound mode. It is equivalent to passing the output through a sin filter and then a power filter. Formula: (sin (x*A+B))C Tile Wave A: Frequency B: Phase C: Amplitude A non-symmetrical sawtooth wave. Very handy for creating repetitive patterns and for creating sound waves. With default parameter values, it repeats the interval bounded by -1 and 1 which keeps the output centered about 0 (essential for musical applications). If you place a Tile Wave component before any other 1D filter, the filter will become periodic (though not necessarily continuous since the ramp drops immediately from its maximum value to its mini- 11 - REFERENCE: 1->1 Components mum value). For example, if you need a repeating figure of gaussian grains, put a Tile Wave before the Gaussian tile. Sound tip: Multiply the result with a sine wave and you get rich sounds. Modulo (Updated) A: Frequency B: Phase C: Amplitude D: Repeats Modulo is a continuous version of the modulo/remainder function. Like Tile Wave, the output is a ramp wave. It is very useful when you need to limit values with a periodic (i.e. repeating) function. It can be useful for creating bevel-like effects. Frequency determines the spacing of the created “ramps” (by setting the divisor used to generate the modulo). Amplitude is applied at the output stage. Grid without modulo A simple tree that applies Modulo to a grid and three examples generated by th tree. There are two algorithms available via the algorithms popup: • infinite modulo. The original algorithm • Repeats N. Limits the modulo function to a particular number of repetitions (rather than go on infinitely as it does with the default Infinite Modulo algorithm). The fourth parameter, Number of Repeats, is active for this algorithm. This algorithm is convenient for creating finite repetitions in X or Y by inserting it on the approrpriate axis. 0 is in the middle of each repetition series. DFRM NOTE: When using Repeats N with DFRM, leave the Amplitude at 1 in order to maintain the distance field’s integrity. Parameter options: Direct values (default), 1/scale, scale * 10, offset: value*10, offset: value*20, offset & scale * 10 In the parameter option names, Scale refers to parameter A’s value and Offset to parameter B’s value. For example, offset & scale * 10, will set both parameter A and parameter B to 10 times the sliders’ nominal value whereas Scale * 10 treats parameter A as 10 times its nominal value but interprets parameter B normally. Saw wave A: Frequency B: Phase C: Amplitude This periodic component returns a triangle wave function similar to a sine wave but with sharper edges. Saw wave is often used in sound synthesis for the richness of its harmonic content. When used on a space coordinate input, the resulting space will feature a periodic symmetry on the corresponding axis. Algorithms and parameter options were added in ArtMatic 6. Algorithms • Infinite saw (freq) • Repeats N - Hard Edges • Repeats N - Smooth Edges When the Repeat algorithms are used, a finite number of repetitions (set by parameter D) are performed. The Repeats options are useful for design and architecture and can be useful for kaleidoscopic 2D or 3D fractals. When the Repeat options are used, the parameter options determine the interpretation of parameters A and B. Scale refers to parameter A and offset to parameter B. - 12 - REFERENCE: 1->1 Components Parameter options: • Hard edges Pi-based • Smooth edges Pi-based • Smooth edges Unity • Smooth displace (+in) When using Smooth Edges Unity, the amplitude is adjusted to match the frequency to keep the space undeformed. Smooth Displace (+in) smoothes the edges and displaces by the input amount. U wave A: Frequency B: Phase C: Amplitude This component is a useful u-shaped periodic wave based on the absolute value of a sine function. x + A sin Bx A: Amplitude B: Frequency This component modulates the input with a sine function rather than simply filtering with a sine function. Formula: x + A sin(Bx) x sin(x) A: Frequency B: Phase C: Amplitude This component is a variation of the sine function where the amplitude of the sine wave is scaled by the input x. If the input is itself periodic, x sin(x) can be used to create interesting modulated sounds. sin(Bx)/sin(x) A: Amplitude B: Harmonics C: Amplitude This component is great for creating harmonics for structures designed for sound synthesis (when using the Direct Drones synthesis method). The componentís equation is Sin(Bx)/sin(x). Amplitude determines the output amplitude. Frequency influences the harmonic spacing. Harmonics determines the number of harmonics. Tech waves # A: Oscillator Type B: Amplitude C: Frequency Tech waves is primarily used for creating audio. Parameter A selects between 26 different waveforms. The Tool Tip displays the waveform name as you move the parameter slider. The waveforms range from a standard square wave to random waves great for creating interesting noise. There are 3 flavors of “smoothness” for each oscillator type which is essentially high frequency filtering. Smooth Steps A: Amplitude B: Randomness C: Frequency This component is a quantization function that has smooth transitions between the steps (unlike Quantize which has discontinuous steps). This component is especially useful for designing systems for use with ArtMatic Voyager which dislikes the discontinuities introduced by the Quantize component. When the Randomness parameter is non-zero, the steps are spaced irregularly, yielding a natural look. This component is often used to - 13 - REFERENCE: 1->1 Components create ArtMatic Voyager terrains to achieve eroded terraces such as those shown in the canyon example shown at the left. Variable Steps A: Step Type B: Amplitude C: Frequency Variable Steps is a randomized quantizing (step) function that combines two step sizes with varying degrees of smoothness. Parameter A is used to select the quantizing algorithm. This component is especially useful for creating terraced landscapes in ArtMatic Voyager. The illustrations below demonstrate how terraces can be added to an ArtMatic Voyager landscape by using the Variable Steps component. 2->1 MultiPerlin Noise as seen in Voyager Image created by adding Variable Steps Sphere A: Radius The Sphere filter yields a sphere when applied after the distance component. Formula: Cubic Clip A: Amplitude B: Offset C: Slope Cubic clip is similar to the Clip function but uses a cubic spline to maintain continuity at the clipping boundaries. It creates a smooth interpolation from 0 to A. Parameter B is an offset added to the incoming value before applying the cubic filter. Clip A: Contrast B: Offset C: CutOff This filter clips the input when it passes outside of the range from 0 to the value defined by the CutOff parameter. Floor A: Floor Level B: Roof Level Constrain the input to values between the Floor Level and the Roof Level. Any value below the Floor Level is assigned the floor level. Any value above the roof level is assigned the roof level. - 14 - REFERENCE: 1->1 Components Smooth Floor A: Floor Level B: Roof Level C: Smoothness This component is a continuous, smoothed version of the Floor component. The Smoothness parameter determines the degree of smoothness (the range of values near the Floor and Roof limits where the values are smoothed); when it is 0 the function is discontinuous. This component is useful for creating systems for ArtMatic Voyager which abhors discontinuities. The Floor and Roof parameters set the lower and upper limits. When Smooth Floor is applied to a fractal surface, it can be used to create convincing plateaus in ArtMatic Voyager terrains. Contrast A: Contrast Amount B: Offset A simple, but very useful, contrast filter. When Amount (parameter A), is set to the maximum, there are only two possible output values (i.e. if this is the last component in a system, the result will be a two-tone image). The Offset parameter controls where the contrast divide is made. When used to control picture luminance values, offset effectively adjusts the overall threshold level. See Concentric dither BW for an example. Semitones Seq. A: Loops B: Phase C: Amplitude This component is used to create random note sequences in Sound mode. Generally, this component is connected to one of the time outputs of the Global Input Matrix (as shown below) which causes the notes to vary over time. The output values are limited to semitone values when used in a well-behaved sequence. See the examples provided with ArtMatic. Example files: QT Mod Seq., Master LFO Test series of examples Parameters: A: Loops – The number of loops (notes) that will be created in a given time frame. Larger values result in phrases with more notes. B: Phase – An offset within the random sequence. By changing the phase, you can create more complex musical phrases since the sequence will not simply repeat over and over. C: Amplitude–Determines the pitch range of the notes from which the sequence will be generated. Mirror A: Scaling B: Offset A symmetry component that creates a mirror of the input values. The Offset parameter moves the mirror axis. Parameter A scales the output values. See the files MetaMSlide A and Simple Mirror for examples. Formula: if (x>B) then y = 2 * B - x Output of 2->1 Line Line with Mirror inserted after it - 15 - REFERENCE: 1->1 Components Split & stretch A: Amount B: Offset C: Smoothing This handy component divides the input about 0 and pushes apart the positive and negative values. It is very useful for modeling shapes. For example, insert an instance of this component before both the left and right inputs of a circle, and the result is a rounded rectangle. See the example file Simple Button. Discrete Random A: Amplitude B: Frequency C: Phase This component is a random step function. It is not continuous and not derivable and thus is not advised for ArtMatic Voyager or sound design. Linear Random A: Amplitude B: Frequency C: Phase A simple discontinuous random function with linear interpolation. Use this component for creating high order harmonics for sound synthesis or when you need sharp edges. Random A: Amplitude B: Frequency C: Phase This component generates a band-limited and continuous random function. Formula : A Rnd(B(X+C)) Periodic Random A: Frequency B: Phase C: Amplitude A periodic (repeating) random function particularly useful for sound applications. It is band-limited and richer than a pure sine wave. The phase parameter adjusts the contour of the random output. Multi Perlin Noise A: Amplitude B: Octaves C: Frequency This component sums a series of perlin noise functions with the frequency doubling for each function in the series. The octaves parameter determines the highest frequency generated. When the octaves parameter is at its maximum (128 which is is 27) there are seven “octaves” of noise. Multi Perlin Noise is a band-limited noise function very useful for sound synthesis as the upper frequency limit can be controlled by the octaves parameter. Fractal Noise A: Amplitude B: Frequency C: Phase D: Roughness A 1D version of the fractal noise algorithm. See the descriptions of the higher-dimensional fractal noise components for more information. Besides many graphical applications, Fractal noise can also be used as a sound source to produce “pink noise” where the amplitude of specific frequencies follow the “1/f” rule. (Unlike “white noise” which has all frequencies at the same amplitude.). Fractal noise produce a natural and pleasant unpitched sound. Parameter D, Roughness, controls the fractal dimension. The default “normal” value is 0.5. Example file: Gaz Giant vortex study - 16 - REFERENCE: 1->1 Components Randomize A: Amount B: Frequency A randomizing component which provides random distortion of the input. This differs from the Random function which generates truly random values. Randomize adds its random value to the input. Formula : X + A Rnd(BX) Grains A: Frequency B: Size C: Amplitude D: Phase Grains is a non-periodic function that randomly distributes small gaussian-shaped “grains”. It is useful for both graphics and sounds. For graphics applications, use it when you need a series of lines that is not densely spaced. For sound applications, use it to create narrow-band noise that sounds more brassy than white noise or fractal noise. Quantize A: Freq. B: Amplitude Quantize the input into discrete steps. It turns a gradual gradient, for instance, into a series of color bars as in the illustration below. Use this function to create discontinuous, step-like output. It is great for creating pixelization and color-reduction effects. Quantize is not continuous and not derivable and thus is not advised for ArtMatic Voyager or sound design. Frequency determines the spacing of the quantization steps. The Amplitude determines the strength of the quantization. (With a value of 0, there is no quantization; with a maximum value, true quantization is performed.) The image on the left is the result of applying the Quantize component to a gradual ramp (provided by the Ax+By+C component). The image on the right is the unquantized image. Derivative A: Amplitude B: Offset This component approximates the derivative of the function whose output feeds the derivative component. It is often used to emphasizes the 3D aspect of a system. Its output only makes sense when the input values are continuous (i..e. it does not work well with discontinuous & non-derivable functions such as Random Squares or discrete Random). Note: This component will behave differently when it is in a compiled tree than when it is in the main tree since it uses information other than that which comes in through its input. When this component is used (almost always in the lower part of tree), ArtMatic traverses the tree for the information that it needs to derive the lighting information. As a result, this component can’t be used inside of compiled trees since the tree as a whole is hidden from compiled trees. Formula: f(x + dx, y + dy) - f(x,y) 2D Derivative A: Light direction dx B: Light direction dy C: Offset Related to the derivative, this function provides lighting and 3D texture effects by scanning the entire tree above it to compute its partial derivatives. Parameters A and B control the direction of the virtual light vector. When A is 1 and B zero the light comes from the left.When B is 1 and A zero the light comes from the top. This component actually looks at the entire tree structure and not just the incoming values. - 17 - REFERENCE: 1->1 Components Note the 3D effect it has on a simple 2->1 Grid. Note: This component will behave differently when it is in a compiled tree than when it is in the main tree since it uses information other than that which comes in through its input. When this component is used (almost always in the lower part of tree), ArtMatic traverses the tree for the information that it needs to derive the lighting information. As a result, this component can’t be used inside of compiled trees since the tree as a whole is hidden from compiled trees. Advanced note for the mathematically inclined: This component approximates the partial derivative along both the x and y axes of the system (dfx and dfy). The result is the dot product of parameters A and B with the approximated partial derivatives over x and y. This components is one of ArtMatic’s most computationally-intensive components. Formula: A (f(x + dx, y)-f(x, y)) + B (f(x, y+dy)-f(x, y)) + C 2D Slope A: Amplitude B: Offset This component provides a few algorithms for calculating the slope of the curve created by the component that feeds it. This components scans the entire ArtMatic tree in order to perform its calculations. In some cases, ArtMatic may not be able to calculate a slope. In ArtMatic 6, this component was updated with parameter options and algorithm choices. The images at left use the RGB Alpha bump color shader which uses the alpha channel (fourth output) to create 3D height. The system on the far left uses the 2D Slope component to compute the alpha channel. Parameter Options: 2D Slope Normalized, 2D Slope Magnitude, 3D Slope dy, 1D Slope df/dx. The old behavior was Slope Normalized. Slope Magnitude returns a non-normalized slope (i.e. it is not limited to values from 0 to 1). Slope Magnitude is handy for correct space scale estimation when applied to distance. Algorithms: 3D Slope dy - the partial slope y/(dx,dz) of a 3D system. It makes use of length (dfy/dx,dfy/dz). It is useful for getting the slope of a 3D DFRM field. For example, you can use it to switch between textures depending on the slope. 1D Slope dfx - the partial slope in x/dx of a 1D system. It makes use of length(df,1) to calculate the slope. This algorithm can be used to improve the approximation of distance to a curve. The example system “Utility Fuction Plot” (found in the Structure Presets folder) uses it to calculate an accurate curve display. The distance estimation is given by (function(x)-y) divided by 1D Slope dfx. Compare (new) This component provides a way to compare an input value to a single value or value range. Where the input value matches the selection criterion, parameter C’s value is passed out. Everywhere else 0 is passed out. Compare can be especially useful when working the the ‘z’ indexes generated by the 2->4 XYza and 2->4 or 3->4 City Maps (xziy) components. For example, some of the city patterns use the z value 3 for building windows and others use 0. You could feed Compare with the z value and feed the output to a branch or compiled tree that generates reflections. Compare can also be used to build discrete masks. - 18 - REFERENCE: 1->1 Components Compare is used in this tree to provide reflections via the ArtMatic Extra Output. It is selecting those regions where xziy City Textures Set C is 0 (which corresponds to window positions). Algorithms: • • • • • Equal Exact Value. True if the input value exactly matches parameter A. Inside Range. True if the input is inside the range bounded by parameter A and parameter A + parameter B. Outside Range. True if the input is outside the range bounded by parameter A and parameter A + parameter B. Greater Than. True if the input is greater than parameter A. Less Than. True if the input is less than parameter A. Iterations A: Multiplier/Value B: Iterations This component serves two functions. It can force a top-level tree to be looped (calculated several times in succession), and it acts as a counter whose value corresponds to the iterations that have been performed. The behavior is slightly different in top-level trees and in compiled trees. In top-level structure trees, it forces the tree to be looped the number of times specified by parameter B. In compiled trees (and also in top level trees), it returns the number of iterations that have been performed (multiplied by value of parameter A). In sub-trees, the number of iterations to perform is provided by the compiled tree component’s Iterations/Recursion parameter. During each iteration, this component’s value is: current iteration number * Parameter A Iteration is discussed in some detail in the chapter Compiled Trees and Iteration which also includes a tutorial that covers the construction of iterative trees. NOTE: In compiled trees parameter B is ignored as the compiled tree component performs the iterations. WARNING: This component should never be the first component in a tree. Infinity Gate/Mask A: Maximum B: Minimum C: Invert Mask This function allows you to replace finite values with infinity which has some special characteristics (i.e. it is replaced by the depth cueing color -- in RGB systems -- and is transparent when encountered by ‘packed’ mixers). Like the Floor component, this function can be used to define a range outside of which the values are remapped. - 19 - REFERENCE: 1->1 Components When the input value is less than the minimum or greater than the maximum the value infinity is sent out which makes those portions of the surface transparent to the ‘packed’ mixers. Invert Mask can invert the component’s effect. When the parameter’s value is greater than one, infinity is generated where the input value is between the min and the max parameters This is great for creating keying effects when using ArtMatic Pro to create video effects. Memory Functions Below are brief summaries of the 1->1 memory components. Memory components are covered in detail in the chapter Memory Components. Memory components are used in looped/iterated/recursive trees to combine the results of each pass through the loop. These components are only meaningful in such trees. We recommend performing the Compiled Trees and Iteration tutorial in order to best understand how these components work. Memory Add A: Start Value Memory Add simply adds the new value to the old value. It acts as an accumulator. The Start Value parameter is the initial value which is added to the first iteration. Because the effect accumulates over the iterations, you may sometimes want to set the Start Value to a low value so that the system doesn’t attain large/max values everywhere. Memory Fractal Add A: Power Slope B: Sum Gain Each iteration’s pixels are made brighter or dimmer than the previous iteration’s before being added to the accumulated image. See the chapter Memory Components for detailed information. Behavior changed slightly in ArtMatic 6 to improve each iteration’s amplitude change. Memory Max Memory Max retains whichever is larger: the new value or the previous value. When the iterations are done, you are this component will essentially have returned the largest value (for each point) of all the iterations. This component is only meaningful in iterative/recursive systems. This topic is covered in detail in the chapter Compiled Trees and Iteration which also provides simple tutorials for understanding these functions. Memory Min The inverse of Memory Max. Passes out whichever value is smaller: the incoming value or the stored value. Memory Diff A: Smoothness Memory component where each iteration’s value is subtracted from the stored value. See the chapter Memory Components for detailed information. - 20 - REFERENCE: 1->1 Components RGB Alpha Pack (new) This component either filters or creates a packed RGB-A stream depending on whether the input is a scalar (single) value or an RGBA stream. This is a convenient way to add a solid color to a DFRM object or to filter an existing stream’s colors. Simple solid color for DFRM. If the input is a single scalar value, an RGB-A stream is created. The stream’s RGB values are the values of parameters A, B and C and the alpha channel is the input value. Typically, this is used to create DFRM colored solid where the sliders 1, 2, and 3 determine the color, and the input provides the object (DFRM field). Using 1->1 RGB Alpha Pack is more efficient than using the 1->4 Set Constant component followed by a 4->1 Pack component. Packed Input. When the input is a packed RGBA stream, parameters A, B and C scale the input stream’s RGB values and the alpha value is passed through unchanged. This is very handy for scaling a set of packed values. Compiled Tree Open Compiled Tree A: Blend B: Recursion Choose this component to use a 1->1 compiled tree. Compiled trees are groups of tiles that can be used in place of single tiles as a kind of macro or subroutine. Compiled Trees and their parameters are covered in detail in the Compiled Trees chapter of this manual. - 21 - 1->2 Components 1->2 components act as either “dual filters” or “motion functions”. Dual filters (such as Modulo & Int) implement two related functions (such as floating point modulo and integer quantize) one of which is passed out the left output and the other of which is passed out the right output. These are useful in cases where you need to two perform two calculations on the same value. The Dual Filters versions are computationally more efficient than connecting two different 1->1 Filters to the same input. Tree Modulo output Integer output Combined output Output visualized as a curve Motion functions. A few of the 1->2 components (such as Circular Motion) are motion functions and translate a value (usually time) into a position. The motion function allow you to set up trees where motion is automatically created by time. When Circular Motion is connected to the Z Global Input (as in the tree at left), the result is automated circular motion. Set Constant (updated) A: Set Constant x B: Set Constant y This component generates constant values determined by Parameters A and B. The input value is ignored. Parameter options: direct value, 1/value, angle in °. See 1->1 Set Constant for more information about these options. Set Vector (new) Scale the input value using parameters A and B. Left output is A*x. Right output is B*x. Add (x+A,x+B) (new) This component is sometimes referred to as Add Vector. The outputs are x+A, x+B. Add Vector can be useful for adding offsets to the same axis or to move several objects. 2D Derivative (new) Returns the partial derivatives DX, DY. - 22 - REFERENCE: 1->2 Components Math: atan & tgt A: Amplitude Math primitive for advanced users. This component generates the ArcTangent and Tangent of the input. Math: log & exp Formerly, MATH: Log & Exp. This component provides a few useful math functions selected by the algorithms popup. Algorithms: • log(Ax+B) & exp(Ax+B). The left output is the log and the right output is the exponential. • exp(x s), exp(-x s), B: slope. Parameter B acts as a slope value. The left output returns the positive exponent and the right output the negative exponent. The two curves are symmetrical. When creating DFRM objects, the second output could be used, for example, to thin the field while the first output is being used to scale the y-axis. See the Voyager example file OLife DFRM sea shell.vy. • perlin noise & derivative. This algorithm is provided to maintain compatibility with examples developed during beta testing. It has been replaced with the standalone 1->2 Perlin Noise + Derivative component. Modulo & int This component provides a few different flavors of Modulo and Integer functions. The left output is a continuous floating point version of the modulo/remainder function (see Modulo in the 1->1 reference chapter). The right output is the discontinuous integer modulo function (which is equivalent to the 1->1 Quantize component). Parameters: • A: Real Modulo x. Influences both outputs. • B: Phase. • C: Int Modulo Y( some). Active in only some algorithms. Influences the right output only. • D: Repeats #. Parameter options: Infinite Tile, Repeats N. Algorithms: • Modulo & int Mod C. This algorithm was used in the pre-algorithm version. The left-output is a continuous floating point modulo (remainder) function equivalent to 1->1 Modulo. The right output is a discontinuous integer-quantized modulo (equivalent to 1->1 Quatntize) where parameter C determines the number of steps. • Modulo & integer part. Left-output is the floating point (continuous) modulo. The right-output returns the integer part of the input. The parameter option provides tiling options that limit the number of steps. This output can be very useful for differentiating copies and making them behave differently. • Modulo & Random Value. Right-output: return a unique random value B for each step of the modulo function. The parameter option provides tiling options that limit the number of steps. • |Modulo| & smooth step. Similar to “Modulo & integer part” but the step function is made continuous with smoothing of the steps. The modulo returned by the x-output is the modulo of the input’s absolute value and so is symmetrical. This mode was used to animate the legs in Legs Mechanics ArtMatic Voyager example. The parameter option provides tiling options that limit the number of steps. - 23 - REFERENCE: 1->2 Components Integer Modulo A: Modulo B: Freq x C: Freq y Integer Modulo essentially packs two 1->1 Quantize components into a single tile . The left and right outputs share the same number of steps but have independently controllable spacing via the frequency parameters. Starting in ArtMatic 5, 0 is centered in the repetitions. Cubic Clip A: Input Scale B: Offset C: Amplitude The left output is the Cubic Clip function (see the 1->1 component description). The right output simply passes through the input value. 2D derivative dx, dy A: Amplitude B: Normalize % Scan the tree and output dx from the left output and dy from the right output. Motion Functions The following components are useful for automating motion controlled by a time input (such as Global Input Z or W). If you feed the input from a steadily increasing value (such as Global Input Z when in Constants or Time and Cycles mode), the left and right outputs supply values that when added to global inputs X and Y generate motion. The trees at left demonstrate two different ways to use motion components to create a moving dot. When using a tree such as the second one, the parameter settings are critical. There are two Z Displace tiles. One is connected to the left output of the motion component, and so controls the horizontal movement (movement along the X axis). The other one is connected to the motion component’s right output and thus is meant to control vertical displacement (displacement with relation to the Y axis). The first component should have Displace X set to 1 and Displace Y set to 0. The second component should have the reverse settings. The result will be circular motion. Linear motion A: Direction B: Speed This component creates motion along a straight line when used in a tree such as the ones illustrated in the Motion section above. Circular motion A: Radius B: Speed X C: Speed Y When Speed X and Speed Y are the same and when the input is a linear input, the result is circular motion when used in a system such as the one shown in the Motion section above. The motion will be elliptical when the Speed X and Speed Y parameters are different. - 24 - REFERENCE: 1->2 Components Random Motion A: Amplitude B: Speed This component creates continuous random motion when used as described in the Motion section above. Perlin Noise + Derivative The left-output is a 1D Perlin Noise function with its derivative provided from the second output. Derivative can be used to rotate an animated object while the the left-output value animates its position as in the Cluster Motion Perlin.vy example provided with ArtMatic Voyager 3. - 25 - 1->3 Components 1->3 Components generally serve one of three functions: to convert a scalar (single value) stream to RGB color, to generate three independent values, or to unpack an RGB stream. An example of 1->3 Unpack being used to A 1->3 tile can create RGB from a Example of a 1->3 tile generating three in- single value. This makes the tree use dependent constants to control displacement unpack a packed RGB stream RGB rather than gradient color. of three objects Set Constant A: X B: Y C: Z Create three independent constant values whose values are determined by parameters A, B and C. The input value is ignored. The output can be thought of as either three independent values or as a single RGB color. Set Vector (new) Scale the input value using parameters A, B and C. Output is A*x, B*x, C*x. Add (x+A,x+B,x+C) (new) This component is sometimes referred to as Add Vector. The three outputs are x+A, x+B and x+C. Add Vector can be useful for adding offsets to the same axis or to move several objects. 3D Derivative (new) Returns the partial derivatives DX, DY and DZ which are useful for 3D Fields (such as DFRM objects) and 3D Textures. Unpack Unpack a 3D/RGB stream into its component streams. The stream must have been packed with the 3->1 Pack component . Most frequently, this is used with compiled trees: either inside of a compiled tree to unpack RGB values passed into the compiled tree through a single input or to unpack RGB values passed out of a compiled tree through a single output. See chapters QuickStart 2 and Getting Deeper for information about packed streams. RGB Half Plane A: Amplitude B: Offset C: Color Cycle This component can be seen as either a simple color shader or a mathematical primitive. When used as a color shader, it generates a ‘half-plane’ of the color defined by Parameter C. When the offset is 0, the color is generated - 26 - REFERENCE: 1->3 Components wherever the input value times Parameter A is negative; everywhere else is black. There is a smooth transition from black to the defined color. With non-zero settings of parameter A that are close to 0, the transitional area increases in size. This transition area may only be visible when zoomed far in or with amplitude values very close to 0. When Amplitude is 0, the output is the color defined by Parameter C. When A < 0, the color appears on the right. When A > 0, the color appears on the left. Advanced users can use this component to implement complex systems that behave differently for negative and positive input values. Half-plane connected directly to the Global X generates a half-plane of the color defined by Color Cycle When connected to a surface, the result is a virtually two-tone pattern with no intermediate shades except where the input value is very close to 0. Algorithm. Where x is the input value and A and B are parameters A & B): If (x * A) + B < 0 then output the RGB value defined by parameter C RGB Neon Line A: Red B: Green C: Blue This is a simple color shader that generates a vertical horizontal line if fed by the global X input or a horizontal line if fed by the global Y input. The component can also be thought of as a complex filter that outputs its maximum value (as an RGB color) where the absolute value of its input is 0 and generates increasingly smaller values as the absolute value of its input increases. When attached to the output of surface, the result is a monochrome image made up of shades of the color defined by parameters A, B and C. Main gradient A: Gradient Scale X B: Gradient Offset A color shader that translates input values to a color of the main gradient (the current gradient) proportional to the input value. Where x is the input value and A and B are the values of parameters A and B: (x * A) + B is mapped to a color of the gradient where 0 is the leftmost color and 8 is the rightmost color. When parameters A (Scale) and B (Offset) are 1 and 0 respectively, 0 maps to the leftmost color of the gradient and 8 maps to the rightmost color. Main Gradient is often used to create trees that mix gradient color and RGB color. When the input is a surface, the result is a surface colored by the main gradient (just as if the tree had one output). - 27 - REFERENCE: 1->3 Components Indexed gradient A: Gradient Scale B: Offset C: Gradient Index This component is similar to Main Grain but uses parameter C to choose the gradient that is used. Shaded plain color A: Red B: Green C: Blue This component is a simple color shader that maps input value to a shade of the color defined by parameters A, B, and C or to a shade of its complementary color. When the input is greater than 0, the value is mapped to the shade of the color defined by parameters A, B, and C with the brightness increasing with the input value. When the input value is less than 0, the color is mapped to the complement of the color defined by A, B, and C (and the brightness is the absolute value of the input value). RGB gamma A: Gamma Red B: Gamma Green C: Gamma Blue Map an value to RGB with independent control of the R, G and B channels’ response curve. Parameter A Value: Output of left output of RGB Gamma when input connected to Global X 0.125 1.0 2.0 Curve analysis of RGB Gamma Random Color A: Col. Variance B: Saturation C: Luminance Color shader that performs a random mapping of the input value to an RGB color whose saturation and luminance are determined by parameters B and C. The color range is determined by parameter A. The output is smoothed so that there are smooth transitions from color to color when the input is continuous. Hue color A: Hue Variance B: Saturation C: Luminance Color shader that maps input to a color defined by the HLS values defined by parameters A, B and C. The saturation and luminance of the output color are determined by parameters B and C. Parameter A, Hue Variance, is multiplied with the input value before the being mapped to a hue value. As a result, when Hue Variance is small, this component is not very sensitive to changes in the input value. When Hue Variance is large, the component is very sensitive to input value changes. The output is periodic. Color Sines A: Red freq B: Green freq C: Blue freq Color shader that maps the input value to an RGB color by applying independent sine functions to the R, G and B outputs. This can be useful for creating sounds. - 28 - 1->4 Components 1->4 components are very similar to 1->3 components. There are three primary uses: to map a scalar values (single value streams) to RGBA, to create four independent values from a single value, to unpack a packed RGBA stream, to create four constant values. These components are often especially useful for designing elements for ArtMatic Voyager as they can provide a color texture from elevation map or DFRM object. In most cases the fourth output either passes out the input value unchanged or provides an alpha channel mask for the RGB image passed out the first three outputs. Those components that pass the input value through the fourth output unchanged are useful for creating trees that will be used by ArtMatic Voyager for both the color map and the elevation map. When passing a surface value into the component, the result is the color shading used to color the surface (from the first three outputs) and the surface elevation map passed out the fourth output. Those components that pass out an alpha mask are especially useful for creating images/animation that will be composited with other images in VTrack or another image editing program. When used in ArtMatic with the RGB Alpha Bump shader, the result is a texture whose color is provided by the main gradient and whose contours are defined by the texture that feeds the component. Set Constant (Updated 6.0) This component creates three constant values passed out the 1st, 2nd and 3rd outputs. The input value is passed out the fourth output. This component is convenient for adding a solid color This component is functionally equivalent to 1->3 Set Constant plus a fourth passthrough channel. Use this component when you need to add a constant color to a Voyager surface (such as a planet texture or DFRM object). Pass the DFRM object’s output to Set Constant and define the object’s color with slider’s A-C. This component can also be useful in Voyager for creating video transitions where the fourth output is treated as an alpha channel. Voyager Tip! When used as the last component of a tree that supplies surface & color to ArtMatic Voyager, the result is a uniformly colored surface whose elevation map is provided by Set Constant’s input value. Params A: X/Red B: Y/Green C: Z/Blue D: Scale Alpha Scale Alpha (parameter D) scales the input value before it is passed out (the fourth output). MFD Constant (new) This component is useful for creating MFD (MicroFacet Distribution) values that are used by ArtMatic Voyager. This is generally used to feed an ArtMatic extra output that is being used for MFD Shading in Voyager. This component is a true constant. The input is entirely ignored. The difference between MFD Constant and Set Constant is that Set Constant scales the input and sends it out the fourth output; whereas MFD Constant is a true constant that ignores the input value entirely. - 29 - REFERENCE: 1->4 Components Set Vector (New) Create 3 new output values by multiplying the input value with the parameter values and creating respective outputs. The input is passed through the fourth output unchanged. The outputs are X*A, X*B, X*C and X where X is the input value. Add [Vector] (x+A, x+B, x+C, x) (new) Add the values of parameters A, B, and C to the input so that output a is x+A, output b is x+B, and output c is x+C. The input value is passed unchanged out of the fourth output. Indexed gradient (new 5.0) This is the same as the 1->3 counterpart with the additional capability that it passes out the input via the alpha channel. This is useful for applying gradient color to a DFRM object or a planet texture. Pass a DFRM object (or planet texture) to this component and the output is RGB color derived from an indexed gradient (selected by parameter C) plus the surface. Great for Voyager RGBA color. RGBa Neon Line A: Red B: Green C: Blue RGB+Alpha implementation of the 1->3 RGB Neon Line. The fourth output is an alpha mask that matches the contours of the RGB output. This version of the component is useful when you want an alpha channel that provides a mask so that only the line (or lines in an iterative system) is visible and not the background. This is very handy when the resulting image or animation will be composited with other images. See the 1->3 Components chapter for detailed information. The tree at left is useful for creating transition effects like this exploding wipe for VTrack. The rightmost image demonstrates the created alpha (transparency) mask. RGBa half plane A: Amplitude B: Offset C: Color Cycle This component is identical to the 1->3 version except that it also supplies an alpha channel mask out of the fourth output. See the 1->3 Components chapter for detailed information. Random Verticals A: Amount B: Color cycle C: Frequency Color shader that maps input values to randomly regenrated RGB values. The fourth output is an alpha mask of the RGB output. When attached to the global X co-ordinate, the result is colored vertical stripes interspersed with black. The Amount parameter determines the stripe ‘density’ while Frequency determines the width of the stripes. Color Cycle determines the starting color and color range. When Color Cycle is 0, all stripes are black. As the Color Cycle parameter approaches 0, the color saturation approaches 0. - 30 - REFERENCE: 1->4 Components Main Gradient A: Gradient scale x B: Gradient offset Map the input value to a color of the current gradient. This component is identical to the 1->3 version of this component except that it passes the input value unchanged through the fourth output. See the 1->3 Components chapter for detailed information. Shaded Plain Color A: Red B: Green C: Blue RGBA version of the 1->3 component. The input value is passed out through the alpha channel. See the 1->3 Components chapter for detailed information. RGB Gamma (new) This is the same as the 1->3 RGB Gamma component with the additional capability that it passes out the input via the alpha channel. Random color+alpha Params A: Color Variation B: Saturation C: Luminance This component can be used as either a color shader that generates continuous random colors or as a mathematical primitive that generates four independent continuous random numbers. If you need four independent random numbers, this component is more efficient than using 4 1->1 random functions. Hue Color A: Hue Variance B: Saturation C: Luminance Identical to the 1->3 component with the addition that it passes the input value out of the fourth output. See the 1->3 Components chapter for detailed information. RGBa Sin X A: Frequency B: Amplitude C: Color Cycle RGB+Alpha implementation of the sine function. The fourth output is sin x. The input value is mapped to a color of constant hue whose brightness varies with the input value. Sound Generators These components are useful for creating sounds. SOUND MODE EXAMPLE This tree (one of the Master LFO examples provided with ArtMatic Pro) demonstrates how to use Shift Harmonics and Scaled Harmonics to create a repeating sequence. The right branch of the tree provides note envelopes when the Master Input Mode (of the Global Input Matrix) is set to Time & Cycles. - 31 - REFERENCE: 1->4 Components Shifted Harmonics A: Freq. B: Amplitude C: Harmonic offset This component is mostly used in Sound mode. It can also be used as a color shader. Frequency determines the harmonic pitch. Amplitude determines the pixel brightness/ sound volume. When Harmonic Offset is 0, the output is the reference pitch plus the first three harmonics. When Harmonic Offset is non-zero the same offset is added to the frequency of each harmonic resulting in unusual harmonic relationships (since the harmonics are shifted by a constant frequency rather than a multiplier). Scaled Harmonics Params: A: Freq. B: Har. Spacing C: Har. offset This component is mostly in Sound mode. It can also be used as a color shader. It generates a reference pitch plus three harmonics. When the spacing and offset are set to the minimum values, the result is the reference pitch plus the first three harmonics of the harmonic series. Increasing the spacing, increases the spacing of the harmonics and harmonic offset shifts the harmonics. Miscellaneous Components Unpack Unpack an RGB+Alpha stream into its constituent parts. Use this component when you need to access the values being passed in a packed stream. - 32 - 2->1 Components: 2D Scalar Functions These components perform a variety of functions. They are often used to mix the output of two separate components (or branches) or to provide a surface or texture when fed by the values coming from a single two-output component. An essential in-depth discussion of function categories is found in the Getting Deeper chapter and is recommended reading for everyone. DFRM. Some of these components, such as Profiles Shapes, are valuable for creating 3D objects to be rendered with ArtMatic Voyager. Ax + By + C A: Scale X B: Scale Y C: Add This component is useful both as a mixing component that mixes the output of two separate components and as a surface generator which can generate a tilted plane. If the inputs come from separate components, it mixes their outputs with the scale parameters determining the relative contribution of the left and right inputs. If the inputs are the points of a plane (such as when it is the first component in a system) then this component effectively tilts the plane where A and B provide the tilt or rotation and C acts as a zoom. This is essentially a plane equation. This component can also be used to generate gradients such as the one pictured in its icon. Updated with parameter options in ArtMatic 5. Formula: Ax + By + C Interpolate A: Interpolate This component mixes two incoming components/branches by interpolating between the incoming values. This component is a simple way to crossfade between two branches of a tree since the mix is handled with a single parameter rather than the 3 parameters required for using Ax + By + C. The Interpolate parameter (A) determines the relative mix of the two incoming branches. When the parameter is set to the minimum, the output is the left-hand input. When the parameter is set to its maximum value, the output is the same as the right-hand input. When the parameter is set to in-between values, the parameter represents the relative contribution of the two inputs. Output of the Circles com- Output of the Grid compo- Interpolation of the Circles ponent. nent. and Grid components. Line A: Angle B: Amplitude C: Width A single “line” (with a saw-wave profile) is generated when the input is undistorted space. This component is a commonly used primitive. It is also useful as a mixer for mixing the output of two components. The surface that is generated is an infinite single saw shape and therefore has a height unlike the heightless lines of Euclidean geometry. Values beyond the “saw” are zero. The saw height is defined by parameter B. - 33 - COMPONENT REFERENCE: 2->1 Components Gaussian Dot A: Amplitude B: Size Gaussian Dot is a basic building block that generates its maximum value at the origin (x = 0, y = 0) and whose output approaches zero as the input’s distance from zero exceeds the Size parameter which makes it practical for constraining inputs that tend towards infinity. Practically-speaking, it is the surface equivalent of the Gaussian bell curve. Example: The example file “DC Double Affinity feedback” uses Gaussian Dot as the main component of the compiled tree at the heart of the system. Profile Shapes (renamed and expanded 6.0) Formerly called Lozenge. This component provides a large number of shape primitives. Use the algorithm popup to choose the shape. The parameter names may change with the shape and are self-explanatory. Most of the algorithms create shapes that rise to a peak at the origin (the center of the canvas). The original algorithm, “Lozenge”, is a simple four-sided pyramidal surface. As with Gaussian Dot, this component reaches the maximum value at the origin (0,0) and has an output value of 0 beyone its base (where input X exceeds Width (B) and Y goes beyond Height (C).) Lozenge and the other basic polygon algorithms can be used in many of the same situations as Gaussian Dot. The Lozenge shape has frequently been used as a primitive in recursive compiled trees. For instance, it can be used in place of the Gaussian Dot found in the example “DC Double Affinity feedback”. Profile Shapes are useful for 2D images to create decorative shapes or masks. The “Profile deco pattern” and “Profile textured flower” files are examples of decorative use. ArtMatic Voyager. Many of these algorithms are especially useful for creating architectural objects for ArtMatic Voyager. When combined with the appropriate 3D components, Profile Shapes can create a mind-boggling range of shapes. Even a simple systems that uses 3->2 Revolution & Sweeps and Profile Shapes can create thousands of object shapes. Example files: See the many examples in examples library. Look for the word “profile” in the title. This Roman-style church makes use of several Profile Shapes instances. - 34 - COMPONENT REFERENCE: 2->1 Components Using Profile Shapes to C r e at e 3 D O b j e c t s There are three basic methods for creating 3D objects based on Profile Shapes: the intersection method, the 2D sweep method, and the 3D sweep method. Intersection Method An object is created by intersecting two profile shapes that are set up on orthogonal sets of axes. In the tree below, there are two Profile Shapes. One is on the xy plane (the oZ plane) and the other on the yz plane (oX plane). Explore 2->1 Logic Tools’ Min & Blend (intersection) algorithm as well as the Intersect with -abs(y) algorithm. You can intersect a Profile Shape with -abs(z) to make it a finite shape with a tree such as this one This slightly more complex tree provides additional flexibility and provides color to the intersecting profile shapes Example file: The file Profile Intersection.vy uses the intersection of an octagon and a horseshoe arch. 2D Sweep Method The sweep method takes a shape in the XY plane (vertical plane) and sweeps it along a 2D path in the XZ plane (horizontal plane). The 3->2 Revolution & Sweeps component provides many paths, including a basic circular sweep. You can easily build custom paths by merging various sweeps or by using a Profile Shape connected to global inputs x and z. Example files. See PathBlend.vy animate a path created by blending an octagonal path with a pentagonal “N-Folded” framed box. BooleanPath Building.vy creates a path by combining Profile Shapes with boolean operations. 3D Sweep Method The 3D sweeps use a 3D path to sweep the shape. The 3D path can be created by combining to 2D paths in different planes. Very complex objects and shapes can be created with this method though it can be more difficult to visualize the result. The CrossProfile D example creates a 3D path by treating a Profile Shape with 3->2 Parallel Projection. Path Z Morph 31 and Path Profile z Morph34 demonstrate more useful 3D Sweep techniques. Logic Path Morph 31 is another example of a complex 3D path fed to a single profile shape. The path is built by morphing in y two different settings of a Logic Tools “Edged Intersection”. The “Edged Intersect” created the towers at the edges of the volume: - 35 - COMPONENT REFERENCE: 2->1 Components Using negative values. When using Profile Shapes for 3D modeling, make sure that Allow Negative Values is on if it is available as a parameter option. It is on for those algorithms that do not include it as a parameter option. Profile algorithms The shapes are focused on architectural shapes and basic polygons. Where iy- or ix- appears in the name, it indicates that the shape is infinite in the -y or -x direction. For example Column Greek iy- is a column that has a top but is unbounded on the bottom (the minus y direction). The Radius parameter (A) sets the global size of the shape. The Width (parameter B) and Height (parameter C) provide independent width and height control. In some cases, Width also modulates the shape. Curvature (parameter D) smooths all or certain angles most of the time. In some cases, it will modify the shape or curvature. The ornamentation/borders/frames of walls and columns are also increased with the fourth parameter. Basic Regular Polygons: Lozenge (the original shape), Triangle, Rectangle, Pentagon, Hexagon, Octagon - the width and height parameters stretch the space to create irregular polygons. The triangle through disc algorithms feature these parameter options: growth up only, growth up & down, growth down. The options determine how changes in height influence the shape. Arches: Arcade, Disc, Gothic Arch, Persian Arch, Horseshoe Arch, Pointed Horseshoe Arch, Trefoil Arch. These are useful for architectural design. Arches illustrated: Arcade,Persian Arch,Trefoil Arch Columns. A series of columns useful for architecture: Column concave, Column classic, Column greek iy-, Column - 36 - COMPONENT REFERENCE: 2->1 Components Scifi iy-. Various columns illustrated Various Architectural Details Stairs, Pointed Dome and saucer profiles Various wall profiles - 37 - COMPONENT REFERENCE: 2->1 Components Chinese roof, russian dome and framed box profiles Various architectural detail algorithms: • Stairs 4 iy• Stairs inf ixy• Finite and infinite stair patterns. Infinite stairs’ height sets the step height. The top of the staircase is at y=0. The infinite version is often used for platforms on which constructions are built. • Dome • Pointed Dome • Dome Russian • Power Dome - useful for parabolic roofs and arches • Roof A ix• Roof B ix• Saucer • Wall classic • Wall classic roof 30 • Wall classic roof 45 • Wall stones • Chinese Roof & wall • Framed Box Parameter Options: Wall classic through Framed box feature the following parameter options: infinity in x-, default (mirror x+), infinite in x- and yMath Utils # (New Algorithms) A: Algorithm Selector Formerly Math Utils. This is a math primitive for advanced users. This component performs the mathematical operation determined by Parameter A. Parameter A should not be animated as it determines what operation this component performs. When you move the parameter slider, the Tool Tips region displays the operation that corresponds to the slider value. Some of these functions have equivalent components with more parameters. The Math Utils implementation of such functions is fastest and should be used where speed is important. (The algorithms with #s greater than 14 were added in version 4.6.) 0: 1: 2: 3: x-y y-x y*x x/y. Warning : this generates infinity wheny is zero - 38 - COMPONENT REFERENCE: 2->1 Components 4: y/x. Warning : this generates infinity when x is zero 5: atan(y/x). Angle of x,y with OX in -0.5π + 0.5π 6: atan(x/y). Angle of x,y with OY in -0.5π + 0.5π 7: angle(x,y). atan(y/x) but scales the result to go from O-2π 8: dist(x,y). Euclidian distance 9: 1/dist(x,y). Inverse of euclidian distance, goes to infinity at zero 10: 0.5/(dist(x,y)+1/16). Inverse of euclidian distance but scaled so that it ranges 0-8 11: blend y on low. A procedural blend that blends y with x when x is low 12: blend y on high. A procedural blend that blends y with x when x is high 13: blend x*y on low. A procedural blend that blends x*y with x when x is low 14: blend x*y on high. A procedural blend that blends x*y with x when x is high 15: min( 4-|x|, 4-|y| ). A function that creates a pyramid whose sides vanish to infinity. 16: roofed min( 4-|x|, 4-|y| ). A function that creates a plateau with a pyramid base. This is a useful function for placing a particular element (such as a tree or a road) in ArtMatic Voyager. 17: positive mul. A fast procedural multiplication takes positive values only. The algorithm is MAX(x,O)*MAX(y,O) 18: min . A min function without smoothing that computes much faster than the minmax component. 19: max . A max function without smoothing that computes much faster than the minmax component. The following algorithms are very fast operations that can be used like boolean operators 20: max+x . Algorithm MAX(x,y)+x 21:max-x. Algorithm MAX(x,y)-x 22:max-y. Algorithm MAX(x,y)-y 23: min+x. Algorithm MIN(x,y)+x 24: min+y. Algorithm MIN(x,y)+y Added ArtMatic 5: 25: morph log (e^x + e^y). This is a morphing algorithm. Its equation is: log(exp(x) + exp(y)). The result is a smooth blending of two functions when their values are close but works like a maximum function when the values are far apart. 25: smooth max. A version of maximum with a fixed smoothing ratio that is useful in recursive/iterative compiled trees. Unlike the normal maximum algorithm, smooth max adjusts the smoothing to the iteration level of compiled trees in order to avoid small scale elements being smoothed too much. This is often used in recursive compiled trees used to generate trees and vegetation for ArtMatic Voyager. 27: power x^y. Raise input value x to the power of input value y. 28: iteration scale x/y^i. This algorithm (see illustration below) is critical for creating iterative fractal-like structures, including branching plants. Iteration Scale performs scaling is inverted with respect to the number of iterations of the loop which contains it. It is useful for iterative fractals where space needs to inverse scaled with respect to the number of iterations. It is especially useful for creating DFRM fields where the field amplitude needs to be inverse-scaled with respect to the space. Most of the iterated DFRM fractals and iterative tree examples provided with ArtMatic Voyager make use of this component. See the “iter tree” series of examples and the “Fractales 3D” examples found in the ArtMatic Voyager 2.0 Examples folder. 29: x*x*log(x)/y - 39 - COMPONENT REFERENCE: 2->1 Components Iteration Scale The iteration scale algorithm is critical for creating iterated DFRM objects. This tree shows the typical usage of Math Tools>Iteration Scale The table below demonstrates how the use of iteration scale can be used to have elements (such as spacing and size) change in relation to the number of iterations. Iteration # 0 Example 2 3 - 40 - COMPONENT REFERENCE: 2->1 Components Iteration # 6 Example Multiply (x+A)*(y+B) A: Offset x B: Offset y Multiply the inputs and send out the result. Some may use this as a math primitive, others may use it as a mixer to combine two surfaces, and others may use it as a surface generator. When mixing two surfaces, the resulting surface often features interesting interactions of the two inputs that retain some aspects of the two inputs. While the equation is quite simple, the results are often complex and quite surprising. This component is often very useful for designing systems for ArtMatic Voyager as the resulting image generally intersperses areas dominated by the first input with areas dominated by the second input which provides complex topographies. Multipy is useful for creating masks since multiplying by 0 has a result of zero. Formula: (x+A)*(y+B) Distance A: Offset x B: Offset y C: Amplitude Calculate the Euclidean distance. The Distance component generates a sort of blunt-nosed cone when it is given the points of the plane as its input. If the 1D sphere component follows the distance component, the result is a perfect half-sphere. Parameters A and B offset the output and parameter C acts as a multiplier/zoom. A negative C value reverses the cone direction to point it upwards. Formula: Distance Squared Similar to the Distance function, but the square root is not computed. Hence, it runs twice as fast as the true classical Distance. This is a very valuable primitive and can often be used in place of the Distance function where maximum performance is required. Elevation Shapes # (renamed 6.0) A: Shape Type B: Radius C: Amplitude Formerly Shapes #. This component can create a variety of basic shapes. It has many uses and is very useful for creating terrains in ArtMatic Voyager. The algorithms popup menu or Parameter A may be used to determine the shape created. Algorithms include a variety of cones, pyramids and cubes with various contours as well as a star shape and various building shapes. The parameter options give the option of having negative values - 41 - COMPONENT REFERENCE: 2->1 Components which can be useful when using it with ArtMatic Voyager. Distance*(x + y) A: Offset B: Amplitude This component provides shadow-like effects, and its value approaches 0 the further one gets from the origin (0, 0). Formula: B(x+y) (e-A(x2 + y2)) Radial A: Frequency When the input is undistorted space, this component’s output is the angle between the x-axis and the input point. The output is symmetrical about the x-axis and yields a lighting effect on a virtual cone when the input is the points of the plane. The frequency parameter controls the arc of the lighted and shadowed areas. Min Max A: Amplitude B: Min to Max C: Smoothing MinMax can be used as a mixer to combine two surfaces (outputs of two independent components as shown in the example). The two surfaces appear to be opaque unlike most of the other mixing components which tend to merge the inputs. The apparent opacity is the result of the fact that MinMax is a procedural function that uses the minimum and the maximum of the two incoming values rather than merging the values. When parameter B is at its minimum value, the output is the minimum value of the two inputs. When the parameter slider is at its maximum value, the component outputs the maximum of the two values. Other values of parameter B generate an interpolation of the minimum and the maximum (at the midpoint it is the average of the two values). Parameter A is a multiplier which is applied to the result. The Smoothing parameter controls the continuity of the transition between the two inputs. Uses: Min<>Max tends to be used as a mixer since it selectively chooses values from one input or the other rather than combining the values. Notice the difference between the two images below. Both images mix the output from Grid with the output from Ripples. Ex. 1: Note the ripples appear to be in front of the grid. Structure used to create ex. 1. Ex. 2: Image that results when Ax+By+C is used in place of MIN/MAX. Note that the images appear to be merged. When this function is used as a surface generator (i.e. when its input is a space), the result tends to be edges and V-type contours such as in the example at left. Min + Max Min + Max chooses between the incoming values. It is a procedural function that chooses either the minimum or the maximum value of the two inputs, depending on the sign of the second input (y). When the second input is positive - 42 - COMPONENT REFERENCE: 2->1 Components the maximum value is output. When the second input is negative, the minimum value is output. The component’s icon is the image which results when the raw points of the plane are fed into the component. When the inputs are two surfaces, you can get very interesting masking effects where the surfaces intersect. The effects are especially interesting when the second input has both positive and negative values. Like MinMax, this component is usually used to mix two independent surfaces rather than to generate a surface. You can create a searchlight effect by animating the Distance component’s offset parameters. In the example above, the Distance component’s amplitude parameter is set to -4 which results in a dome-like surface that approaches infinity at the center and turns negative at the edges. In the resulting image, notice how the grid’s coloration is opposite inside and outside of the dome. Logic Tools # (vastly updated and renamed) Logic Tools provides a number of algorithms useful for combining surfaces and objects in a variety of complex and interesting ways using a variety of logic operations. It is useful for both ArtMatic and ArtMatic Voyager elements. It is especially useful for morphing and combining DFRM fields. When parameter B is less than 1, both inputs influence the shape. When Parameter B =1, the output is the strict operation (such as the union or intersection). Algorithms: • Max(x,x*A+y). This was the original Add Max algorithm. Returns the maximum of x and y+ (x*A) + B. You can think of it as bending the right-hand input (y) to follow the left-hand input (x) before the Maximum of both is returned. When parameter A (“x weight”) is zero, this component behaves as a simple maximum function. When A (“x weight”) is 1, the component performs a simple addition. Parameter B provides an offset that increases the elevation of y before the Maximum is taken.This function is especially useful for designing systems for ArtMatic Voyager where it can be used to limit certain surface features (such as stone clusters) to certain elevations. Practically, it allows one component to be made sensitive to another component. Stone clusters added to mountains using the straight Max function ( X weight set to 0). Notice that they end abruptly. Stone clusters added to mountains using Add Max with an ‘x weight’ of 0.8. Notice how the stone clusters slowly disappear. The graph at left illustrates the function. Example file: The example file MAXAdd curve Anim shows a cool graphic animation of a blend from MAX to ADD. - 43 - COMPONENT REFERENCE: 2->1 Components • Max & Blend (union). This is a blend of Max(x,y) and Blend(x,y,a) where a is parameter A. Parameter B controls the mixing of the Max and Blend values. When B is 1, the output is the strict Maximum of x and y. When B is 0, the output is the Blend(x,y,a) output. The Blend output is not a strict interpolation of the x and y inputs. The value of the x-input acts to limit the value to keep the output from going to infinity. This is useful for DFRM optimization in cases where the tree results in the distance estimate being too small (which makes rendering take too long). For instance, blending two fields sometimes results in a field that approaches -infinity too slowly which can cause ArtMatic Voyager to spend extra time to find the true object boundary. This happens when merging a sphere and an infinite cylinder with a straight interpolate. When using Logic Tools, use the x-input for the finite shape and the y-input for the shape that is infinite in one or more directions. See the Voyager example file Max & Blend Inf H Tube.vy where an infinite hair tube is blended with a sphere. • Min & Blend (intersection). This algorithm is equivalent to a blend between min(x,y) & blend (x,y,a). If parameter B is 1, the result is min(x,y). With parameter B at 0, the result is a straight interpolation. • Intersect with y+. This algo effectively cuts off the object where y is negative. • Intersect with y-. This algorithm cuts off the object where y is positive. • intersect with -abs(y). This algorithm essentially flattens the x-input object with the y-input. For example, a sphere intersected with a horizontal plate will squashed into a disk. • Reversed Max Abs (Manhattan dist). The Manhattan distance is defined as max( |x|,|y|).This component creates an interesting intersection where one object cuts the other. It may require some adjustment of the object sizes as well as parameters A and C. Reversed Max Abs with a sphere in x and cube in y. The cube needs to be large enough to intersect. If the sizes are too different, you may end up with only the x object or nothing! • Reversed Min Abs (contours). Reversed Min Abs with a sphere and cube as inputs. • Median. Median is defined as the average of the min and the max. When DFRM objects are the inputs, it is a blend between the union and the intersection of the two objects. Median • Min(x,-y) & Blend (subtract y). This algorithm creates interesting combinations of the inputs. When used with DFRM objects,, it removes part of one object and adds part of the other. This is equivalent to using a Min(-x,y) tile - 44 - COMPONENT REFERENCE: 2->1 Components and a Blend (subtract x) tile but much faster. Min(x,-y) & Blend (subtract y). • Min(-x,y) & Blend (subtract x). Min(-x,y) & Blend (subtract x) • Repulsive Union. When used to combine DFRM objects, the effect is for the second input to repel the first input at the point of intersection. Parameter A (repulsion) set the intensity of the repulsion. Parameter B (spread) sets the size of the intersecting region. Smoothing smooths the union of the input fields before applying the morph. Repulsive Union Illustrated Input 1: Sphere Input 2: Cube Spread Min Spread MID Repulsion Min Repulsion Mid Repulsion Max - 45 - Spread Max COMPONENT REFERENCE: 2->1 Components • Ripple Union. Similar to Repulsive Union. Ripples are created where the objects intersect. Parameter B (Spread %), sets the frequency and the size of the intersecting region. The maximum ripple effect is at the intersection. Parameter C (Smoothing) smooths the morphed object with a union of the input fields. Ripple Union Illustrated Input 1: Sphere Spread Min Spread MID Spread Max Input 2: Cube Repulsion Min Repulsion Mid Repulsion Max Repulsion Max with Max Smoothing • Sym Ripple Union. • Ripple Subtract • Framed Subtract. Subtract input B from A but leave a frame around the cut (where it transitions to negative values) with the frame thickness determined by the Border Thickness parameter. The Border Spread parameter determines the border width. • Partial Subtract. Partially subtract B from A. This mostly subtracts B’s outline from A leaving a core with A’s contour. • Edged Subtract. Subtract B from A and create a border at the edges of the resulting volume. Parameter B, called NE Level, controls the level of the non-edge border part of the created volume. At its maximum, it will leave just - 46 - COMPONENT REFERENCE: 2->1 Components the edges. Edged Intersect. Create an object at the intersection of A and B with an edge. Parameter B acts as the Non-Edge Level control as in the previous algorithm.. Difference A: Amplitude Difference calculates the absolute value of the difference of the two inputs. This is the same as Photoshop’s difference mode. Grid A: Scale x B: Scale y C: Amplitude This component generates a grid pattern when it is fed the points of the plane. It is a very useful function when examining how the various vector functions (2->2) distort space. The scale parameters determine the spacing of the horizontal and vertical bars. The amplitude parameter determines the “height” or the “arc” of the grid bars. Grids # (updated and renamed) Formerly, Hexa Grid. This component generates grid-like patterns. The algorithm popup provides a number of grid types. The underlying math now ensures that the frequency scaling matches the other tile components.(This was not true prior to ArtMatic 6.0). The parameter options allow you to enable negative values as they are required when creating DFRM objects. Examples. See the Tiling Folder example “Tiles Sizes Match” to see how various tilings, mirror spaces and grids can be used together. Algorithms: • • • • • • • • Unit square grid Square 45º grid. The scaling matches Unit Square grid but has been rotated 45 degrees. Unit Hexagons & triangles. The original Hexa Grid algorithm. Hexgons & triangles grid Triangles grid Lozenges grid Hexagons dual grid Hexagons grid Hexagons A: Amplitude B: Phase C: Frequency Hexagons is typically used as a surface generator which creates a lattice of hexagons. The amplitude parameter acts as a contrast control while phase and frequency control the lattice’s offset and spacing. This component can also yield interesting results when used as a mixer. Hexa sines A: Amplitude This component is similar to Sin x + Sin y performed on a hexagonal grid. Sin x + Sin y A: Frequency B: Phase x C: Phase y This component generates an egg-crate like surface when given undistorted space as its input. The frequency parameter controls the size of the surface’s ‘cells’ and the phase parameters shift the pattern vertically and horizontally. - 47 - COMPONENT REFERENCE: 2->1 Components Formula: Sin x + Sin y Sin x * Sin y A: Amplitude B: Phase x C: Phase y The output of Sin x * Sin y is similar to that of the sin x + sin y though it has more of a checkerboard effect on a raw plane. Amplitude effects the steepness/color contour of the cell walls. Formula: Sin x * Sin y Circles A: Frequency B: Size C: Power Circles generates an arrangement of tiled cones. The frequency parameter determines the spacing of the cones. The size parameter determines the size/shape of the bases; at the minimum value the base has a circular shape; at the maximum value, the cones appear to have square bases. The power parameter acts as a contrast/brightness control on the component’s output. To see the output as cones, use the derivative function as the final component as in the image to the left. x + A Sin y A: Amplitude B: Frequency This component has a distortion effect and can have a wave or interference pattern-like effect when receiving the output from two independent scalar functions. Random cones A: Amplitude B: Bubble size C: Frequency Technically-speaking, this component generates an arrangement of randomly-sized and placed cones whose appearance can seem like motes or “space-dust”. Amplitude controls the contrast/cone height. Bubble size controls the cone base size, and frequency controls the spacing and can act like a zoom control. This component involves fairly intensive calculations and can be a bit slow. Star Field A: Amplitude B: Phase C: Frequency Star Field generates a virtual, layered starfield that is great for creating cosmic textures and images as well as for bump textures. Animating the phase parameter creates a sense of depth by moving the layers at different speeds. Ripples A: Ripples # B: Size C: Frequency Ripples generates a pattern of tiled ripples when given a plane as the input. The ripples # parameter determines the number of concentric rings per tile. The size parameter determines the basic shape of the ripples. The frequency parameter determines the spacing of the ripple tiles. Facet A: Frequency B: Amplitude C: Phase Facet is a discontinuous function that generates a mosaic-like surface. It uses an algorithm similar to bubbles but generates the same value (altitude) for each individual bubble. - 48 - COMPONENT REFERENCE: 2->1 Components Techno A: Frequency B: Phase C: Power Techno recursively distributes differently-sized pyramids across the plane. The pyramids’ base sizes differ but all have the same height. Frequency determines the size/spacing of the pyramids. Phase provides a horizontal offset. Power influences the pyramid height/contrast. The effect is like an aerial photograph of pyramids or city blocks. This component is generally used as a surface generator rather than as a mixer. Example files: Many of the ArtMatic Pro sample files use this component. Search for ‘techno’ to find some notable examples. Tech Noise A: Noise Pattern B: Amplitude C: Frequency This noise component creates a variety of “techno” patterns that can be useful for creating decorative patterns and also for designing ArtMatic Voyager cities. Use parameter A to select the pattern. A variety of mazes, patchworks and cityscape-like patterns are available. Most patterns come in both a sharp and a soft variety. Generally, the “soft” version should be used whenever this component is used to create surfaces and textures for ArtMatic Voyager as the “sharp” version can have discontinuities (sharp edges) that can cause problems in ArtMatic Voyager. Available patterns are: City Blocks, Mondrian, Signs, Techno Grid, Techno Maze, Techno, Sparse Rects, Techno Coral, Building, Building B, Computer Dots, Street Network, Street Mask, Patchwork City C, Alien City A, Alien City B, High Rise City, Random High Rise, Tech Lines, Tech Marks. ArtMatic Texture The Street Mask pattern can be used to impose the city Simple ArtMatic Voyager landscape structure on another component. Street Network notes. 2->1 Tech Noise and 2->4 Tech Noise share patterns that create cities with the same street network , All of the cities created by these components use the same street network. The street network and street network mask patterns have the “pure” versions of the street network and can be used by advanced users to create interesting cities. Street network provides a map of streets with sidewalks and buildings of various heights. The street level values are well below zero, the sidewalks are at 0, and the buildings have elevations above 0. Street Mask has positive values at street level and 0 for the city blocks. Use this component set to the Street Network or Streets Mask pattern along with the minimum or multiply function to shape another surface to a city map as shown above. All the patterns with “city” and “street” in the name use the same street networks so they can be mixed together as long as they use the same frequency setting. Pyramids A: Amplitude B: Phase C: Frequency Pyramids is a surface generation component very similar to Techno. The primary difference between the two is that the pyramid height is proportional to the base size. - 49 - COMPONENT REFERENCE: 2->1 Components Smooth Entrelas A: Amplitude B: Phase C: Frequency This procedural component creates a randomized pattern that juxtaposes several predefined patterns. The amplitude, phase and frequency control the contrast, offset and spacing of the resulting pattern. Example files: “Bio Electronica” and “Entrelas z wipe” both use this component. Circuitry A: Amplitude B: Phase C: Frequency This procedural component creates a randomized pattern that juxtaposes several predefined patterns. A typical pattern is shown at left.Example files: “Fractal Trek” uses this texture in a recursive fractal voyage. ZigZag A: Amplitude B: Phase C: Frequency This procedural component creates a randomized pattern that juxtaposes several predefined patterns. A typical pattern is shown at left. Maze A: Amplitude B: Style C: Frequency Maze is a texture function that creates maze patterns. Parameter B (Style) determines the maze pattern. Lightning A: Amplitude B: Angle C: Offset Lightning is a texture function that creates lightning-like patterns of intersecting lines. Lightning can be used in ArtMatic Voyager to provide the structure of a river canyon system. - 50 - COMPONENT REFERENCE: 2->1 Components Dynamo A: Rotation B: Phase x C: Phase y Dynamo is a fascinating component whose behavior is impossible to explain and whose formula is quite complex. It has a very non-linear response. The images below are all taken from a simple system whose only changes are to Dynamo’s parameters and the zoom level. Zebra noise A: Amplitude B: Thickness C: Frequency This component generates a zebra stripe pattern. The Amplitude influences the lines’ waviness. Thickness determines the lines’ thickness and frequency determines the stripe spacing. Craters A: Amplitude B: Phase C: Frequency Craters is a texture function generally used to create realistic craters when creating planet-like objects. The example files include many simulated moons whose surfaces are covered with craters. Pict/Movie A: Size B: Contrast C: Tiling This component lets you insert a picture file or movie into an ArtMatic system. The Size parameter scales the input. When Size is 1, the input picture will fill the canvas at the default zoom level (set by clicking the center view button.) The Tiling parameter determines the input’s tiling. When Tiling is 0, no tiling is done. The larger the Tiling value, the closer together the tiles will be. The 2->1 versions of this component use a black and white version of the input movie/pict and use the current gradient to color the resulting image. By preceding the tile with space distortion functions, you can warp and distort the image. There are several variations of the Pict/Movie component all of which are covered in depth in the chapter Using Pictures and Movies. Example Files: Many examples have been provided in the library. Pict/Movie Sym Tiled A: Size B: Contrast This variation of the Pict/Movie component creates symmetrically mirrored tiles. For information about all of the Pict/Movie components, see the chapter Using Pictures and Movies. Blurred Pict/Movie A: Size B: Contrast C: Blur This variation of the Pict/Movie component creates a blurred version of the input movie/pict. This component is usually used in systems along with a parallel unblurred Pict/Movie tile. By combining the blurred and straight versions of the input source, beautiful halo, chrome and other effects can be created. For more information, see the chapter Using Pictures and Movies. Example files: “Fire chrome” & “Light halo” are great examples which demonstrate how to use this component. - 51 - COMPONENT REFERENCE: 2->1 Components Random Squares A: Scale X B: Scale Y C: Amplitude This component generates discrete random rectangles when the component’s input comes from the raw plane or another component with two outputs. The scale parameters determine the horizontal and vertical sizes of the rectangles and the amplitude is a multiplier to the output. Note that the output is discontinuous and does not tend to work well with the derivative component. Random Noise A: Amplitude B: Phase C: Frequency This component generates random noise (like the snow on a television). Unlike Random Squares, this component’s output while “noisy” is continuous with smooth transitions between the noise grains. This component is often used as a primitive for generating textures. Low freq noise A: Amplitude B: Frequency C: Phase This is another flavor of random noise that is great for creating smoothly changing textures. The output is weighted towards lower values. Perlin noise A: Amplitude B: Level C: Frequency Perlin noise is another special flavor of noise which can yield a variety of surface textures that can resemble stucco or cells in a petri dish and more. Perlin Noise is equivalent to Multi Perlin noise with its octaves set to 1. Adaptive, Band-Limited Noise Functions The next group of noise functions have adaptive resolution and are band-limited to reduce high-frequency noise. They are recommended for use with ArtMatic Voyager. The number of iterations and resolution are deteremined by the zoom level and the fractal iterations preference. By being adaptive, the functions can deliver maximum detail at any zoom level. NOTE: With very high zoom levels, you may need to increase the Maximum Iterations for Fractals setting in the Preferences dialog. Multi Perlin Noise A: Amplitude B: Octaves C: Frequency This component creates rich, layered Perlin noise by adding ‘octaves’ of Perlin noise with each octave having twice the frequency of the previous one. When the octaves parameter B is at its maximum (128 which is 27) there are seven “octaves” or layers of noise. It can be used to create large-scale modulation or rolling plains in ArtMatic Voyager when the frequency is set very low (.01 to .03). Multi-Perlin Multi-Perlin Noise with octaves set to 64. noise with octaves at the minimum - 52 - COMPONENT REFERENCE: 2->1 Components Multi Perlin Noise with 4 octaves (B = 16) as seen in ArtMatic and also ArtMatic Voyager. Bump noise A: Amplitude B: Phase C: Frequency Bump noise gives the impression of raised and embossed textures – created by the subtraction of one Perlin noise function from another. The generated surface is rougher than the other types of noise. Fractal Noise A: Amplitude B: Phase C: Frequency D: Roughness The fractal noise component is generated by summing different frequencies of noise. The amplitude of each noise “layer” decreases as its frequency increases with a typical ratio of 1/f where f is the frequency value. Frequencies double between each “layer”. Parameter D (Roughness) added in ArtMatic 6. This is a very useful noise for creating natural textures and for “texturing” its input. This noise has a certain degree of structure which makes it great for creating marbled textures and clouds and other natural textures. This component is iterative and is sensitive to the Max iterations for fractals preference. MultiFractal Noise (Updated 6.0) A: Amplitude B: Phase C: Frequency D: Roughness 2D fractal noise with varying fractal dimension (roughness) created by summing Perlin noise functions at increasing frequencies. “Multi-Fractal” indicates that the fractal dimension (a measure of the surface roughness) changes randomly over the surface -- unlike simple fractals whose fractal dimension is constant. As you can see below the apparent roughness varies unlike Fractal Noise whose roughness is constant. Parameter D (Roughness) added in ArtMatic 6. Ridged Fractal Noise A: Amplitude B: Smoothing C: Frequency This component is especially useful for creating terrain textured with ridges. This fractal function was designed by Ken Musgrave and is a good approximation of ridged mountains where the fractal dimension is smoother in valleys than elsewhere. This noise function generates positive values only. Ridged Fractal noise composed of 2D Ridged - 53 - COMPONENT REFERENCE: 2->1 Components Perlin noise (1-abs(n)). Normal perlin noise profile Ridged perlin noise profile The smoothing parameter determines the roughness of the ridged texture as demonstrated in the following illustrations: Landscape created with maximum smoothing. The same landscape with smoothing set to the minimum value. Mountain Ranges A: Amplitude B: Roughness C: Frequency This component is especially well-suited to creating mountain ranges for ArtMatic Voyager. The Roughness parameter determines the texture of the ground. This is a composite noise function that uses Ridged Fractal Noise for low frequencies (large scale changes) and a Multifractal Noise for high frequency content. The result is a rich natural terrain that is more realistic than pure Ridged Fractal Noise. Fractal noises # (updated) A: Amplitude B: Phase C: Frequency D: Roughness Formerly Crystal Noise. This component supplies a number of fractal and terrain textures. Algorithms: Crystal Noise (original algorithm), Orthoquintic noise, Orthoquintic alveolic noise, Orthoquintic MF Noise, Fibrous Noise A, Fibrous Noise B, Fibrous MF Noise, River world MF noise The orthoquintic noise algorithms use Quintic interpolated random noise and its derivative. The fibrous noise series uses cubic interpolated random noise and its derivative. It is hard to describe. River world MF noise provides some interesting river shapes that make it useful for designing ArtMatic Voyager terrains. The Crystal Noise algorithm (the original) has sharp edges and is useful both as a surface/texture generator (i.e. when the input is space) or as a mixer. Follow this component with Derivative to bring out the sharp edges. This component is a good primitive for mountains or torn paper or granite-like textures. (Tech. note: this function sums several non-continuous 2D random noise functions using triangular lattice linear interpolation). This function only generates values above 0. Example: See “Crystal Noise z wipe” for a great use of this noise function to create a torn paper type effect. - 54 - COMPONENT REFERENCE: 2->1 Components Crystal Noise used to mix a Grid and Ripples Crystal Noise used in a simplified version of the “Crystal Noise z wipe” example. Notice that the noise provides the ‘holes’ in the picture of the U&I logo As seen in ArtMatic Crystal Noise with an amplitude of 7.3 as seen in ArtMatic Voyager When creating terrains for ArtMatic Voyager, Crystal Noise is often used with a displacement component above it when sharp changes of slope are desired. Eroded Fractal A: Amplitude B: Erosion Level C: Frequency This component is great for creating textures weathered by erosion in ArtMatic Voyager. The textures are smoother than the ridged noise surfaces as if wind and water erosion has worn the surfaces. Eroded Fractal adds ‘rivers’ to a Perlin noise base. The Erosion parameter controls the length and amplitude of the ‘rivers’. The image at left is an image of an Eroded Fractal terrain as seen in ArtMatic Voyager. Sparse Fractal Rocks A: Amplitude B: Spareseness C: Frequency This component is great for creating irregularly spaced rocks/mounds/hills (depending on the surface amplitude). The Sparseness parameter determines the density of the features. Sparse fractal noise is a useful primitive for simulating dust and scratches in ArtMatic textures or to add fine rock details in an ArtMatic Voyager landscape. Sparsely spaced fractal rocks Less sparsely spaced rocks. - 55 - COMPONENT REFERENCE: 2->1 Components Stone Clusters A: Amplitude B: Phase C: Frequency Clusters of stones with varying stone sizes and amount. This component is great for creating clusters of variously-sized stones for ArtMatic Voyager. Lunar Rocks A: Amplitude B: Phase C: Frequency This component adds lunar-like rocks to ArtMatic Voyager surfaces. This is a multi-fractal noise with added sparse bump clusters. It is more natural looking than standard fractal noise with varying degrees of roughness and bumps that tend to occur in clusters. Bubble Rocks A: Amplitude B: Phase C: Frequency A Multi fractal noise where fine details and rougher textures tend to fill the lower elevation of larger-scale elements. This component is frequently used in ArtMatic Voyager to create irregular bubble-shaped mounds and rocks. Stratified Rocks A: Amplitude B: Phase C: Frequency A skewed and quasi-orthogonal fractal noise function great for creating stratified ArtMatic Voyager terrains. - 56 - COMPONENT REFERENCE: 2->1 Components Ridged Noise A: Amplitude B: Octaves C: Frequency Ridged Noise is similar to the Multi Perlin Noise function but uses ridged Perlin noise function as its basis. This component is great for adding ridged contours to systems used with ArtMatic Voyager. The Octaves controls the number of layers of ridges. Each successive octave is at a higher frequency with a lower amplitude. As seen in ArtMatic Ridged Noise with about octaves=4 can be a good starting point for dunes. When the amplitude is negative it looks more like round stone clusters as shown below: As seen in ArtMatic Ridged Noise with about octaves=128 and negative amplitude Cellular A: Amplitude B: Phase C: Frequency This component creates a Voronoi cellular texture. Cellular is often used in conjunction with the Smooth Floor filter component (with the roof parameter set near 1) to flatten the “cells” so they look like cracks in the ground: Bubbles A: Amplitude B: Bubble size C: Frequency Bubbles is almost the inverse of Random cones. It generates a surface of randomly placed spherical holes. A negative amplitude value turns the holes into conical bumps. This component’s calculations are faster than random cones. Bubble Texture as seen in ArtMatic Voyager when amplitude is negative Fractal Lines A: Amplitude B: Phase C: Frequency This (non-adaptive) component generates a system of veined lines and is actually the absolute value of fractal noise. It is great for creating marble-like textures. - 57 - COMPONENT REFERENCE: 2->1 Components Open Compiled Tree A: Scale B: Iterations Choose this component to use a 2->1 compiled tree. Compiled trees are groups of tiles that can be used in place of single tiles as a kind of macro or subroutine. Compiled Trees and their parameters are covered in detail in the Compiled Trees chapter of this manual. - 58 - 2->2 Components: 2D Vector Functions These functions are often used to distort or remap space. Remapping and distorting space causes the output of any components below the distortion to be warped and distorted. A good way to see what effect these functions have on a system is to use a basic structure where a 2D Vector function distorts a picture (in this case an image of the U&I logo on a grid). Undistorted system Skew distorted system Some of these components can also act as two parallel 1D filters. An essential in-depth discussion of function categories is found in the Getting Deeper chapter and is recommended reading for everyone. Skew A: Skew Angle B: Skew Amount C: Scale Skew skews the incoming space. The skew angle parameter determines the angle of the skewing. Skew amount influences the amount of skewing, and scale zooms the space. Scale Ax, By A: Scale x B: Scale y This simple primitive scales the two inputs independently. The scale parameters have a greater range than the similar Scale and Offset function. Note that the x output is solely a function off the x input, and the y output is solely a function of the y input, Hence, this component can be used as either a space transform function OR as two parallel 1D filters. When used as a space transform, this component acts as a magnification function. Left output: A* x Right output: B * x Scale and Offset A: Scale B: Offset x C: Offset y The Scale component simply scales the incoming space (by multiplying the x and y coordinates by the same factor) and allows it to be offset horizontally ( the Offset x parameter) and/or vertically (the Offset y parameter). Note that a scale value of -1 inverts the space. Since the x output is a function of the x input and is not influenced by the y input, this component can be used as two parallel 1D filters. Left output: (A * x) + B Right output: (A * x) + C Rotate A A: Angle B: Center x C: Center y Rotate space about a point. The angle parameter is the angle of rotation. center x and center y set the point about which the space is rotated. The default center is 0,0. If the canvas has been shifted left or right, you may want to assign the center parameters to the values of the canvas center, if possible, when animating using this component. Tip: When this component is added to a system using the Insert popup menu’s Insert Global Rotation command, the center parameters are automatically set to the system’s center values (as displayed in the Camera Path dialog). - 59 - COMPONENT REFERENCE: 2->2 Components Normalise (new) This is a mathematical primitive that normalizes the input coordinates. This component is useful for those with a deep understanding of CGI computation. If you aren’t sure what this means, you probably don’t need this component. x + A sin y, y + A sin x A: Amplitude B: Frequency Distort space using sine waves. When the amplitude is 0, space is not distorted. A great variety of space distortions and patterns can be generated by adjusting the amplitude and frequency as demonstrated by the following pictures. When this component precedes 2->1 Ax+By+C, the effect is an egg crate effect as shown below: Left (x) output equation: x + A sin y Right (y) output equation: y + A sin x Waves A: Frequency B: Amplitude x C: Amplitude y This component bends space giving it a “waved” aspect. The distortion is created using the absolute value of the sine function. Frequency determines the spacing of the undulations. The amplitude parameters determine the amount of horizontal and distortion. Sin warp A: Amplitude B: Frequency This component is very similar to the x*A sin y/y*A sin x component and bends space with waves or an eggcrate-like effect. Orthogonal Mirror Tiles A: Scale B: Scale Y The input space is mirrored both vertically and horizontally and then tiled which makes it ideal for creating tiled wallpaper or kaleidoscope type effects. (For creating individual tiles for export, the Mirrors 4 component may be more appropriate.) Parameter A (Scale) is applied both horizontally and vertically. Parameter B applies only vertically. - 60 - COMPONENT REFERENCE: 2->2 Components Sin x, sin y A: Amplitude B: Frequency This component tiles space by applying the sine function to the incoming values. The function’s output always falls in the range of -1 to 1. This is a great way to create tiles and other repetitive patterns and textures. The output of this function is both periodic and continuous, thus it is often used for sound design. Hexagonal Sin A: Scale Like Sin x, sin y, this component tiles space. In this case, space is tiled using a combination of sin and hexagonal transforms. The output of this function is both periodic and continuous, thus it is often used for sound design. Hexagonal Mirrors A: Scale This component tiles space into hexagonal tiles with 120 degree rotational symmetry. The resulting space is periodic but not continuous. So, it is to generally avoided for sound design or systems intended for ArtMatic Voyager. Mirrors N Tiles # (updated and renamed) Renamed from Hexagonal tiles. This component provides a collection of periodic and symmetrical tilings using several different rotational foldings. In ArtMatic Voyager, these may be useful for color textures but due to discontinuities may not be appropriate for terrains. Algorithms: • Unit Threefold Mirrors. Threefold Mirrors was the original Hexagonal Tiles implementation. This algo creates a space of repeated hexagonal tiles. Each tile is a repetition of the space surrounding the origin of the incoming space. This is a great primitive for creating skin-like textures. Amplitude is the scale of the space within each tile while frequency controls the size of the tiles. . The axis of symmetry is vertical instead of horizontal for all the other algorithms. Example files: The “Snake Skin” files provided typical examples. Unlike the other algorithms, the image is not centered on the axis of symmetry • Threefold Mirrors 60 • Fourfold Mirrors 45 • Fivefold Mirrors skewed 72 • Sixfold Mirrors 60 • Sixfold Mirrors 45 • Heightfold Mirrors • Heightfold Mirrors 45 • Ninefold Mirrors 60 • Tenfold Mirrors 45 • Tenfold Mirrors skewed 36 • Tenfold Mirrors skewed 72 • Twelvefold Mirrors 60 • Twelvefold Mirrors 45 • Sixteenfold Mirrors • Sixteenfold Mirrors 45 - 61 - COMPONENT REFERENCE: 2->2 Components • • • • • Twentyfold Mirrors 45 Square & triangles mirrors Hexagons, squares & triangles mirror Decagons & pentagons mirror Pentagonal crystal mirror 60 indicates that the lattice points are spaced at 60° in a triangular lattice. 45 indicates that lattices point are spaced at 45° in a rectangular lattice. “skewed 36” indicates a skewed lattice with a ratio of tan(36°) between x & y. “skewed 72” indicates a skewed lattice with a ratio of tan(72°) between x & y. The phase parameter moves the y coordinate. The last four algorithms provide mirror tilings of several polygons. The pentagonal crystal mirror is especially interesting as tiling with regular pentagons is impossible. This algorithm offers a quasi-crystal semi-regular solution that is aesthetically quite pleasing. Pentagonal crystal mirror applied to the U&I Software logo. Decagons & pentagons mirror is an algorithm reminiscent of tilings found in Islamic art. The “Decagons & pentagons mirror” space applied to our logo. Examples. See the tiling example files. - 62 - COMPONENT REFERENCE: 2->2 Components Orthogonal Tiles # (updated and renamed) Formerly Tile and Displace, this component provides several methods for tiling space. The parameters are algorithm dependent. Frequency sets the tile size and leaves the coordinates of each tile unchanged and centered at 0. The Scale parameter scales the space in the tiles with 1 being no change. The rectangle algorithms allows independent setting of the x and y tile frequency. Displacement. Some algorithms feature a displacment parameter which creates non-repetitive tiling by applying different displacements for the tiles. When displacement is non-zero, the tiline is non-repetitive. Algorithms • • • • • Unit Square Tiles Square Tiles 45, Rectangle Tiles, Square Tiles Displaced, Zoom Tiles/Pi displaced Tip: To create complex symmetry, follow this component with the Mirrors 4 component. Warning : The output is highly discontinuous and is to be avoided in systems destined for ArtMatic Voyager. Pixel prism A: Displacement B: Scale C: Frequency Pixel Prism rearranges space by randomly breaking up the incoming space into little squares of uniform size. The effect is puzzle-like. To best visualize it, use the Movie or pict component after it as in the images below. With displacement at 0 and scale at 0, there is no re-arrangement of the incoming space though there may be tiling (depending on the setting of the frequency parameter which determines the size of the squares). Warning : The output is highly discontinuous and is to be avoided in systems destined for ArtMatic Voyager. Tip: this component can yield particularly interesting results when used with the distance shaders. Pixel Prism with Displacement set low (left) and high (right) Crystallize A: Amplitude B: Frequency C: Phase This component deforms space in a painterly way that makes it great for creating stylization effects for video processing. The image at left demonstrates its effect on the U&I Software logo. Warning : The output is highly discontinuous and is to be avoided in systems destined for ArtMatic Voyager. - 63 - COMPONENT REFERENCE: 2->2 Components Disc Tiling A: Smooth Edges B: Offset x C: Offset y Warp space with an Escher-like tiling of space into a disc-shaped enclosed space. This is a great primitive for creating decorative figures. Tip: Try inserting the Disk Mirror component just before Disc Tiling. Structure of An image created by the This is the image that re- the file Chi- system shown at left. sults when the Disc Tiling nese Fractal Notice how Disc Tiling component is removed Sin z Plate encapsulates the space. from the structure. Serpiensky tiles A: Amplitude B: Offset C: Frequency Serpiensky tiles is an implementation of a classic fractal algorithm that starts with a triangle and recursively fills space with smaller copies of itself as shown in the component’s icon. This component is sensitive to the Maximum Iterations for Fractals preference. Ripples A: Frequency B: Amplitude C: Phase This component distorts space with concentric circles. Amplitude provides the amount of distortion. With an amplitude of 0, there is no distortion. Frequency determines the spacing of the ripples. For a realistic effect you can use the phase to animate outward ripples. Split & Move A: Angle B: Offset x C: Offset y Splits the incoming space (plane) in two and moves each side in opposite directions. Infinity is generated in the space between the split planes so that the output of this component can be used as a mask for wipe effects. See the example Split&Move Wipe for a basic use. Mirror A: Rotation B: Offset x C: Offset y This space transform creates a mirror of the input space. The Rotation parameter allows the axis of mirroring to be rotated which allows for interesting patterns when this component is used in a looped tree (as shown to the left). - 64 - COMPONENT REFERENCE: 2->2 Components Mirrors 3 A: Scale B: Offset x C: Offset y Mirror space into three parts with a 120 degree rotational symmetry. Use this and the other “mirror” components for kaleidoscopic effects. Scale scales the incoming space and the offset parameters provide horizontal and vertical offsets of the incoming space. Mirrors 4 A: Scale B: Offset x C: Offset y This component creates a 4-way mirroring of the incoming space which is symmetrical about the x and y axes. Left output equation: Absolute value of x Right output equation: Absolute value of y N-Fold Mirrors # (updated and renamed). A: Scale B: Offset x C: Offset y Formerly:Mirrors 6. This component provides a number of different mirroring algorithms. Parameters options are available for all folding symmetry orientation options. Algorithms: • Skewed 6 Mirrors (legacy). This algorithm was the previously used algorithm and has been left for legacy and compatibility with older versions though it is mathematically incorrect. It creates a kaleidoscopic mirroring of space about three axes that are rotated 120 degrees apart. • Threefold Mirrors • Fourfold Mirrors • Fivefold Mirrors • Sixfold Mirrors (default) • Heightfold Mirrors • Ninefold Mirrors • Tenfold Mirrors • Twelvefold Mirrors • 45° Mirrors Branch N (updated) A: Branch # B: Offset x C: Offset y This component mirrors space as in the other “mirror” tiles but provides parametric control of the number of mirrors. The Branch # parameter allows you to achieve from 3 to 18 rotational symmetries. Unlike the other mirror functions, the axis symmetry is made seamless (continuous) which allows it to be used with the Derivative component. The offset parameters are the horizontal and vertical offsets of the incoming space. Example files: Bio Electronica Parameter options provide a number of different symmetries. When inward is chosen, the orientation matches the one used by 3->3 3D Mirrors and Rotates. Previously, inward orientation was always used. - 65 - COMPONENT REFERENCE: 2->2 Components • • • • Orient outward (x-,y-) Orient inward (x-,y+) Orient outward (x+,y-) Orient inward (x+,y+) . This was the behavior in previous versions. Radial star A: Outer phase B: Narrowness C: Amplitude This component distorts space with radial undulates. Animate the outer phase parameter for nice explosion effects. Disk Mirror A: Disk Size Disk Mirror provides a circular mirroring of the incoming space. This is another component that can be used to constrain space to prevent it from reaching infinity. The Disk Size parameter controls the size of the region that is mirrored. The image at left shows the result of placing the Disk Mirror component at the top of the example system. Distance Mirror A: Amplitude B: Mirror C: Distance This component inwardly mirrors distance beyond a certain radius and hence is another component that can be used for avoiding infinities. This is useful for both cleaning up systems that are noisy as they approach infinity and for closing shapes. Values beyond the limits of the bounding circle are mapped to zero. Complex inverse A: Scale Complex inverse inverts space using a complex number transformation so that infinity becomes 0 and 0 becomes infinity. The transformation divides x and y by distance. Complex Moebius A: Angle B: Scale C: Imaginary Complex Moebius is an implementation of the Moebius transform. It is a space transform that creates an interesting complex inversion of the input space. When used in an iterative (looped) system the result is fascinating geometries that sometimes have several attractors. See the 2->5 Components chapter for examples of other Moebius transforms. Complex Map A: Real B: Imaginary This component treats the x,y inputs as the real and imaginary parts of a complex number. As with Complex inverse, infinity becomes 0 and 0 becomes infinity. Four iterations of a recursive complex number equation are used to determine the output. Complex Map 2 A: Real B: Imaginary This component is similar to Complex Map but uses a different equation which is a complex polynomial with a fixed number of iterations. - 66 - COMPONENT REFERENCE: 2->2 Components Complex waves A: Scale B: Offset This component warps the incoming space by applying a low frequency sine wave transform. Ring Space A: Offset x B: Offset y C: Warp This component warps space about several attractors. As with many of the complex number-based components, this component can be used to avoid infinities. The presence of the three attractors makes this component terrific for creating flower-like shapes. Polar Space A: Polar Scale B: Distance C: Scale Use this component to interpret x and y as polar coordinates where x is the angle and y is distance. Orbiters A: Rotation B: Offset C: Level This is a complex component that re-arranges space into discrete, irregularly-shaped self-contained universes. It is like having little planet/universes each with its own coordinate system. The easiest way to see how this component re-arranges space is to follow it with the Movie or pict component as in the picture shown at left. Twirl A: Scale B: Angle Twirl distorts space with a whirlpool pattern. Eric advises that you twirl everywhere, but you should avoid driving after doing so. Multi twirls A: Frequency B: Phase C: Twirl Multi twirls distorts space with randomly placed whirlpools. This is a great component for distorting pictures especially when creating animation. This component can take a long time to render. Tech Displace A: Displacement B: Phase C: Frequency A displacement map with a sparse geometric texture. - 67 - COMPONENT REFERENCE: 2->2 Components Tech Quantize A: Displacement B: Phase C: Frequency A quantizing function great for creating mosaic effects. It uses a random arrangement of 45-degree orthogonal patterns to quantize the input. Warning : The output is highly discontinuous and is to be avoided in systems destined for ArtMatic Voyager. Random noise A: Amplitude B: Phase This component provides continuous random distortions of space which can be subtle or extreme, depending on the amplitude setting. Low Freq Random A: Amplitude B: Frequency C: Phase See the notes about the scalar version of this component. Perlin Random A: Amplitude B: Phase C: Frequency A Perlin noise-based component that combines the output of two uncorrelated Perlin noise functions for each output to displace the input values. The Amplitude parameter controls the amount of displacement of the incoming values. Adaptive, Band-Limited Noise Functions The next group of noise functions have adaptive resolution and are band-limited to reduce high-frequency noise. These functions are recommended for designing systems for use in ArtMatic Voyager. The number of iterations and resolution of the functions are determined by the camera’s zoom level in addition to the preference for fractal iterations. By being adaptive, the functions can deliver maximum detail at any zoom level. Multi Perlin Random A: Amplitude B: Octaves C: Frequency This displacement function uses a series of Perlin noise functions where the frequency is doubled for each element in the series.An Octaves value of 128 represents seven octaves of noise (27). Amplitude controls the amount of displacement of the input values. Unlike the other fractal components that add noise up to the individual pixel limit, Multi Perlin Random’s has an adjustable limit. A cone seen in ArtMatic Voyager before and after Multi Perlin Random displacement. 2D Turbulence A: Amplitude B: Scale C: Phase This is a 2D fractal displacement function whose Amplitude parameter controls the amount of displacement of the input values. This is a somewhat ‘structured’ noise that is sensitive to the Max iterations for fractals preference. This component is great for creating turbulence, fire, marble and clouds. See the notes for the scalar version of this com- 68 - COMPONENT REFERENCE: 2->2 Components ponent. This component was formerly called Fractal Noise and Turbulence 2D. 2D Time Turbulence (Updated 6.0) A: Amplitude B: Feedback C: Frequency A fractal-based component where time causes upward distortion (phase shift). This function is unusual in that it is sensitive to the flow of time -- even with its parameters locked. It is a great primitive for creating flow and smoke effects for animation and video processing. Amplitude controls the amount of displacement of the input values. The Feedback parameter adds additional frequencies of distortion. In ArtMatic 6, a fourth parameter, Pace, was added to control the speed of the time-induced animation. Multi Fractal Displace A: Amplitude B: Smoothness C: Frequency A 2D fractal displacement noise created by summing vector-valued Perlin noise functions of varying fractal dimension (roughness). “Multi-Fractal” describes fractals with varying fractal dimension (a measure of the surface roughness). A Multi-Fractal displaced cone seen in ArtMatic Voyager Multi Fractal displace creates rich and natural textures – especially when used in ArtMatic Voyager. Amplitude controls the amount of displacement of the input values. Smoothness controls the roughness of the displacement texture. Ridged Fractal Displace A: Amplitude B: Phase C: Frequency A multi-fractal based on a “ridged” version of the Perlin noise function as discussed in the 2D Scalar (2->1) components chapter. Amplitude controls the amount of displacement of the input values. Ridged fractal displaced cone seen in ArtMatic Voyager Chaos Displace A A: Amplitude B: Phase C: Frequency A composite multi-fractal displacement function based on a cubic-clipped Perlin noise function. - 69 - COMPONENT REFERENCE: 2->2 Components Chaos Displace B A: Amplitude B: Phase C: Frequency A composite multi-fractal displacement function based on an algorithm similar the 2->1 Bubble Rock component. Random Fractal Space A: Amplitude B: Phase C: Frequency This noise function creates a structured noise that is similar to that created by Turbulence 2D. Unlike the other noise functions, Random Fractal Space generates truly random output (rather than adding randomized offsets to the incoming values) which results in the new coordinates being truly random. Place this component before a Grid to create veined textures, or place it before any other surface generator to create beautiful random textures. Crystal Displace A: Amplitude B: Phase C: Frequency A fractal displacement function based on a triangular lattice random linear noise. Crystal Displace is discontinuous and will produce sharp edges when used in ArtMatic Voyager. Directional Random A: Amplitude B: Direction C: Phase This component distorts space directionally so that you can distort the system either vertically or horizontally or a combination of the two. The direction of the distortion is provided by the direction parameter. When direction is 2 or -2, space is distorted horizontally. When it is set to 0, the distortion is purely horizontal. In-between values, provide both vertical and horizontal distortion. Bubble Space A: Amplitude B: Bubble size C: Frequency As with the Orbiters component, bubbles are created each of which is an enclosed space. Each bubble has 0 at its center, and each bubble is surrounded by 0. This component is terrific for creating non-repeating textures and patterns. Facet Space A: Scale B: Delta size C: Frequency Create a multitude of irregularly-spaced tiles of the incoming space. This creates 3D-like repetitions of the image created by the components that follow it as in the image at left in which Facet Space is used before a movie/pict component. Scale determines the scaling applied to the incoming space. Delta size determines the range of siz- 70 - COMPONENT REFERENCE: 2->2 Components es into which the space is tiled. With a Delta Size of 0, all the tiles are the same size. Large values provide a great variation of sizes. Frequency determines the tile spacing. Facet Space Mirrors A: Scale B: Delta Size C: Frequency This component randomizes the incoming space and outputs a space with warped facets/ tiles. The transitions between the facets is smooth which makes this a great tool for creating natural semi-random textures. Prior to version 2.53, this component was called Facet Space. See the example file: “Monster’s skins”. Facet Space Rotate A: Delta Angle B: Delta Size C: Frequency Similar to the Facet Space component but each cell is randomly rotated. The Delta Angle parameter controls the amount of rotation. Spots Displace A: Displacement B: Phase C: Frequency A displacement function comprised of randomly placed and sized spots. Open Compiled Tree A: Blend B: Recursion Choose this component to use a 2->2 compiled tree. Compiled trees are groups of tiles that can be used in place of single tiles as a kind of macro or subroutine. The Blend parameter determines whether the compiled tree uses the incoming space for its input values (when Blend is at its maximum--which is the default) or the undistorted space or an interpolation of the values. The Recursion parameter lets you feed the output of the compiled tree back to itself to create your own fractals. Normally, recursion should be set to 0 as recursion is only meaningful with compiled trees designed to be recursive. Compiled Trees and their parameters are covered in detail in the Compiled Trees chapter of this manual. - 71 - 2->3 Components These components perform a variety of functions depending on how they are used in the structure tree. Many of these components are RGB color textures. Some of them are mixers. Some of these components translate 2D to 3D space or create 3D objects (spheres, cubes, rooms and the like) NOTE: ArtMatic’s internal RGB color space goes from (0,0,0) (black) to (8,8,8) (white). Qll color calculations are in floating point. An essential in-depth discussion of function categories is found in the Getting Deeper chapter and is recommended reading for everyone. 3D zset A: z value Use this component to create a third coordinate (whose value is determined by parameter A) that can be passed on to 3D functions or used as a controller value. The incoming x and y values are passed unchanged through the leftmost outputs. Parameter A’s value is sent out the rightmost outlet. Animating this parameter is a great way to control solid textures such as 3D noise functions. Use this function at the top of the system if you want to use 3->3 components near the top of the tree but do not want to use the system’s third global input (time) which is incremented with every frame. 3D Axonometric A: Scale x B: Scale y Use this component to create a third coordinate whose value is related to the incoming x,y values. Unlike 3D zset the third output (the z value) is not a constant value but calculated from the x and y values. The scale parameters are multiplied by the x and y inputs before passing them out. The outputs are calculated using the following formulas: Left output = Ax Middle output = By Right output = (Ax + By)/2 Spherical A: Radius B: Offset x C: Offset y Spherical is a space transform function that creates a 3D space/object by projecting the incoming space onto a half-sphere. The effect is similar to the image that results from holding a mirrored ball over a picture. The image at left shows the bending of the XY space applied to the logo grid image. The radius parameter controls the size of the half-sphere used for the projection. The smaller the radius is, the greater the resulting space distortion. This is a great component for radiant and supernova-type effects. Example files: “SphericalWipe”, “Spherical Noise Wipe”, “SphericalStainedGlass” 3D plane A: Banking x B: Plane offset C: z Slope Create a 3D plane which can be banked and tilted. Like all 3D object components, the area outside the object is mapped to infinity (which is painted with the depth cueing color). The components which follow the plane component provide the surface’s texture. Banking x controls the horizontal tilt, Plane offset provides an altitude offset, and z Slope controls the forward/back tilt. - 72 - COMPONENT REFERENCE: 2->3 Components 3D sphere A: Offset x B: Offset y C: Offset z Create a sphere which can be moved along the x, y and/or z axes. The surface texture is created by the components which follow this component. Tip: Rotation can be simulated by using a noise component after the sphere and animating the noise component’s phase. 3D ellipsoid A: Radius B: Vertical skew C: Offset z 3D ellipse primitive. 3D tube A: Offset x B: Offset y C: Radius Create a 3D tunnel whose radius and offset can be modified. Example Files: Search for “tube” to find the many examples which use this component. 3D cube A: Angle xy B: Angle zx C: Offset z Create a cube which can be rotated in space. Example Files: Search for “cube” to find the many examples which use this component. 3D box A: size y B: size zx C: offset z A useful 3D object primitive. The size y parameter controls the size of the box top. The size zx parameter controls the box length. The offset z parameter controls the box offset along the z axis. 3D room A: Offset z B: Angle zx C: Room size Create a 3D room. The z offset controls the distance to the back of the room. The angle zx controls the angle with which the rear walls are joined. The room size controls the size of the virtual room. The room has a finite size. At the maximum offset, you can see the room from the outside. 3D parametric face A: Angle xy B: Angle zx C: Offset z Simple 3D-object which is like a single face of a cube. The coordinates are parametric so the textures moves with the object. Use this object to perform 3D rotation of your movies and pictures. Example files: “Rotating face”. 3D param. cube A: Angle xy B: Angle zx C: Offset z Create a cube whose texture ‘sticks to it’. The non-parametric 3D objects move under the texture while a parametric object’s covering texture moves with the object. Example files: “Parametric cube”. - 73 - COMPONENT REFERENCE: 2->3 Components 3D parametric room A: Offset z B: Angle zx C: Room size Create a room whose surface texture sticks to it. (The non-parametric version moves ‘under’ the texture.) Unlike the non-parametric version, this room has infinite walls. So, you can’t leave the room. Example files: “Parametric room”. Note how the depth cueing in the example is controlled via a loose 1D filter connect to the room’s z output. Packed depth sort This component mixes two 3D objects into a single set of 3D outputs. The inputs should be the packed outputs of 3D objects as shown in the structure to the left (which is a simple modification of the 3D Sphere and Plane item in the Structures popup menu). NOTE: This component should always receive its input from Pack components (that receive their input from 3D object components). The algorithm is such that for each set of points received, the set with the lowest value of z wins; in other words, the coordinates closest to the viewer win. Looper A: Iterations z B: Count Multiplier Perform a loop by feeding the Looper’s left two outputs back into the component that feeds the looper. Loopers are covered in-depth in the Compiled Trees and Iteration chapter of the reference manual -- which also contains a tutorial on how to use this component. Perlin noise + derivative (new) This component sends out Perlin noise from the left output with the true partial derivative (fdx, fdy) sent out the middle and right outputs respectively. Examples: 2D Perlin DV Contours is a 2D example. 2D Perlin DV Sphere.vy is a 3D version. Technical note: The derivative can be used for improved distance estimation to the function’s zero crossing. A good distance estimation provides the correct contour rendering and good convergence for DFRM objects. For proper distance estimation use F(v)/(length(1,dx,dy)) where length is the distance estimation. RGB Shaders Family The RGB shaders provide RGB color and gradient-to-RGB functions. Often they map the X (left) input to a gradient position and the Y (right) input to luminosity. In the example images, the X input is being fed with a basic linear ramp and the Y input is fed by Perlin random noise. RGB plain color A: Red B: Green C: Blue Generate a constant RGB color (or three constant values) determined solely by parameters A, B and C. The input values are completely ignored. The color is strictly a function of the parameter values and is the same for every - 74 - COMPONENT REFERENCE: 2->3 Components incoming value. This is useful for creating solid color backgrounds or surfaces. Tip/Trick: Advanced users can use this component to generate three independent constant values which can be useful for a number of non-color manipulation applications. Example file: “Cube& Solid Color”. Shaded plain color A: red B: green C: blue Another useful RGB-based shader. The A, B and C parameters (red, green and blue respectively) define a target color. The left-inputís value (the x-value) determines whether the output value is the target color (when the value is greater than 0) or its complement (when its value is less than 0). When the value is near 0, the luminosity of the color is reduced. (Hence, an x-value of 0 generates black.) The right-input value (the y-value) determines the luminosity (brightness) of the output color. Large values of y generate a shade of the color that approaches white. RGB color shade A: Hue B: Saturation C: Luminance Pan x<->y RGB Color Shade provides color shading by using the inputs to control the luminance of the generated color. The color (hue) is provided by parameter A, Hue; parameter B, Saturation, determines the maximum color saturation. The luminance (brightness) is determined by one or both input values. Parameter C, Luminance Pan, determines whether a point’s brightness is determined by both input values or just one of them. When the parameter is at its minimum, only the left input is used; when the parameter is at its maximum setting, only the right input is used. Use this component to create subtle shadings of a single hue, such as when creating clouds, mist, or earth textures. This component can take input from either a space or two individual inputs. Example files: “Compiled Trees & Recursion: Advanced Compiled Examples:Planet with life Sunrise”. This component is used in the file’s subtrees to provide color for the space clouds, the star, and the planet’s cloud cover. RGB main gradient A: Scale x B: Scale y Create RGB- color output using the colors of the active ArtMatic gradient. The X and Y input values are multiplied by their respective scale parameters and added together. The resulting sum is mapped to a position on the active gradient. This handy component lets you mix ArtMatic gradient-based colors with RGB-based components. Just as with the 2->1 Ax + By + C, you can use either a 2D space (a component with two outputs) as an input or two independent surfaces. When the input is two surfaces, the scale parameters provide a mix control. Example file “Entrelas z wipe”. Shaded main gradient A: Gradient scale B: Luminance scale C: Gradient offset Create shaded RGB-color output using the colors of the current ArtMatic gradient. 3D shading and lighting effects can be easily created with this shader, especially when the second input is fed by the Derivative or 2D Derivative component. The first input selects the color and the second input controls the lighting/shading. - 75 - COMPONENT REFERENCE: 2->3 Components Gradient scale determines the spacing/scale of the gradient. Luminance scale determines to what extent the y-values influence brightness and is similar to RGB color shade’s Light/Hue variance parameter. Gradient offset adds an offset to the x-value before picking the color from the gradient. Tip: Set the Luminance scale parameter to something other than 0 to achieve effects similar to Artmatic’s global shading. This technique is particularly effective when the 2D Derivative component feeds this input. Tip: It is often useful to feed this component’s inputs from two parallel 1D filters that are connected to the same single-output parent. Learn more about this technique in the Getting Deeper chapter of this manual. Example file: “Abstract Beast”. This example file is discussed in detail in the Getting Deeper chapter of this manual. Bezier Main Gradient A: Input Range B: Offset C: Output Range This component is similar to the RGB Main Gradient component but it uses bezier curves rather than straight linear interpolation to map input values to the gradient colors. By using bezier curves to interpolate from the gradient to RGB values, the output values are ArtMatic Voyager friendly since each output curve has a continuous derivative (RGB Main Gradient can have discontinuities). ARTMATIC VOYAGER NOTES: Because the output values are Voyager friendly, this component can be very useful for creating surfaces as each of the outputs can be treated as a parallel filter. Advanced users will find it useful for creating rich topographies. See the example files found in the folder Gradient/Bezier Filter. See the file Gradient filter world.am3d for a great example. See the file Gradient filter curve and play with the gradient colors to see how the curves change. When used as an elevation function in Voyager a linear slope from 0 to the input range will have the same contour as the curve shape. The image demonstrates the filter curves derived from the given gradient. As a consequence of the color math added in ArtMatic Pro 3.5, components like RGB main gradient can be used to implement 3 parallel filters for surface sculpting. Essentially, this component separates the Red, Green and Blue content of the gradient and outputs them as three independent curves as shown by the image above. Notice the three curves in the image: red, green and blue. Compare them to the gradient and notice that the red curve mirrors the red content of the gradient, the blue curve mirrors the blue content, etc. It is a very powerful component for ArtMatic Voyager world-design as you can implement 3 different shape filters at once and blend them afterwards. (See the example file Gradient filter world.am3d for an example.) Parameters A,B C are suited for generic filter/curve design where A controls input range and C controls output range. Indexed Gradient A: Gradient Scale X B: Luminance Scale Y C: Gradient Index This component allows a gradient other than the ‘active’ gradient to be used. The behavior is the same as Shaded Main Gradient BUT parameter C (Gradient Index) selects the gradient to use from the gradients available in the Gradient popup. A Gradient Index of 0 selects the first gradient in the popup and the maximum index selects the last gradient in the library. Warning : When exporting systems for use in VTrack or ArtMatic Voyager, this component may return different - 76 - COMPONENT REFERENCE: 2->3 Components colors unless you make sure that the other application uses the same gradient library. Use the Gradient Editor to open or export gradient libraries. Y Indexed Gradient A: Scale B: Gradient Index Mod % This component is a color shader that maps the x-input to a color of the gradient selected by the y-input. This component is similar to RGB Main Gradient except that the y-input selects the gradient to be used. The Y-Indexed Gradient component allows a different gradient to be used by each iteration of a looped system when the iteration number is connected to the y-input of Y-Indexed Gradient. Scale is a scaling factor applied to the x-input value. Setting the parameter high makes the component very sensitive to value changes. The y-value picks the gradient from which the color is picked. The current gradient (the one visible above the canvas) is gradient 0. The second gradient in the palette is gradient 1. Gradient Index Mod % determines the mapping of y-input to gradient number. When it is at its maximum, integer y-values (0, 1, 2, etc.) pick the color from the corresponding gradient in the library. I.e. 0 picks a color from gradient 0 (the current gradient),1 picks a color from gradient 1 (the second one in the library, etc. If the y-value is non-integer, the component blends the adjacent gradients. For instance, a y-value of 0.5 results in ArtMatic choosing a color that is a 50% blend of the color from gradient 0 and the corresponding position of gradient 1. This simple system is excellent for exploring this component. Create this tree for yourself and explore how y-input values determine the color. To do so, click on the A1 glyph to invoke the Global Input Matrix dialog. In the dialog, click in the A1 field and either type in values or click and drag to explore the gradients selected by the different different values. Explore how the response changes with different values for Parameter B. As a further experiment, insert components above the Y Indexed Gradient component and explore the colors created and how parameters A and B interact. Gradients used for exam- Image created by the Image created by the Image created by the ples example system when the example system when the example system when y-input value is 0. The y-input value is 1. All the the y-input value is 0.5. colors are drawn from colors are chosen from the Non-integer values result gradient 0 which is the second gradient. library’s first gradient. in colors that are a blend of the colors from gradient 0 and gradient 1. RGB color gradient A: Angle Red B: Angle Green C: Angle Blue Create RGB-color output by projecting RGB color-complements across an axis defined by the three angle parame- 77 - COMPONENT REFERENCE: 2->3 Components ters. A wide variety of vibrant color and lighting effects can be achieved with this component. This is similar to the RGB radial hues component with the addition that it allows you to set up a custom color wheel. Example files: “Techno stained glass”, “RGB Mixed synth” RGB linear hues A: Hue Rotation B: Saturation C: Frequency Color the image by using the x input value to define the pixel’s hue. If the y input value is negative then the inverse hue is used. Example files: “Neuroweb Lights”, “Differential system”. In “Neuroweb Lights” this component’s output is sent to a 3->3 shading function so that it acts like a space distortion function. RGB radial hues A: Hue Rotation B: Saturation Color the image by choosing colors from a classic color wheel (shown in the component’s icon). The two inputs are treated as an x/y coordinate pair. The angular position of the input point (the value pair) determines the hue. Parameter A rotates the color wheel and thus changes the color which corresponds to a particular angle. The Saturation parameter determines the luminance (brightness) of the colors. This component is frequently used to create vibrantly colored surfaces. When this component is used as the color shader, it is as if the original undistorted space (the flat plane) is a sheet of paper with the color wheel printed on it, and the system’s space distortions and remapping are really distortions and remapping of the sheet of paper with the color wheel on it. The more chaotic the distortions, the less like a color wheel the image will appear. RGB Concentric hues A: Hue Rotation B: Saturation C: Frequency Shade the image with a narrow adjustable range of hues that vary with the distance from the origin. The luminosity decreases in inverse proportion to the point’s distance from the origin (0,0). Parameter A defines the ‘base hue’ used for shading, and Parameter B controls the color saturation. Parameter C determines the spacing of the hue variations. Luminosity becomes lower as the distance from zero increases (and then starts increasing again). Example file: “Monster’s skins” Max to Gradient A: AmplitudeX B: AmplitudeY This component mixes two incoming surfaces (fx and fy: the X and Y inputs respectively) by considering each pixel (coordinate) and taking either the left or right input (whichever has the higher value) and coloring the output by using the left side of the gradient to color the pixels taken from the X input and using the right side of the gradient to color the pixels taken from the Y input. The Amplitude parameter determines the range of colors taken from the current gradient. With an amplitude of 0, the result is a constant color for each area. ArtMatic Voyager tip: This component is often used in ArtMatic Voyager systems to create colors for a surface based on the maximum values of the two input functions -- similar to the role served by the 2->1 Min<->Max component. With it, each “winner” will have its own color. - 78 - COMPONENT REFERENCE: 2->3 Components At left: the gradient used In the example, the X input (fx) is provided by a Grid and the Y input (the right input) is provided by Ripples. Where the Grid produces higher values than the Ripples, colors from the left side of the gradient are used. Where the values of the Ripples are higher, colors from the right side of the grid are used. in this example. RGB Pict/Movie A: Size B: Contrast C: Tiling This is the true color version of the Pict/Movie component. For more information about using pictures and movies as input sources, see the chapter Using Pictures and Movies. RGB Pict/Movie Sym Mirror A: Size B: Contrast This variant of the color pict/movie component creates mirrored tiles of the picture when the picture is zoomed out. For more information about using pictures and movies as input sources, see the chapter Using Pictures and Movies. Pict/Movie Overlay A: Size B: TileX C: TileY A variation of the basic pict/movie component that provides independent control of horizontal and vertical tiling. Infinity is generated beyond the picture boundaries. This makes it simple to overlay the output and control the background color (the depth-cueing color). Example file: Strip SparkMagma Zoom. RGB Texture Shaders The RGB Texture shaders are a group of components that are used to color a space with RGB-based color. Except where noted, these components should receive a space as input rather than inputs from independent surfaces. These RGB components are the RGB (true color) equivalents of the 2->1 surface/texture functions used in gradient-based systems. In both cases, the components generate a single color-value based on the incoming points (coordinate pairs). In a gradient-based system, there is a single output which is mapped to a color of the current gradient. In the 2->3 RGB shaders, the three output values (which we call an RGB triplet) together define a single RGB color. RGB components are generally used in the lower part of a tree that terminates with RGB output (three outputs). The shader need not be the last component since you might follow them with further color manipulation. The nature of these shaders is such that they not only provide color but may also provide the illusion of space manipulation in addition to providing color. This is particularly noticeable when manipulating a noise function’s frequency parameter. In the example shown above, the only difference between the images is the setting of the frequency parameter. - 79 - COMPONENT REFERENCE: 2->3 Components RGB MultiPerlin Random A: Amplitude B: Octaves C: Frequency Sums three 2D Perlin noise functions for each RGB channel with doubled frequencies for each added octave (parameter B). The Perlin noise function which is normally balanced (outputs both negative and positive values) is scaled and offset so that only positive values are generated. When the Amplitude is zero, this component produces a uniform 50% (neutral) gray. Negative amplitude values invert the colors so that color-complements are generated. Amplitude can be seen as a saturation or color contrast control. RGB Random Fractal (Updated) A: Amplitude B: Phase C: Frequency D: Roughness Randomly-generated 2D color texture which is sensitive to the setting of the Max. Iterations for Fractals preference. The amplitude controls the saturation. A great texture for vibrant color textures. Roughness added in version 6.0. RGB MultiFractal A: Amplitude B: Phase C: Frequency This component is a 2D Multi-Fractal RGB noise component. This can be viewed as 3 independent Multi-Fractal functions for each of the RGB channels. The output values are scaled and offset so that only positive values are generated. When the amplitude is zero, the output is a uniform 50% gray. The Amplitude can be seen as a saturation or color contrast control. Lunar Rocks A: Amplitude B: Phase C: Frequency Lunar Rocks is a composite 2D color texture providing a color texture reminiscent of random rocky material. The underlying algorithm is similar to the 2->1 Lunar Rocks component. This primitive is useful for creating natural-looking mineral shading -- especially when used in ArtMatic Voyager. Lunar Rocks color texture mapped onto the Lunar Rocks surface as seen in ArtMatic Voyager Color Bubbles A: Amplitude B: Phase C: Frequency Color the 2D space with randomly-sized and colored bubbles/facets. - 80 - COMPONENT REFERENCE: 2->3 Components String noise A: Amplitude B: Hues C: Frequency Color the 2D space with random colored ‘strings’. Techno Boxes A: angle B: center x C: center y Techno boxes is a decorative RGB shader that generally used to provide surface texture. 3D Color Pyramids A: Amplitude B: Phase C: Frequency Color the space with randomly-sized and colored pyramids. RGB Grass A: Amplitude B: Skew Angle C: Frequency RGB Grass is a 2D color texture which evokes - in an impressionistic way - grass seen from afar. This primitive was added primarily for use in ArtMatic Voyager where it is slope dependent (grass tends to appear where the terrain is flat). Within ArtMatic Pro, the “slope values” are derived from the global X input values (since they would be otherwise undefined). RGB grass as seen in ArtMatic Voyager RGB Foliage A: Contrast B: Hue Offset C: Frequency RGB foliage is a 2D color texture that impressionistically evokes foliage as seen from afar. The hues offset parameter slides from summer green shades to autumn red shades. RGB foliage used to texture an ArtMatic Voyager scene - 81 - COMPONENT REFERENCE: 2->3 Components Remember that it is easy to further change the hues with Colorize and other similar components. RGB soft random hues A: Hue Rotation B: Saturation C: Frequency Color the incoming space with random modulations of a narrow range of hues. Naturalistic effects are achieved with a low value for the saturation parameter. At the minimum saturation, only a single hue is left. Hue rotation determines the base color for the variations. Saturation determines the average brightness of the resulting colors. Frequency determines the distortion density. Example file: See “Pink turbulent marble” to see a range of this component’s possibilities. Packed Mixers Family The group of components whose names include ‘packed’ is used for mixing packed streams – usually from RGB components or branches. When infinity is encountered in one of the inputs, it is treated as transparent by these mixing functions. These functions can accept both packed and unpacked inputs. Packed RGB crossfade A: Interpolate Mix two RGB color streams into a single image. When the parameter slider is all the way to the left, only the left input’s image is visible (with one caveat noted below). When the slider is to the right, only the right input’s image is visible (with one caveat). When the parameter is between the maximum and minimum values, a mix of the two images is created. There is a situation in which portions of both images are visible even though the Interpolate parameter is at its extremes. If either input stream has a 3D object, then any points that have the value infinity (which means that they are outside the object’s boundaries) will be transparent regardless of Interpolate’s value. This allows you to have opaque 3D objects which appear against a background created by another RGB color stream. Usage note: The inputs should come from Pack components that are connected to components whose outputs are RGB colors. This component is used by the RGB 2 Channels system found in the structures menu. Example files: “Cube & Pict” is just one of many of the example files that use this component. Packed RGB multiply A: Amount B: Offset Filter one color stream (image) with another by multiplying the corresponding RGB values of the incoming streams. Amount determines the strength of the filtering. Offset mixes in some of the left input’s image so that in conjunction with the Amount parameter, one can have very fine control over the filter effect. RGB Math: Every RGB color is made up of three numbers which determine the amount of red, green and blue that make up a pixel’s color. When doing multiplication, ArtMatic treats color values as ranging from 0 to 8. Unless all pixels are at maximum brightness, multiplication tends to reduce an image’s brightness. Packed RGB add A: Level in1 B: Level in2 Mix two images (RGB color streams) by adding the values of the merged streams’ pixels. The two parameters control the relative contribution of the two images to the final mix. - 82 - COMPONENT REFERENCE: 2->3 Components Packed RGB Max (Updated) Returns the maximum RGB value for each of the packed inputs. It needs to be fed by packed inputs. A new parameter, Feather, was added in ArtMatic 5.0 to smooth discontinuities Packed RGB min (new) This new packed mixer returns the minimum of (input 1 * parameter A) and (input 2 * parameter B). This component can also be used to mix two 3D spaces. If the inputs are RGBA, transparent regions are shaded lighter. Open compiled tree A: Scale B: Iterations Choose this component to use a 2->3 compiled tree. Compiled trees are groups of tiles that can be used in place of single tiles as a kind of macro or subroutine. Compiled Trees are covered in more detail in the Compiled Trees chapter of this manual. - 83 - 2->4 Components About 2->4 Components There are three primary types of 2->4 components: RGBA color shaders (many of which are implementations of 2->3 RGB color shaders), RGBA packed mixers that mix two RGBA streams, and the composite XYza functions that create interesting tiled spaces + value + alpha mask (these are illustrated later in this chapter in some detail). This tree demonstrates two types of 2->4 tiles. The second row of tiles features 2->4 components used as color shaders (Interlaced Grid and RGBa Pict/Movie). The bottom-most tile mixes two packed streams together and generates RGB+Alpha. Note how the alpha mask of the Interlaced Grid is used so that the logo picture shows through the spaces in the grid. XYza tiles take a space as input. The output can be interpreted as a tiled space + a value + an alpha mask that outlines the tiles. XYza Functions The components whose names start ‘XYza’ make up an interesting family of components that defy simple categorization. They are composite components useful for creating interesting tiled patterns. They can be thought of as space transforms that output a couple of extra values that are useful for displacement and shading effects further down the tree. XYza outputs XY output. The x and y outputs make up a tiled space transform (and can be used on their own as such). Each tile is a portion of the received space. Compare the orientation of the tile contents (the logos) in this image with the image at the bottom of the table. In this image, the orientation of the logo is the same in all tiles. z output.In most cases, the z value (the third output) is a random value that is uniform inside each tiled space as a result each tile’s color is uniform in the pictue to the left. z can be thought of as either just a value or as third spatial co-ordinate. It is generally used to influence the shading or displacement of the tiles. a output.The fourth output is called ‘a’ since it is generally treated as an alpha mask. The alpha mask fades to black at the tile edges and is white at the tile center (which makes it useful for highlights) Putting it all together. This simple tree demonstrates typical usage of XYza outputs. The XY outputs are passed to a color shader (a pict/movie component) via Z Rotate. The z output is sent to the Z Rotate tile’s third input and the result is each tile having a different rotation. The a output is used to provide shading by delineating the tile outlines. - 84 - REFERENCE: 2->4 Components In this example, the z output is sent to both Z Rotate and the 2->3 RGB Main Gradient component, and so it influences both tile color and rotation. Other interpretations. It is also possible to interpet the components’ output as a 3D space (where each tile has a uniform z co-ordinate/height) + alpha mask. Sometimes it is useful to multiply the z and a outputs together. The z output is discontinuous since its value is uniform throughout each tile and, as a result, jumps from tile to tile. The ‘a’ output, on the other hand, fades to zero at the tile edges. By multiplying the two together, the edge discontinuities are removed. This technique is often useful when designing trees for use with ArtMatic Voyager. The image at the left uses the ‘z’ output alone for the elevation map. Note the random heights and that each “tile” has a constant height with a sheer dropoff. The image at right multiplies the z channel with the alpha channel to avoid the discontinuties. The alpha mask has a peak at the center. You could use a 1->1 filter after the alpha mask to remove the peaks while keeping the smooth edge transitions. Example files. This family of tiles is capable of creating a large variety of effects. Be sure to explore the provided example files (they have XYza in their names) to see them in action. XYza Regular Tiles # (Renamed and Vastly Changed in 6.0) Renamed from XYZA Tiles. This component provides many different tiling algorithms, and like the other XYza components, the output is a a space transform from the two leftmost outputs, a randomized z value from the third output and an alpha channel that delineates the tiles. Color Regular Tiles shares the same tiling algorithms but outputs RGB+Alpha rather than XYza output. While only 3 regular tilings are geometrically possible with one regular polygon (square, triangle and hexagonal tiling), by relaxing the regularity of the tiling many other tilings are possible. The Cairo tiling, for example, which has been used since antiquity is especially interesting with its pentagonal angles in the 18º version. Tile rotation is available (via parameter D) for some algorithms that changes the tiling pattern and tile shape. Such algorithms have an asterisk (*) in their names. When mirror appears in an algorithm name, it means the coordinates are using mirror symmetries on the tile edges when sent from the XYza version. - 85 - REFERENCE: 2->4 Components The • • • • • • • • • • • • • • algorithms : Rectangular Tiling Unit Square Tiling Square Tiling 45° Triangles 2 Tiling Triangles 6 Tiling Lozenges Tiling Triangles mirror Tiling Hexagonal Tiling Cairo 18° Tiling. http://en.wikipedia.org/wiki/Cairo_pentagonal_tiling Cairo mirror Tiling Square mirror Tiling 45° Octagonal mirror Tiling 45° Decagonal Triangles Tiling PolyCairo Tiling XYza Semiregular Tiles # This component implements many interesting tilings that make use of two or more polygons. While the algorithms do not include all possible tiling, they include the most interesting ones. Several different foldings are provided for the beautiful Islamic star patterns. For most algorithms, parameter A is Scale and scales the output space. However, for some algorithms, parameter A is Tile Spread. Frequency, parameter B, sets the tiling frequency (the size of the tiles). Islamic sixteenfold algorithm (file: MultiShaded Tiles Islamic 16) The z-output can be used when combining multiple tiling components to create complex blends. The Tiling Advanced & Composites example provide some interesting ideas. The possibilities are endless. Algorithms: • Square & triangles • Square & triangles mirror • Hexagons & triangles - 86 - REFERENCE: 2->4 Components • • • • • • • • • • • • • • • • Hexagons, squares & triangles Hexagons, squares & triangles mirror Squares & triangles B mirror Decagons & pentagons mirror Islamic sixfold A Islamic sixfold B Islamic heigthfold Islamic heigthfold 45° Islamic ninefold Islamic tenfold A Islamic tenfold B Islamic twelvefold A (hexa) Islamic twelvefold B (hexa) Islamic twelvefold C (45°) Islamic sixteenfold Pentagonal cristal mirror XYza Voronoi Tiles # (expanded and Renamed) Renamed from XYza Facet Space and expanded with many new algorithms. This provides many interesting space tilings. Example: voronoi twirl Algorithms: • Random facets. The original Facet Space algorithm. This component tiles space into irregular facets that has an almost skin-like pattern. • Voronoi A • Voronoi B • Voronoi C • Voronoi D • Voronoi E • Voronoi twirl • Voronoi cristal 45 • Voronoi cristal 90 - 87 - REFERENCE: 2->4 Components • Voronoi cristal 120 • Voronoi penta cristal XYza Tiled disks # (updated) A: Amplitude B: Frequency This component tiles space into adjacent circular disks. The first parameter controls the disk size. Some cool decorative effects based on disks are possible with these. algorithms : • Packed hexa disks. The original algorithm • Overlapping disks 45 . Overlapping disks in a 45° tiling • Overlapping disks 60 . Overlapping disks in 60° (hexagonal) tile structure XYza jitter disks A: Scale B: Jitter Amount C: Freq This component creates overlapping tiles whose overlap is determined by the Jitter Amount parameter (B). When Jitter Amount is 0, the pattern is the same as XYza Tiled disks (i.e. tiles are non-overlapping). When Jitter Amount is at its maximum, there appear to be overlapping layers of disks. XYZa Polar Tile A: Size B: Tile # C: Phase This component creates a tiled polar remapping of space where the tiles get small the closer when gets to the Origin (0,0). XYza Quantizer #(renamed and expanded) A: Z Amp B: Mask shape C: Freq Renamed from Quantizer Spot. There are several algorithms that provide different mask shapes. For all algorithms except Circles, parameter B sets the mask level. Unlike most of the other XYZa components, this component quantizes the input space rather and does not create tiles that repeat the same portion of space over and over. This component is great for creating pixellation effects. The size of the created ‘spots’ is determined by the Frequency parameter. When the frequency is low, the quantization creates large spots (resulting in coarse pixellation ). Small spotis are created when the Frequency is high. Algorithm shown: Mask: Circles. Example files: Q Random Series and Q Shaded Octodots B. Algorithms • Mask : circles. Thge original algorithm. • Mask : squares • Mask : lozenges • Mask : pentagons • Mask : hexagons • Mask : octagons - 88 - REFERENCE: 2->4 Components XYza Sparse Spot A: Scale B: Spareseness C: Freq This component maps the incoming space into a random arrangement of square tiles. Some tiles repeat randomized portions of the incoming space and some tiles have the same xy values for each pixel of the tile. The Sparseness parameter determines the ratio of constant to non-constant tiles. The alpha mask is a pattern of spots the correspond with the square tiles. The space transform creates a pattern of The alpha mask is a pattern of shaded spots The mask applied to the output of the space interspersed tiles that correspond to the tiles. transform XYza Tiled Spot A: Scale B: Mask Shape C: Frequency This component behaves the same as XYza Tiles except that the mask is made up of disks that coincide with the tiles rather than rectangles. The size of the disks is controlled by the Mask Shape parameter. (XYza) Apollonian Gasket A: Size B: Offset x C: Offset y This component remaps the incoming space into an arrangement of circular tiles that fills space with non-overlapping circles of smaller and smaller size using the Appollonian Gasket algorithm. Unlike the other XYza components, this component’s z values are not always uniform within each created tile. The Apollonian Gasket is a very interesting pattern well-known to fractal-lovers and mathematicians. Learn more about it at http://mathworld. wolfram.com/ApollonianGasket.html Space transform applied to a grid Result when Z is fed to Z Rotate & Scale Close-up of a portion of the z output mapped with a gradient. XYza Escher Disk A: Disk # B: Curvature C: Rotation This component creates an Escher-like remapping of the incoming space into a disk composed of disks. The Z output is not randomized; rather, it is a series of facetted tiles that can be used as a mask. The edge of each tile is black and the center white (when drawn with a black-to-white gradient) just like the alpha mask output of the other XYza components. The A output is a disk that encloses the outermost disk created by the XY outputs. In many cases, the Z or A output might not be used. - 89 - REFERENCE: 2->4 Components XY output applied to U&I Logo Z output A output XYza Patterns # (renamed and expanded) Renamed from Tek Pyramids. This component provides many interesting irregular tilings and patterns. Most of the patterns are arrangements of various sized blocks. 3D applications. Some of the algorithms are especially interesting for 3D architecture in ArtMatic Voyager where the z value can be used to apply different textures to different arts of a 3D object or construction. The z value (the index passed from the z output) for some patterns defines roof and ground zones. This allows you to use this component to select from different color textures when used with 4->4 Packed Index (w) Mixer. The z-output of this component is very useful for controlling the mix of a number of textures especially when used with the 4->4 Packed Index (w) Mixer. The z-output range is -2 to 3. There are several different patterns used when generating the z-value. Generally, those patterns that have a ‘roof’ zone set z to -1 for the roof and -2 for the ground. Phase parameter. Some patterns are 3D derived from 3D textures with the phase parameter sliding the slice along the z-axis to reveal pattern variations. Otherwise, the phase offsets the pattern along the x axis. Smoothness. The smoothness parameter determines edge rounding. Algorithms: • Random Pyramids. The legacy pattern. • Random blocks. A mix of several indexes that vary randomly in randomly placed blocks. - 90 - REFERENCE: 2->4 Components • Mixed wall pattern. A pattern with thin vertical separation bands and larger horizontal bands • Stones wall pattern stone wall pattern used in a penta crystal 2D space (File: Subway PentaCristal tiles) The next algorithms combine various patterns according to elevation (the fourth output value). Bauhaus Building a simple geometric design suitable for modern buildings. Bahaus has a roof zone (-1) but no ground and is infinite where y<0. So, it can easily be used for towers. • Pattern blocks B • Pattern blocks C • Zones blocks A. Zones Blocks A provides a handy means to have different ground, wall and roof textures with a decorative band in-between as shown in the example below. - 91 - REFERENCE: 2->4 Components Zones Block A Example (file: Allee ZB_A.vy) • Zones blocks B • Zones blocks C • Zones blocks D Above: Zones Blocks C for the decorative patterning on the building. (File: Decorated Door B) • Zones: Western house 2L. Two level house texture with windows. Roof zone uses index -1 , ground zone uses index -2 • Zones: Bricks wall house 3L. Three level brick house texture with windows and doors. The windows are using - 92 - REFERENCE: 2->4 Components index 3 with an a (the fourth output) value generally below zero. Since it uses an alpha value below 0, you can use 4->4 RGB*Alpha with the parameter option “Use depth cue color for alpha-” to color the windows. • Zones: Chinese house • Zones: Arcades stones 1L • Zones: Arcades stones 2L Tuscan castle using “Arcades stones 2L” for the wall texture (File:34 uvid volumes tuscan castel.vy ) Zones: Arcades mixed • Zones: Roman 1L - 93 - Simple REFERENCE: 2->4 Components Mosque using “Zones: Roman 1L” More example can be found in the DFRM Architecture folder (ArtMatic Voyager). Examples include Test BlockTexture and the Allee ZB series. 2D examples can be find in the Pattern # series. Color Shape Primitives Color Polygon N A: Sides B: Radius C: Color Cycle This component creates a color polygon whose color is determined by the Color Cycle parameter. The alpha mask fades to 0 at the polygon edges and has its maximum value at the polygon center. The number of sides is determined by Parameter A. Color Circle A: Amplitude B: Radius C: Color Cycle This component is an RGB shader that creates a circle and circular alpha mask. When the Amplitude (parameter A) is greater than 0, the circle is in color and the background is black. When the Amplitude is less than 0, the circle is black and the background is in color. The output is continuous. So, there is a smooth transition at the circle boundary--although it may only be visible if zoomed far in. The amplitude influences the distance over which the transition is made. When the absolute value of the amplitude is small, the area over which the transition occurs is large. When the absolute value of amplitude is large, the transition occurs over a small distance, and the circle will appear to be two-toned. A = -8 A = -0.013 A = 0.30 A=8 Color Line A: Rotation B: Size C: Color Cycle This component is a color shader that creates a rectangle whose size is determined by parameter B. Color Neon Line A: Rotation B: Size C: Color Cycle This component is similar to color line but has diffuse edges that give a 3D or glow-like appearance. Gaussian Dot A: Amplitude B: Radius C: Color Cycle This component is an RGB+Alpha version of the 2->1 Gaussian Dot. It creats a color circle with diffuse edges and a corresponding mask. When the output is passed to ArtMatic Voyager, the result is a colored mound. RGBa half plane A: Rotation B: Offset C: Color Cycle This color shading component is similar to the 1->4 version but maps space to a half-plane rather than mapping a single value. - 94 - REFERENCE: 2->4 Components Voyager City Utilities These functions are useful for creating ArtMatic Voyager cities and for creating interesting techno graphics. City Maps # (xziy) A: Pattern B: Amplitude C: Frequency ArtMatic Voyager example xyzi SFMIX. Voyager elevation. This is a component dedicated to creating cities in ArtMatic Voyager. The outputs are interpreted differently than most other components and are intended to be used with components specially-designed for creating ArtMatic Voyager cities. The first two outputs (here called x and z) are passed through unchanged and are the ground co-ordinates for the city structures. The third output (i) is a texture index (value: -2 to +128) and is designed to be used by special components (currently 4->4 City Textures and 4->2 City Ambience) to select a particular pattern from the city textures bank shared by the components. Negative values of i select street textures and values 0 and greater select buildings. The fourth output (y) is ArtMatic Feed the output of this component to 4->4 City Textures to create cities (in ArtMatic Voyager) and to 4->2 City Ambient and Reflect to create reflections and window lighting. A simple tree to create an ArtMatic Voyager city is shown at left. City Soft. Pattern determines the city layout. The values are: City A Sharp, City A Soft, City B Sharp, City B Soft, City C Sharp, City C Soft, Alien City Sharp, Alien City Soft, High Rise City Sharp, High Rise Tech Noise # A: Pattern B: Amplitude C: Frequency D: Color Variance RGB+Alpha color texture whose pattern is selected by parameter A. This component is useful for both decorative textures and RGB+Elevation maps for ArtMatic Voyager. There is a sharp and smooth version of most patterns. Use the smooth versions when creating systems for use in Voyager since the sharp versions have discontinuities that can cause aliasing problems. The street marks setting for parameter A provides markings found on streets and passage ways and is useful in building composite city textures. A partial list of the patterns provided by Parameter A: Square Grid, Square Edge Grid, Building A, Building B, City, Techno Maze, Computer Room, Street Marks, Ground Marks. Parameter D. Color Variance. At zero only a single color is used. The city at left was created with the tree shown above. Above right: the image as seen in ArtMatic. - 95 - REFERENCE: 2->4 Components Color Textures and Patterns RGBa Pict/Movie A: Size B: Contrast C: Tiling This RGB+Alpha color shader is identical to the 2->3 version of the component except that it accesses the input picture’s (or movie’s) alpha channel if there is one. This component only needs to be used if the input pict/movie has an alpha channel.For a general guide to Pict/Movie components, see the Using Pictures and Movies chapter of the reference manual. RGBa Blurred Pict/Movie (new) A color version of the 2->1 Blurred Pict/Movie component. The source image is loaded into an internal buffer and blurred. The loading time increases with the size of the image. Very, very large-sized images may take a long time to load since ArtMatic applies a high-quality blur algorithm and blurring is by nature a cpu-intensive task. (As a point of reference a 5120 * 4800 pixel image loaded quite quickly on a dual-core 2.4 GHz MacBook Pro while a 10,000 by 10,000 pixel image loaded fine but took many minutes to load). Mondrian A: Amplitude B: Color Cycle C: Frequency RGB+Alpha color shader that creates a pattern of random blocks reminiscent of the works of Piet Mondrian. The alpha mask is black everywhere that the pattern is black and uses intermediate shades where the RGB is non-black. City Blocks A: Amplitude B: Color Cycle C: Frequency RGB+Alpha color shader that creates a pattern of colored blocks against a black background. When used as the basis of a 4-output tree that supplies RGB+Elevation to ArtMatic Voyager, the result is a terrain that looks like a stylized city with buildings of various heights. City Blocks as seen in As seen in ArtMatic ArtMatic Voyager Orthogonal Maze A: Amplitude B: Color Cycle C: Freq. This component creates a color texture that resembles a maze where all the paths connect at 90 degree angles. The alpha channel outlines the maze contour. Hexagonal Maze A: Amplitude B: Color Cycle C: Freq. This component creates a maze-like texture with a hexagonal geometry. Light LED Array A: Amplitude B: Style C: Freq. The color texture resembles an array of LED lights. The alpha channel is essentially a grayscale representation of the LED array. The Style parameter determines the visual style of the array. At some settings the array is sparse and LEDs are uniform; at other settings, the spacing is more dense with some variability in LED shading and shape. - 96 - REFERENCE: 2->4 Components Random Sticks A: Orientation B: Color Style C: Freq. Color texture that resembles a random assortment of colored toothpicks – i.e. short-line segments. The Orientation parameter determines whether the sticks all have the same orientation or if they are randomly rotated. Slanted Disk Noise A: Amp. B: Disk Orientation C: Freq. Color texture that resembles a random assortment of color disks whose angular orientation is determined by the Disk Orientation parameter. Random Polygons A Params:A: Amplitude B: Color Cycle C: Freq. Color texture made up of randomly sized and oriented polygons. This version of the texture is dominated by arrangements that are oriented at right angles Random Polygons B A: Amplitude B: Color Cycle C: Freq. Color texture made up of randomly sized and oriented polygons. This version of the texture is less dominated by right angles than version A. Triangle Random Mesh A: Amp. B: Color Variance C: Freq. Mesh-like color texture made up of triangles of varied size and shape. Random Circles A: Amp. B: Color Variance C: Freq. An arrangement of randomly-sized and shaded circles. Color Stars A: Amp. B: Color variation C: Freq. Color texture that resembles a star field. Random Domes A: Amp. B: Dome Shape C: Freq. An arrangement of randomly-shaped and colored ‘domes’. Dome Shape can be used to flatten the dome tops. Time R-patchwork A: Amp. B: Sharpness C: Freq. Patchwork color texture that is automatically animated by time even with all parameters locked. The pattern is a patchwork of irregular rectangles organized into rectangular patches. When animated, the rectangles within each patch scroll . The Sharpness parameter influences both the lines that delineate the rectangles and the contrast of the alpha channel. When Sharpness is low, the channels that separate the patches are wider than when Sharpness is set higher. When used in ArtMatic Voyager, the rectangles have flat tops and rounded edges when the sharpness is low and beveled tops when sharpness is high. The colors are derived from the current gradient. - 97 - REFERENCE: 2->4 Components Fractal Shaded Clouds A: Amp. B: Shadow Offset C: Freq. Color texture primarily provided for use with ArtMatic Voyager for RGB Clouds. The alpha channel provides a mask that Voyager uses to blend the ArtMatic clouds with Voyager’s sky color. The Shadow Offset influences the direction of the shadowing on the clouds’ undersurface. It has a range of 0-1 and is an offset added to both the sky color and the virtual shadows created by the clouds. When the value is 0, the shadows are vertical and at 1 the sun seems to be coming from the top left. Use a rotation tile at the top of the system is you need to orient the light differently. Interlaced Grid A: Rotation B: Color Cycle C: Freq, This component creates an RGB interlaced grid. The alpha channel provides enhanced 3D texturing when the RGB Alpha Bump color shader is used. The alpha channel also makes the grid spaces transparent. Color Regular Tiles # (Vastly updated and renamed) Renamed from Color Tiles, this component provides a number of tiling methods based on a single polygon (regular or irregular). It provides a means to create an amazing variety of tile patterns. The output is RGBA where the alpha channel delineates the tile borders. The alpha channel provides 3D contours when the RGB Bump shader is used. The tiles are delineated by black borders. There are three parameter options that determine the color shading: use procedural color cycle, use main gradient, use indexed gradient. When Indexed Gradient is selected, parameter B determines the gradient that is used. When it is chosen, you can also edit the gradient by editing the Gradient Edit icon that appears below the parameter sliders. The meaning of parameters A and B are dependent on the selected parameter option and determine how the tiles are colored. Parameters C and D determine Frequency and a parameter such as Size or Rotation that is determined by the algorithm. Rotation. Changing the rotation of algorithms marked by * results in a change of the tile shape which allows the creation of dramatic tilings not possible with other apps. Alpha and Contour. (Left) The image as seen with the RGB Multi shader which ignores the alpha channel. (Right) The alpha channel provides 3D contours when used with the 3D Bump Color Shader. 2->4 XYza Regular Tiles is a sibling component that performs the same tiling but outputs a space transform, randomized index and alpa channel that can be used when you do not want to output color directly. See 2->4 XYza Regular Tiles for a list of the available algorithms. Note that those algorithms with mirror in the name may appear the same as the unmirrored algorithm in the color version -- whereas in the XYza version the - 98 - REFERENCE: 2->4 Components mirroring is obvious. See illustration in the section Color Semiregular Tiles. Color Semiregular Tiles # This is the color implementation of the tiling algorithms found in XYza Semiregular TIles. See the 2->4 Color Regular tiles for information about the color mapping and parameter options. See XYza Semiregular Tiles for more information about the algorithms and space transform. Those algorithms with mirror in the name may appear the same as the unmirrored algorithm in the color version whereas in the XYza version the mirroring is obvious. Semiregular tiles. Algorithm: Squares & Triangles (plain) Semiregular tiles. Algorithm: Squares & Triangles (mirror) Color Semiregular Color Triangle Tiles (updated) Color Semiregular tiles mixed with XYza tiles XYZa Tiles output A: Color Cycle B: Phase C: Freq. Color texture made up of colored triangles. The alpha channel provides a bevel effect to the tile tops when the RGB alpha bump color shader is used. The parameter options determine the color shading: use procedural color cycle, use main gradient, use indexed gradient. When Indexed Gradient is selected, parameter B determines the gradient that is used. When it is chosen, you can also edit the gradient by editing the Gradient Edit icon that appears below the parameter sliders. Color Hexagonal Tiles A: Color Cycle B: Phase C: Freq. Color texture made up of colored hexagons. The alpha channel provides a bevel effect to the tile tops when the RGB alpha bump color shader is used. The parameter options determine the color shading: use procedural color cycle, use main gradient, use indexed gradient. Roof and wall patterns # (new) This component provides a set of 2D textures reminiscent of tiled walls and roofs that are useful for wall and roof textures in ArtMatic Voyager or for 2D decorative design. The colors are subject to random variation. The Color - 99 - REFERENCE: 2->4 Components Variance parameter modulates the variation amount. Three parameter options are provided that determine the color mapping: use procedural color cycle, use main gradient, use indexed gradient. Algorithms: Roof Tubular Roof Alternate Multifractal Noise Roof 45º Wall Bricks A: Amp. B: Roughness C: Freq. RGB+Alpha version of this great noise function. The alpha channel is an independent multi-fractal noise similar to the 2->1 MultiFractal noise. (Essentially, this component that combines the 2->3 MultiFractal Noise with a 2->1 MultiFractal Noise. Sparse MultiFractal A: Amplitude B: Roughness C: Freq. This version of MultiFractal Noise has a sparse distribution of the texture’s colors. Ridged Noise A: Amplitude B: Roughness C: Freq. This is a gray and tan fractal noise function that creates lovely textures and is very useful in ArtMatic Voyager where it creates lovely desert /volcanic surfaces and coloration. Fractal Facets This RGB+Alpha component creates a color texture of muted grays and an alpha channel whose contours are something like a lunar surface that has smooth areas pocked with craters and faceted ridgelines. Dunes Parameters:A: Amplitude B: Amount C: Frequency As the name implies, this component provides sand dune coloration and surface contours when used in ArtMatic Voyager. Amplitude governs the dune height and Amount governs the distribution and contours of the dunes. Lunar Granite Noise A: Amp. B: Roughness C: Freq. This is another lunar-like color texture that creates a lunar-like surface without the smooth regions found in FractalFacets. Rocks A: Amplitude B: Amount C: Frequency Color texture+elevation component useful for creating rocky surfaces in ArtMatic Voyager. This component is especially useful in Voyager’s combination mode for adding rocky areas to built-in planets. - 100 - REFERENCE: 2->4 Components Lichen Rocks A: Amplitude B: Amount C: Frequency Color texture+elevation component that creates the appearance of lichen-covered rocks when used in ArtMatic Voyager. Pebbles A: Amplitude B: Roughness C: Frequency Realistic color texture+elevation component that imitates multi-colored quartz pebbles. This component is great for adding pebbles to the seashore in ArtMatic Voyager. Dome Rock A: Amplitude B: Amount C: Frequency Color texture+elevation component that creates a rocky landscape with boulders whose surfaces are rounded. Fractal Curves A: Amplitude B: Amount C: Frequency The RGB output is a lovely color fractal noise and the alpha channel resembles a meandering river system’s contours. The Amount parameter adds yellow-green and purple areas to the color texture. Earth Cracks A: Amplitude B: Amount C: Frequency Color texture+elevation component that creates a terrain of cracked earth. The Amount parameter influences the steepness of the cracks as well as the size of the “dry river beds” found in the terrain. Vein Network A: Amplitude B: Roughness C: Frequency Color-texture that resembles a veined leaf. The alpha channels matches the leaf’s veins and provides 3D texture when used with the RGB Alpha Bump color shader. 2->4 Packed Mixers These components mix packed streams. Use these mixers when one or both of the inputs has an alpha channel. Packed Alpha Mixer Considerations Starting wih ArtMatic 5.0 some changes were made to how Packed Alpha mixers work when receiving inputs that are not RGBA: such as occasions when scalar inputs are used (non-packed inputs) or when a 3->1 Pack component is the input rather than 4->1 Pack. In general, Infinity is transmitted out where all the input values are infinite. Scalar input values are treated as surfaces shaded with gray levels according to height. 3->1 packed inputs are given a default alpha/height value except for Packed Add where it is set to 0. Packed Crossfade A: Interpolate Mix the two inputs by blending them. The Interpolate parameter determines the balance between the two inputs. Packed Add (Updated 5.0) A: Level A B: Level B This components mixes the two inputs by adding the the RGB and alpha values of the inputs independently. Param- 101 - REFERENCE: 2->4 Components eter B, which controls the second input’s level, has a range from -2 to +2. When it has a negative value, the result is subtraction of Input B’s pixels from Input A’s. Starting with ArtMatic 5, this component no longer limits values to 0 and over. Negative colors can be interesting for special effects (such a negative lights). If you need to clamp values to 0 and over, use any of the following: 4->4 Contrast & Offset, 4->4 Color Shift, 4->4 Smooth Floor, or 3->3 RGB Contrast. The RGB output formula is: (Input A RGB * Level A) + (Input B RGB * Level B) The alpha output formula is (Input A Alpha * Level A) + (Input B Alpha * Level B) Packed Max A: Level Balance B: Follow in1 C: Feather % This components mixes the two inputs by comparing the alpha channel (the fourth input) of both inputs and taking the pixels from the stream whose alpha channel has the larges value. Level Balance is multiplied with input one’s alpha channel. Feather softens the boundary edges. Packed Logic # (Renamed and Vastly Expanded) Formerly, Packed Alpha Min. Packed Logic provides a variety of ways to blend two RGBA streams or two colored DFRM distance fields (where object color is in the first three inputs and the distance field is in the fourth input). It is similar to 2->1 Logic tools but is useful for combining colored objects. The Logic Sphere Teeth example from the 24 Color Logic folder is a good example to study. It combines several primitive shapes using a few 2->4 Packed Logic components to create this complex shape. For the examples below, two shapes are used: - 102 - REFERENCE: 2->4 Components A: yellow sphere B: blue cube Tree used for the example Parameters: A: Feather. This controls the blending at the intersection of shape A and shape B. With no feathering, the algorithm is followed strictly and there can be very abrupt transitions. Increasing the feathering smooths the intersections. Feather = 0 Feather = 2 (the maximum) B: Follow A. This controls the blending of shape A and shape B. When Follow A is 0, the blending is done strictly according to the selected algorithm. As the value of parameter B increases, the influence of shape A increases. Feather =0; Follow = 0 Follow = 0.5 (Feather 0) Follow = 1.0 Notice that with Follow at 1.0 that the shape is Shape A but the color is from Shape B C: Mix Color A OR Repulsion/Ripples. The meaning of parameter C depends on the selected algorithm. When using this component, you can mouse over the slider to see which meaning the parameter has. When the meaning is Mix Color A it controls the color blending. This allows you to give preference to shape A’s colors even if Shape B’s shape happens to dominate. Mix Color A = 0 [Alg: Min] Mix Color A = 1 [Alg: Min] - 103 - REFERENCE: 2->4 Components When the Repulsive Union is the algorithm, parameter C controls the Repulsion strength. Repulsion = 0 Repulsion = 1 [B=0.5] Ripples. When Ripples Union is used parameter C also influences the rippling at the object intersection Repulsion/Ripples = 0 algorithms Repulsion/Ripples = 1 [B=0.5] : • Intersection (min) Feather = 0 • Union (max) Feather = 0 Feather: max; B=0 Feather: max; B=.8 Feather: max • Subtraction (Min(x,-y)) Subtract shape B from shape A. The Colors of the subtracted part are set to field B’s. Subtraction can be use to dig a hole on a shape. Logical operations (the sign) are preserved when chaining the output of this component. As a result, subtracting from a subtracted object can yield a positive area. - 104 - REFERENCE: 2->4 Components Feather = 0 Feather: 0.7 • Framed Subtract Feather = 0; Border spread Border spread .05 Feather: Border thickness < 0 allows .05 0.215 A’s color to appear inside Subtract input B from input A framing the border of the intersection with positive values using the colors of input B. Parameter B controls the mixing of A’s and B’s colors. Notice that the inner color here is a mixture of A’s yellow and B’s blue. Parameters: A-Feather; B-Mix Color;C-Border Thickness,D-Border Spread. ARCHITECTURAL APPLICATIONS This component is particularly useful designing architectural features such as windows and doors. Unlike the “edged” algorithms, the border texture comes entirely from input B. The tower windows here were cut using Framed Subtract algorithm (File: Roman R Tower textured) - 105 - REFERENCE: 2->4 Components Tower System Windows System • Repulsive Union A=.011, B=.7, C=0 • Repulsive Subtract A=.011, B=.7, C=Max A=0, B=0, C=0 • Ripple Union A=0, B=0, C=0.4 A=.4, B=.2, C=0 • Ripple Subtract A=.4, B=.2, C=0 A=.4, B=.2, C=0 A=.4, B=.2, C=0 S-Ripple Union - symmetrical ripple Union A=.4, B=.2, C=0 A=.4, B=.2, C=0 S-Ripple Subtract - symmetrical ripple subtraction. - 106 - Tower - Windows with Framed Subtract REFERENCE: 2->4 Components A=.4, B=.2, C=0 A=.4, B=.2, C=0 • Partial Subtract Partially subtract B from A leaving a hole in A with the inner color coming from input B. When designing DFRM objects Partial Subtract is useful for embossing, cutting windows, carving and texturing. Partial subtract allows a border around the cut to be provided by the depth-cue color (the first auxiliary color). The parameters are: Feather (A), Thickness (B), Border Thickness (C), Border Spread (D). All parameters at their minimum The Thickness parameter (B) determines the thickness of the hole cut by input B Border Spread (param D) determines how far the depth cueing color (red, here) spreads into the border There are complex interactions between the parameters that makes a large number of objects possible from one pair of inputs Tower System Windows System • Edged Intersect - 107 - The Border Thickness (C) is the thickness of the region around the cut. It is shaded with the depth-cueing color which is red in this example Tower - Windows with Partial Subtract. Depth cue color: yellow. Large thickness. REFERENCE: 2->4 Components Create a solid from the intersection of inputs A and B with a border whose color is defined by the depth cue color. A:0; B:0; C:0.1; D: -.0025 NE Level at Max This Venitian tower uses Edged Intersect for the main blocks and Partial Subtract for the windows . (File: Venitian edged tower.vy • Edged Subtract Subtract B from A with a decorative border at the edges. The edges are colored with the depth cue color. NE Level modulates how much of the non-edge part of the solid is visible. When NE Level is at the maximum, only the edge areas are visible. The edge contours are dependent on the contours of the input fields. Parameters: Feather (A), Mix Color (B), Border Thickness (C), NE Level (D). A:0; B:0; C:.007; D: -.0025 NE Level at the maximum • Edged Union- / Edged Union+ These related algorithms create edges at the union of two objects. Edged Union - removes the edges from the volume and Edged Union + adds edges. The color of the edge is the depth cue color Edged Union - Edged Union + - 108 - REFERENCE: 2->4 Components Packed Alpha Math # (expanded and Renamed) Formerly, Packed Alpha Mul. Several algorithms were added to make this a much more powerful way to blend RGBA images. Parameters. For all algorithms, parameter A is the color blending control. The meanings of parameters B and C vary with the algorithm. RGBA channel A RGBA channel B Algorithms Multiply Alpha & Blend colors - this was the algorithm used in earlier versions of ArtMatic. The alpha channels are multiplied and the colors of the two channels blended (interpolated). Parameter B = Alpha A offset. Parameter C = Alpha B offset. Default params. RGB Alpha shader Default params. RGB Multi shader Param B at min. RGB Multi shader Param B at max. RGB Multi shader Multiply All - Does a strict multiply off both the alpha channels and the RGB channels. Parameter B = Scale Alpha. Parameter C is unused. Default params. RGB Alpha shader Param B at max. RGB Alpha shader Default params. RGB Multi shader Blend Alphas & Colors - blend the alpha and RGB channels with different amounts. Parameter A controls the color blending while parameter B controls the alpha blending. This is useful for mixing RGBA channels and also for blending color DFRM channels. It allows you to add bumps (for example) from one channel while keeping the color from the the other channel (unlike the normal Packed Alpha Blend component). - 109 - REFERENCE: 2->4 Components A=0 ; B=1 RGB Alpha shader A=.5 ; B = .5 RGB Alpha shader Blue Sphere Distorted Cube A=.5 ; B = 1 RGB Alpha shader Color from sphere. Color from cube. Shape from cube. Shape sphere. Add Alphas & Multiply Colors - parameter A controls the blending of color A with the result of multiplied colors of the two RGB channels. Parameter B scales the Alpha channel of the first input. Parameter C scales the Alpha channel of the second input and the two are added together. Output alpha = (Alpha A * B) + (Alpha B * C) This component is useful for blending both RGBA images and color DFRM objects A=0 ; B=1 ; C = 1 RGB Alpha shader A= 0 ; B = 1; C = .5 A, B and C = 1 RGB Alpha shader RGB Alpha shader Packed Alpha Blend A: Feather B: Add in 1 C: Flatten in 2 Blend input B with input A treating A as the background image. Input B’s transparency is determined by its alpha mask value. For instance, where input B’s alpha mask is 0, its image will be invisible (because it is completely transparent). Feather% scales the Input B alpha mask values. Packed Alpha Compose (Updated) A: Feather A B: Feather B C: Backgr. Color This component provides two algorithms for compositing two RGBA streams. - 110 - REFERENCE: 2->4 Components Examples: Packed Alpha compose Algorithms: • Compose over color. A & B composited over a colored background. This was the original algorithm. Blend the two inputs treating the alpha channels as transparency. The background color defined by parameter C shows through where the inputs are transparent. Feather A and Feather B control the feathering of the left input (A) and right input (B) with respect to their alpha masks. A large feathering value reduces hard mask edges by blurring the transition from transparent to opaque. • Max Compose. Adds B over A using Maximum for the alpha channels and alpha blending for the RGB channels. This mode is now the default and is well-suited for 2D graphics compositing. - 111 - 2->5 Components 2->5 components are unique in that they act in many ways like a composite function that combines two functions with independent outputs (a space transform and a color texture generator) in one tile. When the input is a 2D space, the left two outputs are a space transform and the right three outputs are an RGB output texture. In many cases, you will use only the left two outputs or the rightmost outputs. Many examples have been supplied in the 25 Examples folder. When a 2->5 component is the bottom component of a tree its three right outputs are used for RGB output and the left two outputs are ignored. Tips for Exploring Trees like the ones shown at the left are invaluable for exploring the 2->5 components. The difference between theses trees is the component fed by the 2->5 component’s space transform (its left two outputs). The choice of component (Interlaced Grid, RGBa Pict/Movie, or RGB Circle) can reveal different properties of the 2->5 component feeding it. The Interlaced Grid component is particularly useful for visualizing the space transformation and is used in many of the illustrations in this chapter. The circle and picture components tend to reveal aesthetic possibilities not obvious when the grid is used. Use the bottom component in the tree (Packed RGB Crossfade) to control the mix of the component’s color texture and the image created by the space transform’s branch. Polar Space A: Radial Steps B: Radial Phase C: Phase Space transform. Polar transform of the input space. Polar transforms turn straight lines into curves and circles as demonstrated by the remapping of the Grid. RGB texture. A circular mapping of the current gradient uninfluenced by the component parameters. Space transform RGB output A: Radial Steps. The number of axes of symmetry. B: Radial Phase. Rotation of the output space. C: Phase. This parameter shifts the input space to or away from the center. Rotate N A: Rotation Steps B: Phase C: Scale Space transform. Kaleidoscopic space transform that takes a wedge of the incoming space and repeats it by rotating it around the center. The number of wedges created is determined by parameter A. RGB texture. Wedges colored by the active gradient. Rotation Steps. The number of axes of symmetry. This influences both the color texture and the space transform. - 112 - REFERENCE: 2->5 Components Mirror A: Rotation B: Offset X C: Offset Y Space transform. Mirrors the incoming space about an axis whose rotation is controlled by parameter A. RGB texture. Mirrored color wheel drawn from the current gradient and mirrored with the same rotation as the space transform. A line is drawn with the first auxiliary color at the center of the mirror. Space transform RGB output Mirror N A: Symmetries B: Offset x C: Offset y Space transform. Mirror the incoming space with N number of axes of symmetry for kaleidoscopic effects. RGB texture. Mirrored color wheel drawn from the current gradient and mirrored with the same rotation as the space transform. A line is drawn with the first auxiliary color for each axis. Space transform RGB output Outer Mirror N Space transform RGB output A: Rotation B: Offset x C: Mirrors number Space transform. This component mirrors the incoming space outwards with the number of symmetries determined by the Mirrors Number parameter. Parameters A and B allow a rotation and offset to be applied before the mirroring is performed. The result is like a kaleidoscope on steroids. Be sure to explore how rotation, offset and the mirrors number interact. RGB texture. Wedges of color taken from the current gradient. The number of wedges is determined by parameter A. Tiles Space transform A: Scale B: Frequency C:Scale Y RGB output Outputs mixed Space Transform. Tile the incoming space into a matrix of rectangular tiles. RGB texture. An arrangement of identically-sized rectangular tiles filled with colors from the current gradient and highlighted by the first auxiliary color. Scale Y adjusts the tile height without affecting the width. Use this parameter to create non-square tiling. Hexa Mirror Tiles A: Scale B: Frequency C: Phase Space transform. Tile space into kaleidoscope-like arrangements of hexagonally-symmetric hexagonal tiles. RGB texture. Colored hexagonal tiles filled with colors taken from the current gradient and outlined with the first auxiliary color. - 113 - REFERENCE: 2->5 Components Mirror Tiles A: Scale B: Frequency C: Scale Y Space transform. Tile the space into identical mirrored tiles. This performs the same operation as the 2->2 Orthogonal Mirro Tiles component. RGB texture. An arrangement of identically-sized rectangular tiles that are filled with colors from the current gradient and highlighted by the first auxiliary color. Scale Y adjusts the tile height without affecting the width. Use this parameter to create non-square tiling. Spiral Polar Tile Grid transform Line transform A: Size B: Tile # C: Phase Pict transform RGB output Apollonian Tiles Space transform. Encapsulates the incoming space in tiles arranged in an infinite inward spiral. RGB texture. Circles colored by the active gradient that co-incide with the space transform’s tiles. The images at left demonstrate the transform applied to a grid, a neon line and pict. A: Radius B: Offset X C: Offset Y Space transform. Remap the incoming space into an arrangement of circular tiles that tries to fill space with non-overlapping circles of smaller and smaller size using the Appollonian Gasket algorithm. RGB texture. Circles colored with the colors of the current gradient and first auxiliary color are presented in a pattern that co-incides with the space transform’s tiles. Space transform RGB output Disk Inversion A: Inversion Radius B: Offset X C: Offset Y Space transform. Inward mirroring of the space using a disk-based inversion. RGB texture. A red disk outlined with the first auxiliary color. The leftmost image demonstrates the space transform applied to a grid. The rightmost image demonstrates the RGB output. Outer Disk Mirror A: Inversion Radius B: Offset x C: Offset y Space transform. Disk-based mirror that reflects the inner-portion of the space outwards. RGB texture. A green disk outlined with the first auxiliary color. Space transform RGB output - 114 - REFERENCE: 2->5 Components Soddy Inversions A: Radius B: Offset x C: Offset y Space transform. A two-dimensional implementation of Soddy’s Hexlet to invert and mirror the incoming space. Two tangent circles are drawn and the space is mirrored inwardly. Then a chain of circles is created by drawing tangentially-touching circles inside the outer circles. The space is mirrored inwardly into each new circle. The Soddy Hexlet has many interesting properties. Find out more about Soddy’s Hexlet by doing a web search or visiting mathworld.com. RGB texture. The pattern displayed in the illustration. The first and second auxiliary colors are used for the upper and lower regions. 0 Soddy Inversions A: Radius B: Offset x C: Offset y Space transform. This is a another transform based on Soddy’s Hexlet. RGB texture. The pattern displayed in the illustration below. The first and second auxiliary colors are used for the left and right regions. Inversion Ring A: Radius B: Tile # C: Offset y Space transform. Mirror the incoming space into a ring of circular tiles arranged in a ring. RGB texture. Circles of pre-determined color are drawn to correspond with the tiles. Disk Modulo X A: Inversion Radius B: Offset x C: Offset y Space transform. The space is mirrored into a row of disks whose radius is determined by parameter A. RGB texture. Colored disks that correspond to the space transform’s tiles are drawn with the colors of the gradient and outlined with the first auxiliary color. Polar Spiral Band A: Radial Steps # B: Radial Phase C: Phase Space transform. Warp the incoming space with a spiral transformation. RGB texture. A lovely spiral pattern that uses the current gradient’s colors and is outlined with the first auxiliary color Space transform RGB output A: Radial Steps #. This parameter determines how tightly the spiral is wound. B: Radial Phase. Rotational offset of the spiral. C: Phase. Offset applied to the incoming space. - 115 - REFERENCE: 2->5 Components Escher Disk Tile A: Disk Number B: Rotation C: Rotation Space transform. Like the 2->2 Disc Tiling, this component warps space with an Escher-like tiling. This is a great primitive for creating decorative figures. RGB texture. The decoratiive pattern shown below whose colors are pre-programmed. Disk Number determines the number of tiles. Parameter B determine the rotation of the the center and ‘even’ tiles. Parameter C determines the odd tiles’ rotation. Random Twirls A: Amplitude B: Phase C: Frequency Space transform. Divides the incoming space into evenly spaced circular regions and applies a randomized twirld distortion to each region . RGB texture. The decoratiive pattern shown below whose colors are pre-programmed. The circles correspond to the circular regions to which the twirling is applied. Multi-Perlin Random A: Amplitude B: Octaves C: Frequency Space transform. Multi perlin noise. RGB texture. Color texture shown below. The texture is influenced by the Amplitude, Octaves and Frequency parameters. B: Octaves determines how rough or smooth the noise appears. Disk Fractal Lab A: Algorithm # B: Tiles C: Parameter % This component provides access to 25 different disk fractal algorithms. In many cases, the color texture will be used on its own. Explore this component on your own. An entire chapter could be created documenting the 25 algorithms that it encapsulates. The output from a few of the algorithms is demonstrated below. Space transform. This component can perform any of 25 different space transforms all of which have both fractal and disk-shaped aspects. The actual transform is determined by the Algorithm # parameter. Explore each of the algorithms and see how parameters B and C influence the image. RGB texture. A color texture/pattern related to the algorithm chosen with parameter A. Many of the algorithms use hard-coded colors while others make use of the current gradient. In some cases the first auxiliary color is also used. Parameters: A: Algorithm #. This parameter determines the actual algorithm used by the space transform and color texture. The parameter’s values are discrete integer values and not meant to be animated since parameter changes result in discontinuous output. B: Tiles. Each of the algorithms tiles space within the disk-shaped area in which the transform is active. This parameter determines the number of tiles. C: Parameter %. Each algorithm makes use of parameter C in a different way. Explore the algorithms and how this parameter affects each one. - 116 - REFERENCE: 2->5 Components Algorithm # Space transform RGB output Algorithm # #0 #1 Tiles: 3 Tiles: 3 Color from gradient #2 #3 Tiles: 3 Tiles: 3 Color from gra- Color from gra- dient and first dient and first auxiliary color auxiliary color #4 #11 Tiles: 4 Tiles: 4 #12 #18 Tiles: 4 Tiles: 4 - 117 - REFERENCE: 2->5 Components Fractal Polar Tile A: Size B: Tile C: Phase This component transforms space with a recursive polar transform that recursively fills space with disk-shaped tiles of the incoming space. The transformed space is further divided into tiles mirrored about a rotational axis. Space transform. See description above. RGB texture. A pattern of disks that correspond to the tiles created by the space transform. The color is derived from the current gradient. A: Size. (Not currently implemented) B: Tile. The number of tiles to mirror. The tiles are mirrored about a central axis; so, the total number of tiles is B*2. C: Phase. Due to the nature of this algorithm, phase acts like a zoom control. Kleinian Group Fractal A: Size B: Tile Rotation C: Recursion Kleinian Groups are a special kind of complex number fractal related to Moebius transformations and involve matrix computation. The mathematics is quite complex, but the result is simply amazing. When the Rotation parameter is animated, the result is an interesting wobble when you are zoomed into the fractal. Space transform. Transforms the space using one type of Kleinian group. RGB texture. A pattern of disks that correspond to the tiles created by the space transform. The color is derived from the current gradient and first and second auxiliary colors. Space transform A: RGB texture B: created by C: created by D: created by generated by this increasing A’s zooming out from increasing C’s component. recursion level keyframe A recursion level. Tile Rotation. When zoomed in, the system appears to wobble when rotated with Tile Rotation parameter. Recursion. Increasing the level of recursion results in the space being filled in with this fascinating fractal transform. When zoomed in, there are spiral patterns to be discovered not apparent when zoomed far out. Notice the details added when the Recursion parameter is increased. Fractal Ring Space transform RGB output A: Radius B: Tile # C: Recursion The interaction between this component’s parameters is complex and must be explored to be understood. A wide variety of patterns can be created simply by adjusting the component’s parameters. Space transform: Fractal inversion. The interaction of the parameters can create fascinating fractal inversions. RGB texture. A pattern of disks that correspond to the tiles created by the space transform. The color is derived from the current gradient and first auxiliary color. - 118 - REFERENCE: 2->5 Components Moebius Disk A: Circle Size % B: K Rotate C: K Tiles This is a disk-based form of Moebius transformation that creates an interesting enclosed fractal-tiling of space. Space transform. A disk-based Moebius Transformation to the incoming space that unfolds about two attractors. RGB texture. A pattern of disks that correspond to the tiles created by the space transform. The color is derived from the current gradient. Space transform RGB output A grid transformed by Moebius disk as seen when zoomed far out (left) and zoomed far in (right). Notice that this component encloses the space in a finite (though complex) region. Examples of simple images created with this component. The interaction between the parameters is quite complex and should be explored while zoomed in a moderate amount. Manipulation of the K Rotate and K Tiles parameters reveals attractors and fascinating convolutions of the inner space as shown in the following images. The only difference in the images in this table are the settings of the K Rotate and K Tiles parameters. The images are the raw RGB output of this component. Moebius Balls A: Ball Size B: K Rotate C: K Scale This is another component based on Moebius transformations. A series of encapsulated spaces is created that unfolds around two attractors. Complex arrangements of these Moebius Balls can be created by adjusting the K Rotate and K Scale parameters (parameters B and C). Space transform: The incoming space is arrangement into a patter of self-contained balls. The arrangement unfolds in a complex fashion about two attractors. RGB texture: A pattern of disks that correspond to the space transform’s tiles. The color is derived from the active gradient. Adjustments of parameters B & C can create a vast array of patterns even when all other parameters are constant. - 119 - REFERENCE: 2->5 Components Space transform RGB output Disk Inversion Spiral Space transform RGB output A: Rotation B: Scale C: Recursion Simple example Space transform. A spiral arrangement of self-contained spaces that are complex fractal disk inversions. . RGB texture. A pattern of disks that correspond to the tiles created. The color is derived from the current gradient. The first auxiliary color is used to outline the disks. Rotation controls the tightness of the spiral. Recursion is the number of disks in the spiral. Moebius Inversions A: Real Part B: Imaginary Part C: Recursion Space transform. This is another Moebius Transformation that creates stunning recursive fractal inversions of the incoming space. RGB texture. A color texture whose pattern is like that created by the space transform. The colors are pre-programmed. Adjustments to this component’s three parameters can create a stunning variety of patterns Random Disk Packing A: Radius B: Offset x C: Offset y Space transform. A recursive, fractal random tiling of space. The tiles are randomly placed and sized. Each tile is a complete recursive disk inversion. The space between tiles is filled with smaller tiles -- all of which are disk inversions. RGB texture. A pattern of disks that correspond to the tiles created by the space transform. The color is derived from the current gradient and first and second auxiliary colors. A grid fed by the space transform seen at three different RGB output zoom levels. The zoom level of the images increases from left to right. The right most - 120 - 3->1 Components: 3D Scalar (Space/Field) Functions These components provide a number of different functions: 3D surfaces/textures, mixers for blending surfaces, basic fractals. 3->1 components also include some important DFRM primitives for creating 3D objects in ArtMatic Voyager. Some of these components have a related 2D components. For detailed explanations of those functions, see the 2D descriptions. Coordinate Notes. In the descriptions below, x, y and z refer to the components’ first, second and third inputs. They are not necessarily x,y,z spatial coordinates since that depends entirely on the components which are feeding the inputs. Math Primitives and mixers Ax + By + Cz A: Scale X B: Scale Y C: Scale Z This component provides a weighted mix of the inputs. The three scale parameters act like ‘level’ controls which determine how much of each input is present in the output. An input is essentially ignored if the corresponding scale parameter is set to 0. Formula: Ax + By + Cz (Ax + By + Cz)/Norm A: Scale X B: Scale Y C: Scale Z This component can be used as mixing function and a 3D shading function. It will contain the space by virtue of dividing the output by the distance which forces the output to approach zero as x, y, and z approach infinity. Formula: Math Utils (Expanded and renamed) Replaces the old 3->1 Distance. This component provides many useful ways of blending/compositing 3 branches and provides a number of valuable math primitives for advanced users. - 121 - COMPONENT REFERENCE: 3->1 Components Input shapes used for the examples Average Average. Example 2 Distance z Interpolate unclipped Norm Algorithms: • Distance. The strict Euclidian distance or length function sqrt(x^2+y^2+z^2). This was the algorithm used in ArtMatic 5.0 and earlier when it was called Distance. • A * dist(x,y,z) + B. Scaled distance. Parameter A scales the distance and parameter B provides an offset • A * dist(x,y,z)^2 + B. Scaled squared distance. Parameter A scales the distance squared. Parameter B is an offset added to the result. • Norm: A/(dist(x,y,z)+B). Scaled 1/ distance. • Average. Returns the strict Average of the three inputs when A=1 and B=0: (x+y+z)/3. Parameter A is amplitude, and B is offset. • z Cubic Interpolate clipped. A cubic interpolation of the three inputs where the z input is scaled and offset. • z Interpolate unclipped. Cubic interpolation of the inputs where the z input is scaled and an offset is added to the interpolated value. (x:y) * z A: Balance x y B: Balance z This component mixes the x and y inputs by interpolating between them and uses the z input as a multiplier. This is a great way to animate a transition from one image to another using the z input as an intermediate distortion factor. The z input acts as a control value. - 122 - COMPONENT REFERENCE: 3->1 Components x*y + z A: Amplitude x*y B: Amplitude z This component is useful as both a mixer and as a basic mathematical building block for implementing specific equations. As a mixer, it is useful for cases where you want to filter two images together (i.e. using one as a mask) and mix another unmasked image with them. Example file: “Burning Logo RGB”. Notice that the x-input to the function provides the flames. The y-input is a picture of the U& I logo which acts as a mask, and the z input adds a color version of logo. Formula: A(x * y) + B(z) x * y * z A: Scale Math primitive that creates a complex mix/filtering of the three inputs filter each other. Formula: A(x * y * z) MinMax A: Amplitude B: Min to Max C: Smoothing This is essentially the same as the 2D scalar version of this component but with the minimum and maximum of three inputs being computed. See the description of the 2D version for more information. The Smoothing parameter (added in version 2.5) controls the continuity of the transition between the inputs. When it is set to 0, the function behaves as it did in earlier ArtMatic versions. Logic Tools # (expanded and renamed) Formerly called Maximum. This component provides a number of algorithms for combining several streams (usually DFRM objects) in complex ways. For instance, it can be used to combine/intersect, three DFRM fields (objects) to create complex shapes. 3->4 Packed z Morph provides similar functions for packed streams (for mixing several colored objects). See also: 2->1 Logic Tools # and 2->4 Packed Logic # for illustrations of Logic transforms similar to those provided by 3->1 Logic Tools Algorithms: • Maximum (union). The maximum of the three inputs. (Equivalent of boolean OR.) • Minimum (intersection). The minimum of the three inputs. (Equivalent of boolean AND.) • Reversed Max Abs (Manhattan Dist). (max(|x|,|y|,|z|)). When the input is raw 3D space (global inputs XYZ), the result is a DFRM cube whose edges can be rounded by the smoothing parameter. Interesting DFRM solids can be made by feed the output of 3D Spaces through this algorithm. • Min Abs (min((|x|,|y|,|z|)). • Reversed Min Abs (contours). This can turn any DFRM solid into a hollow object. See example file Logic Object VecAdd.vy. • Median (min(x,y,z)+max(x,y,z))/2. • Union xy & Intersect z. This algorithm provides the intersection between z and the union of x and y. • Intersect yz & Union x. This algorithm provides the union of x and the intersection of y and z. • Max(Min(|x|, |y|),z). Returns the maximum of z and min (|x|, |y|). The result is always ≥ 0 and needs to be inverted for DFRM. See 31 Logic MaxMin Contours for an example. If the y and z inputs are the same surface, the result is a combination of the x and y inputs with x also being carved out from y from the inside. See the example 31 Logic Contours to observe the difference between this algorithm and Reversed Min Abs. • Choose x if z+ or y if z-. This algorithm provides a switch. The sign of the z-input determines whether the x or the y input is passed through as the output. It is the ArtMatic equivalent of an if..then..else statement. Where z is greater than 0, the x-input value is sent out. Where z is less than 0, the y input is sent out. See the Logic 2D ArtMatic example files. - 123 - COMPONENT REFERENCE: 3->1 Components • Morph x to y in z . Useful algorithm for blending 3D paths or volumes using a weighted max. • Morph x to y to x in z . Useful algorithm for blending 3D paths or volumes using a weighted max. Blending Components z blend A: Amplitude This component mixes the x and y inputs using the z-input as an alpha channel/mask. Blend by alt (z) A: Altitude fx B: Altitude fy C: Range This component mixes the X and Y inputs using the Z input to control the blending. Feed this tile with the output of 2 surfaces that you want to blend under the control of a third. When the Z values are within the range specified by Altitude fx and the Range parameter, the X surface is selected. When the Z values are within the range specified by Altitude fy and the Range parameter, the Y surface is selected. Everywhere else, the Z surface itself appears. The Range parameter determines the range of values to be replaced--Altitude fx and Altitude fy specify the range’s center, and Range specifies the range width. The X input always appears at lower altitudes than the Y input. Parameter B must be larger than parameter A for the X input to appear. This table illustrates the component’s behavior. A Grid (X) is mixed with Circles (Y) under the control of a noise component (Z). Where Z has low values (dark shades), the grid appears. Where Z has high values (bright shades), the circles appear. The Z input -- the component that controls the blend -- is Multi Perlin Noise B: The output of C: The output of D: The output of E: B, C and D the Grid by itself the Circles compo- the Multi Perlin blended together nent by itself Noise component using Blend by Alt by itself This component is a very powerful component when designing terrains for ArtMatic Voyager as it allows complex composite terrains to be made by combining two disparate terrains under the control of another. In this example, the lower texture (input x) is the Cellular noise component and the higher texture (input y) is Sparse Fractal Rocks. Displace by alt (z) A: Altitude fx B: Altitude fy C: Range This component is similar to Blend by Alt. Rather than mix the X and Y inputs (left and middle) according to the contours of the third input, this component selectively adds the values from the left and middle inputs to the values in the third input. - 124 - COMPONENT REFERENCE: 3->1 Components For example, take a system that has Cellular Noise as the left (X) input, Sparse Fractal Rocks as the second input, and a noise function to blend them. The features provided by the x and y inputs (Cellular Noise and Sparse Fractal Rocks) are added to the terrain provided by the third input. In essence, this component adds the X input to the Z input at low elevation and adds the Y input to the Z input at higher elevations with parameters A and B (in combination with parameter C) determining where the transitions occur. Random Mix A: Amount B: Phase C: Frequency This component randomly mixes the three input surfaces. This component is especially useful for creating composite images or surfaces (for use with ArtMatic Voyager) that randomly mix elements from its inputs. When Amount is 0, the output is provided entirely by the left input. The order of the inputs is significant. The dominant surface should be the left input. When creating systems for use with ArtMatic Voyager, this simplifies the task of creating rich varied topographies. In this example, input x (the left input) is Multi Perlin Noise, input y (the middle input) is Cellular Noise and input z (the right input) is Sparse Fractal Rocks. Radial Displaces # (new 5.0) This component creates radial displacements that provide interesting surface features to 3D objects (primarily those that will be rendered from ArtMatic Voyager), especially vegetation. This component provides quite a few different algorithms for very different effects. Radial displacement can take a shape like the one on the left (a sphere merged with a cone) and add interesting surface detailing - 125 - COMPONENT REFERENCE: 3->1 Components The displacements radiate outwards from a vertically-oriented cylinder. To use Radial Displace with DFRM objects, add the output of Radial Displace to the object’s output value as shown in the example tree. For the math-minded: Radial Displace creates displacement of the angle/distance/y-axis with a displacement vector pointed towards an outward x/z cylinder. The examples shown were created from this structure tree. Group A creates the “cone/sphere” shape by combining two 3->1 Density Shapes (a cone and a sphere) with 2->1 Math Tools set to Max as the mixer. The 3D Offset tile is used to control the position of the sphere on the cone. The tile labeled B is the Radial Displace component. The tile labeled C is used to add the Radial Displacement to the object (density shape). Parameters: A: Algorithm, B: Phase, C: Frequency Algorithms. The table below illustrates all of the algorithms by applying them to a merged cone & sphere. The renders were done with ArtMatic Voyager. See the ArtMatic Voyager example file 2.0 examples/DFRM Life & Plants/ Components Demo/RadialDisplaces Demo.vy to see examples of all the algorithms. Advancing the time slider will advance you through the algorithms. Cone and sphere with no displacement. 0. Y-Segmented 1. Fibrous Segmented 2. Petales - 126 - COMPONENT REFERENCE: 3->1 Components 3. Radial Sines 4. Sparse Spikes 5. Upward spikes 6. Saw and Spikes 7. Bumps A 8. Bumps B 9. Random 10. Spherical Spikes - 127 - COMPONENT REFERENCE: 3->1 Components 11. Spherical Spikes+ 12. Spherical Bumps A 13. Spherical Bumps B 14. Spherical Bumps C 15. Spherical Random Z Sin shader A: Amplitude B: Z scale C: Contrast This component can generate complex shading/banding where the shading is controlled by the z input. Basic Formula: sin(x + y + B z) (The basic equation is further modulated by the amplitude and contrast parameters.) Z Circles A: Frequency B: Contrast C: Altitude This periodic component has a pointillation, pixellation or dither-type effect and only works well with some sorts of systems. If the first two inputs define a spatial position, the z value will effectively control the amount of pixellation. - 128 - COMPONENT REFERENCE: 3->1 Components Z Bubbles A: Scale B: Contrast C: Phase This function distorts space with superimposed cylinders/bubbles. The interaction between the inputs can be quite complex. Animating the phase parameter can create fascinating mixing, morphing of the inputs and the distortion bubbles. Facet pers(pective) A: Frequency B: Z Scale C: Contrast This component generates a mosaic pattern with a perspective effect imposed by the z-input. 3D Grid A: Amplitude B: Phase C: Frequency This function creates a true 3D Grid (constructed of interlocking walls) when the inputs are a 3D space (as opposed to inputs from three independent branches). To get a sense of this as a 3D function, place it after the 3D Room (2>3) component and manipulate the room’s offset z parameter which moves the room’s back wall. (The “3-to-1 3D Explorer” example file has been set up to explore the 3-to-1 true 3D functions). This component can also be used as a mixer to mix the output of independent branches with interesting effect. 3D Sin x + Sin y + Sin z A: Amplitude B: Phase C: Frequency This periodic component tends to create dimpled textures. It can be used either as a mixer or as a 3D texture generator. Note: The number of parameters for this component changed in ArtMatic Pro 2.5. As a result of this change, the keyframes of files made with earlier versions of ArtMatic Pro will need to be manually adjusted. 3D Sin x * Sin y * Sin z A: Amplitude B: Phase C: Frequency This periodic component tends to create dimpled or egg-crate like textures. It can be used either as a mixer or as a 3D texture generator. Note: The number of parameters for this component have changed in ArtMatic Pro 2.5. As a result of this change, the keyframes of files made with earlier versions of ArtMatic Pro will need to be manually adjusted. 3D techno noise A: Amplitude B: Phase C: Frequency True 3D version of the 2D Techno Noise component. 3D Bubble & Skins # (Expanded and renamed) Renamed from 3D Bubbles. This component now has 13 different textures well-suited for skinlike textures. This was originally just a 3D version of 2->1 Bubbles, but it has been expanded with a wealth of algorithms. - 129 - COMPONENT REFERENCE: 3->1 Components Algorithms: 0-Bubble 3D 1-Smooth Bubble Skin 2-Fish Skin A 3-Fish Skin B 4-Fish Skin C 5-Reptile Skin A 6-Reptile Skin B 7-Reptile Skin C 8-Reptile Skin D 9-Reptilian Hexa Scales 10-Alien Skin A 11--Alien Skin B 12-Alien Skin C 3D spots A: Amplitude B: Phase C: Frequency 3D texture reminiscent of a star field. - 130 - COMPONENT REFERENCE: 3->1 Components 3D cellular A: Amplitude B: Phase C: Freq . 3D DF Noises # (New in 5.0; Expanded 6.) This component provides a variety of 3D noise that can be blended with a density field object (DFRM object). The output range is infinite so it needs to be intersected or blended with a finite object to bound it. 3D Density Noise (depending on how it is used) can add texture to a surface (as seen in the Textured Torus examples below) or transform a primitive shape like a sphere into something much more interesting. Typically, 3D Density Noise’s output will be combined with the output of a density field object using a component like 2->1 Ax+By+C or 2->1 Interpolate. Some helpful example files are provided with ArtMatic Voyager: • Textured Torus . A basic example that shows all the noise types (by moving the time slider in Voyager). See Voyager’s 2.0 Examples/DFRM Objects/Basic Objects/Textured torus.vy • Desert Psychic 3D . This example interpolates a sphere with the Jitter Spheres noise to create a sphere cluster. It demonstrates how you can transform one object into quite a different object. See Voyager’s 2.0 examples/DFRM Objects/Basic Objects/desert psychic 3D JS.vy • Parameters: A: Algorithm, B: Scale, C: Amplitude Algorithms: • • • • • • • • • • • • • • • • • • • • Cylindre 3d grid # Rect 3d grid # Diamond 3d grid # Sphere 3d grid # Spheroid noise # Cuboid noise # Jitter Spheres # Random Boxes # Lines Network # Random Plates # Random Polygons # Saw x # Saw y # Saw z # Saw xy # Saw xz# Blocks Random A Vertical Sparse Blocks # City Blocks # City Sparse Blocks # Desert Psychic Examples (3D Density Noise) - 131 - COMPONENT REFERENCE: 3->1 Components This structure tree demonstrates how 3D Density noise can be used to transform a simple shape into something much more complex. This tree interpolates a Density Shape with Density Noise to create a new shape (or cluster of shapes). This is the ArtMatic tree used to create the object cluster in the Desert Psychic 3D example system. It is used for the examples that follow. In all cases below, the 3D Density Shape is a sphere. Shape: Sphere. Density Noise algorithm: Jitter Spheres. Shape: Sphere. Density Noise algorithm: Cylinder 3D Grid Shape: Sphere. Shape: Sphere. Density Noise algorithm: Cylinder 3D Grid. The Density noise algorithm: Random Polygons. only difference between the object in the previous image and this one is the setting of the interpolation parameter. - 132 - COMPONENT REFERENCE: 3->1 Components Algorithms Illustrated (3D Density Noise) Textured Torus Example The tree used to create the examples below is from the Textured Torus.vy example file provided with ArtMatic Voyager. In the example file, move the time slider to see each of the algorithms demonstrated. Group A provides the Density Noise (which is warped using cylindrical projection. Group B provides the basic shape which is a combination of a torus and a rounded tube (both are 3D Density Shape algorithms). The Density Noise is added to the object using the 2->1 Ax + By + C component. 0 - Cylindre 3D Grid 1 - Rect 3D Grid 2 - Diamond 3D Grid 3 - Sphere 3D Grid - 133 - COMPONENT REFERENCE: 3->1 Components 4 - Spheroid Noise 5 - Cuboid Noise 6 - Jitter Spheres 7 - Random Boxes 8 - Lines Network 9 - Random Plates 10 - Random Polygons - 134 - COMPONENT REFERENCE: 3->1 Components 3D DF Shapes A # (new in 5.0) Renamed in ArtMatic 6, this component is the most widely used component for creating DFRM-based objects for ArtMatic Voyager. It provides a wide variety of basic 3D objects selected by the algorithm which can also be set with parameter slider A. It is primarily used for creating 3D objects rendered in ArtMatic Voyager but they can be used for native ArtMatic images, too. In general, the fields have 0 as the center value (which defines the object surface in Voyager). The value goes to -infinity when moving far away from the object. The field is positive inside the object and indicates the distance to the surface. For MUCH more about DFRM objects, see the DFRM guide. Updated in ArtMatic 6 to allow parameter C to control the branch length for elevant algorithms. Parameter D provides height control for some algorithms and branch thinning for the branch primitives. Ring (torus) uses parameter D to control the ring radius. See the ArtMatic Voyager example “3D Shapes Dimensions.vy” to see all the primitive shapes with their normal orientations and size. Parameters: • (A) Algorithm. Selects the shape • (B) Radius - the object size. An undistorted,unscaled sphere of radius 1 (the unit sphere) has a radius of 20 meters in ArtMatic Voyager. • (C) Amp (amplitude), Z Depth or Branch Length. Parameter C provides the Amplitude for most algorithms. For branch algorithms it controls branch length and provides Z depth for some other algorithms (such as Frame xy). When the parameter is amplitude, the value is normally either 1 or -1. -1 creates a negated field which is very useful when using boolean operations (such as min) to create a hole in another field as shown below. The algorithms from plate xz to hollow tube use the amplitude to control the z dimension (depth). • D (varies with algorithm). Complex shapes can be made from simple combinations of primitive Density Shapes. In this example, a cylinder cuts a hole in a cube by setting the cylinder’s amplitude to -1 and setting MinMax to minimum mode. See the DFRM Guide for more information. - 135 - COMPONENT REFERENCE: 3->1 Components Sphere a sphere of radius B. Column an infinite upright cylinder of radius B in the y axis Tube x axis an infinite upright cylinder of radius B in the x axis Tube z axis an infinite upright cylinder of radius B in the z axis - 136 - COMPONENT REFERENCE: 3->1 Components Ring (xz) plane axis a horizontally-oriented (oriented in the xz plane) torus (donut shape) Ring (zy) plane axis Ring (xy) plane axis Saucer xz a flattened sphere - 137 - COMPONENT REFERENCE: 3->1 Components Cone an infinite cone. Radius (parameter B) changes the slope Pyramid an infinite pyramid. Radius changes the slope Cube a cube Smooth Cube a smooth-edged cube - 138 - COMPONENT REFERENCE: 3->1 Components Cylindre A cylinder whose height is finite above 0 but infinite where y < 0 Obelix a truncated rectangular prism (box shape) that is finite where y > 0 and infinite where y < 0 Arch y an arch-topped rectangular prism (box shape) that is finite where y > 0 and infinite where y < 0 Rounded tube y A cylinder with a rounded top that is finite where y > 0 and infinite where y<0 - 139 - COMPONENT REFERENCE: 3->1 Components Spheres cluster xz A collection of spheres on the xz plane (horizontally-oriented). This is a nice starting point for groups of rocks or asteroids Spheres Cluster A cluster of spheres. This is a nice starting point for flying rocks or asteroids Column Cluster xz - 140 - COMPONENT REFERENCE: 3->1 Components Cubes Cluster xz Cubes cluster Plate xz a horizontally-oriented flattened box Panel xy a vertically oriented flattened box. Amplitude (parameter C) controls the depth - 141 - COMPONENT REFERENCE: 3->1 Components Frame xy a vertically-oriented rectangular frame shape. The frame edges are squares and Radius controls the object size. Amplitude controls the depth. Hollow Tube z a hollow horizontally-oriented cylinder oriented along the z-axis. The size is Radius*8. Amplitude (parameter C) controls the depth in the z direction Leave y A vertically-oriented leaf shape. A useful primitive for designing vegetation Grass y A vertically-oriented shape reminiscent of a blade of grass. This is a useful primitive for building objects, but for creating “real” grass the built-in 3->4 Color Grass Field component is computationally-more efficient than building grass from primitives. - 142 - COMPONENT REFERENCE: 3->1 Components Branch Smooth The branch series is essentially a collection of smooth-topped cones (with a steep slop) with a variety of useful textures. A branch shape with a smooth surface. Branch B A branch shape with a textured surface Spiky Branch A branch shape with a spiky textured surface Cactus Branch - 143 - COMPONENT REFERENCE: 3->1 Components Twirl Bumped Branch 3D DF Shapes B# (new) This component provides useful 3D object primitives that are especially useful for creature design. The rotation parameter options can rotate the whole shape (with the exception of the the first two shape algorithms) and/or limit the shape to one side of the axis. Parameter notes. The parameters vary by algorithm. For most of the algorithms, parameter A controls the thickness/radius, parameter B the smoothing, and parameter C the spread (the object’s growth). Parameter D provides period control for the hairy tube algorithms. Algorithms: • xyz axis tubes. 3 intersecting tubes aligned along the x, y, and z axes • star axis tubes. Intersecting tubes radiating from a central point every 45 degrees. This algorithm is useful for tentacles, some invertebrates, and microorganisms. • 5 tubes. another good starting point for tentacles. Spread controls angle of the tubes. • 4 tubes. a useful primitive for creating vertebrate legs. See the OLife examples. • 6 tubes. useful for insectoid legs. • 8 tubes. useful for arachnoid and arthropod legs. • capsule. elongated-sphere/capsule shape. Spread sets the length. • triangle horizontal. useful for wings and fins. see creature examples. • triangle vertical. useful for wings and fins. see creature examples • boxoid. box shape with control over edge rounding. • ovoid. ovoid primitive. Useful for fish bodies. • discoid. rounded-edge disc. Suitable for dorsal fins and crests. • helicoidal plane. A spiraled plane that is infinite along the main axis. Spread determines the spacing of the spirals • helicoidal plane 2. Two interleaved spiraled planes. • helicoidal torus. A torus in an helicoidal space. An infinite coil. • helicoidal torus 2. Two interleaved and interphased toruses in the same helicoidal space. The primitive is infinite in the main axis. • helicoidal exp. A spring where the coils become increasingly and exponentially more narrow on the main axis. • helicoidal box. A spring with ribbon-like windings whose cross-section is rectangular . • cone exp. A finite cone. Parameters: A. Thickness. B: Bending. C: Spread. • finite tube. A finite tube with rounded ends. Spread % (parameter C) sets the tube length. Hairy Tubes. These are cylinders with protruding hairs, spike or bumps. They have an advantage over other techniques that create protrusions because they do not distort space. Methods of creating protru- 144 - COMPONENT REFERENCE: 3->1 Components sions via space distortion may destabilize the underlining distance fields which can result in artifacts or overlong render times. The Hairy Tubes are infinite shapes intended to be blended with finite shapes to make the cylinders finite. Examples: Max & Blend Inf H tube.vy demonstrates several possibilities for these primitives. Parameters: A: Radial Frequency - number of spikes. B: Smoothing - controls the size of the spikes’ base. At 0, the spikes are uniformly thin. C: Spread % - the spike length. D: Axis Frequency - the distance between the rings of spikes. Together, Spread and Smoothing can be used to change the character of the protrusions allowing you to create spikes, hairs or bumps. • hairy tube 90. An infinite cylinder with radially-oriented spikes that stick straight out from the cylinder. • hairy tube 60. Similar to hairy tube 90 except that the spikes stick out at a 60 degree angle from the cylinder. • crested Tube. An infinite tube with a protruding sawtooth-shaped crest. Parameters: A - Radial Freq. B - Smoothing. C - Spread. D - Axis Freq. • infinite hairy tube. This tube has infinitely long hairs whose angle is controlled by the spread parameter. • conic capsule. An egg-shaped capsule with a rounded conical top (when oriented in y) and round bottom. This shape is useful for plant and animal parts. Parameters: A-Thickness. B-Slope. C-Spread. Parameter • • • • • • • • options : orientation x orientation y half x+ half y+ half z+ half xhalf yhalf z- 145 - COMPONENT REFERENCE: 3->1 Components Maps and Fields Random pers(pective) A: Perspective B: Level C: Phase This component provides smooth random distortions of the x and y inputs and uses the z input as a distance/perspective controller. If the z-input is fed by the Ax + By + C component, you will get a horizon-like effect. Tip: To create an animatable planet/surface, use the distance component to feed the z input. Animating the phase parameter will provide surface undulations that resemble planet rotation. The image at left was created with the file Random Perspective which is found in the Doc. Example Files folder. Turbulent pers(pective) A: Perspective B: Level C: Phase This component is similar to Random Pers but uses turbulent noise rather than a random noise-type algorithm for generating its texture. This component works well for planet surfaces. Techno pers(pective) A: Perspective B: Amplitude C: Phase This component is similar to Random Pers and Turbulent Pers but uses the techno texture. See the description of the 2D scalar techno component for more information about the techno texture. Fractal Map A: Real B: Imaginary C: Z displace Fractal map is a complex number-based recursive fractal where the x and y inputs are treated as the real and imaginary parts of a complex number. The Z displace parameter is used to modulate parameter A in such a way that you can effectively modulate the “granularity” of the fractal with the z-input. The z -input can be used to explore changes in the fractal’s degree of chaos. In some ranges, the fractal behaves in an orderly fashion while in others it can appear quite chaotic. This component is sensitive to the Max iterations for fractals parameter. Mandelbrot set A: Scale B: Z distortion C: Contrast This component is the classic Mandelbrot set. You can create interesting variations by feeding the output of a 2D space distortion function into the leftmost inputs of this component. The scale parameter acts as a zoom control. The z distortion parameter warps the resulting image, and the contrast parameter adjusts the color contours of the resulting output. This component is sensitive to the Max iterations for fractals parameter. Julia sets A: Real B: Imaginary C: Z displace This component generates a Julia set. For the classic Julia Set (as shown in the component’s icon), set parameter C to 0. When parameter C is anything other than 0, the z input is used to modulate the “granularity” of the fractal. The A and B parameters are multipliers applied to the x and y inputs respectively. This component is sensitive to the Max iterations for fractals parameter. Tip: Due to the limited output range of this component, the logarithm-based shaders often work best. - 146 - COMPONENT REFERENCE: 3->1 Components Ferro magnet model A: Real seed B: Imaginary seed C: Z displace This is a complex fractal based on the magnetic field equations. The A and B parameters are multipliers for the x and y inputs. The Z displace parameter works similarly to the Fractal Map’s and Julia Set’s Z displace parameters. This component is sensitive to the Max iterations for fractals parameter. 3D Noise Functions The next group of components is comprised of true 3D noise/texture functions. Noise functions are great for providing textures to cover the surfaces of objects as well as for creating standalone textures and images. Generally, these are used towards the bottom of branches to provide texture for 3D objects. A simple example file (“3-to-1 3D Explorer”) has been provided to make it easy to explore these fascinating functions. To see the 3D effect, adjust parameters for the example’s Room tile and notice how the texture of the back wall changes. TIP: When exploring, make sure to explore what happens when you use the Derivative function as the final component as this will bring out the texture of the noise functions. You can also use the Geographic CLUT shader which automatically includes the derivative calculation to shade the surface. Those components with a sienna-colored icon feature adaptive resolution and band-limiting. Z Fractal Lines A: Amplitude B: Phase C: Frequency This is a variation of 2D fractal noise. The z input provides an offset that modulates the noise. For more about fractal noise, see the description of the 2D version. (Renamed from Fractal Lines in version 4.0). z Basalt Rocks A: Amplitude B: Phase C: Frequency This is a rocky fractal noise whose third input controls the roughness and amplitude/altitude of the output. This component is great for creating igneous, basalt rocks in systems designed for use with ArtMatic Voyager. When used with Voyager-destined systems, the Frequency should be low or very low values (below 0.25). The rock contours are controlled by the third (Z) input. Try inserting various 1D filters on the Z input and see how you can influence this texture’s ‘geology’. In this example, the component that provides the Z input steadily increases -- thus the surface roughness increases with the altitude. Z Ridged Fractal Noise A: Amplitude B: Phase C: Frequency This component is similar to the 2D Scalar version with the addition of the Z input modulating both the surface roughness and amplitude. In this example, the value of the Z input increases steadily from left to right. - 147 - COMPONENT REFERENCE: 3->1 Components Z Stone Clusters A: Amplitude B: Phase C: Frequency Essentially the same as the 2D Scalar version of this component with the addition of providing control (via the third input) of the stone size and placement. If you connect the third input to a component that generates terrain, the rocks will loosely follow the terrain’s contours as shown in the image below. The Z input modulates the number of stones in a periodic fashion while the size of the stones has a linear randomized relationship to the Z value. The Z input has a steadily increasing value from left to right. Notice that the size of the stones increases steadily while the number of stones changes periodically. If the Z (third) input is connected to the component that provides the main surface, the stone clusters will follow the terrain contours as shown in the following landscape below. 3D Random A: Amplitude B: Phase C: Frequency This component generates a 3D random space distortion and is related to the 2D random noise component. Great for granite-like textures! 3D Perlin Noise A: Amplitude B: Phase C: Frequency Returns a single 3D Perlin noise function Adaptive, Band-Limited Noise Functions The next group of noise functions have adaptive resolution and are band-limited to reduce high-frequency noise. These functions are recommended for designing systems for use in ArtMatic Voyager. The number of iterations and resolution of the functions are determined by both the camera’s zoom level and the preference for fractal iterations. By being adaptive, the functions can deliver maximum detail at any zoom level. Note : With very high zoom levels, you may need to increase the Maximum Iterations for Fractals preference. 3D Multi Perlin Noise A: Amplitude B: Octaves C: Frequency This component sums a series of 3D Perlin noise functions with the frequency doubling for each function in the series. The maximum value for the Octaves parameter is 128 (27) and provides seven ‘octaves’. This component allows very fine control of the frequency content. It is especially useful when used with very low frequency values to create surfaces or large scale modulations for ArtMatic Voyager. 3D Multi Perlin noise with 4 octaves as seen in ArtMatic & ArtMatic Voyager. The Z input is provided by a cone. - 148 - COMPONENT REFERENCE: 3->1 Components 3D Fractal noise A: Amplitude B: Phase C: Frequency Three-input fractal noise algorithm. This component, as are all the fractal based components, is sensitive to the Maximum Iterations for Fractals preference. See the description of the 2D version for more information. 3D Multi Fractal Noise A: Amplitude B: Phase C: Frequency A 3D fractal noise created by summing 3D Perlin noise functions with varying fractal dimension (roughness). “Multi-Fractal” indicates that the fractal dimension (a measure of the surface roughness) changes randomly over the surface. As you can see below, the apparent roughness is not uniform as it is with the Fractal Noise component. The view in ArtMatic (left) and ArtMatic Voyager (right) 3D Cubic MultiFractal A: Amplitude B: Phase C: Frequency A 3D multi-fractal created by filtering the output of Perlin noise functions through a cubic ceiling function. The view in ArtMatic (left) and ArtMatic Voyager (right) 3D Ridged Fractal A: Amplitude B: Phase C: Frequency A multi-fractal noise function composed of ridged 3D Perlin noise (1-abs(n)). This fractal function was designed by Ken Musgrave and is a good approximation of ridged mountains. The fractal dimension is smoothest in the valleys. This function only generates values greater than 0. The view in ArtMatic (left) and ArtMatic Voyager (right) 3D Terrains # (new) This is a new component with various surfaces that are especially useful for ArtMatic Voyager terrain design. Examples: see the 31TGeoGraphic series of examples. Algorithms: • V Valley Mountains • Eroded Terrain • Erosion System - this can be used as a filter or added to various surfaces to simulate erosion patterns by using it in an ArtMatic file that is used for blending using Combination mode. - 149 - COMPONENT REFERENCE: 3->1 Components V Valley Mountains Eroded Terrain Erosion System 3D Textures# (updated and renamed) Formerly called 3D Fractal Strings, this component now provides 18 different perlin-based textures suited for a wide range of uses. These are useful for both 3D and 2D graphics Algorithms: • Fractal Strings (the original algorithm). A 3D multi-fractal composed of highly filtered Perlin noise that appears like randomly curved lines . • Caustics • Fibrous noise • Perlin waves • Interferon • Perlin wood • Coraloid • Stripoid 15 • Stripoid 45 • AbsPerlin sum • AbsPerlin min • AbsPerlin spikes • Alveoloid • R-Mesh linear • R-Mesh insect wing • R-Mesh Alveoli • Barkoid 90 • Barkoid 45 3D Fractal Strings Algorithm. The view in ArtMatic (left) and ArtMatic Voyager (right) 3D Lunar Rocks A: Amplitude B: Phase C: Frequency Multi-fractal noise with added sparse bumps clusters reminiscent of lunar soil. The texture has varying degrees of roughness. The view in ArtMatic (left) and ArtMatic Voyager (right) - 150 - COMPONENT REFERENCE: 3->1 Components 3D Bubble Rocks A: Amplitude B: Phase C: Frequency Multi-fractal noise with round bump clusters. Fine details tend to appear at the lower elevations of this texture’s larger scale elements -- whose higher elevations tend to be smooth. The view in ArtMatic (left) and ArtMatic Voyager (right) 3D Stratified Noise A: Amplitude B: Distortion C: Frequency A simple approximation of perturbed geological layers (a texture used widely in Bryce). The distortion parameter controls the texture’s vertical displacement. Example file: “Solid Strata Time Room” shows how the 3D stratified noise intersects a Room. Note how the y and z coordinates are modulated by time to create a constantly moving texture. 3D Crystal Noise A: Amplitude B: Phase C: Frequency 3D version of the 2D Crystal Noise component. This is a structured fractal-based noise based on random noise subjected to triangular lattice linear interpolation. Crystal noise features sharp ridges and is often used along with a 2->2 fractal displacement. This function only generates values greater than 0. The view in ArtMatic (left) and ArtMatic Voyager (right) 3D Fractal Stucco A: Amplitude B: Phase C: Frequency A variation of the fractal noise algorithm that generates a stucco-like texture. The view in ArtMatic (left) and ArtMatic Voyager (right) See also the Shining Stucco Gelatin example file. Note that the Power function provides a metallic effect. 3D Fractal Puffy Clouds A: Amplitude B: Phase C: Frequency A 3D multi fractal noise with phase feedback, capturing the twirling turbulence of clouds. In the example below, the component is used for both the cloud layer and the terrain in ArtMatic Voyager. - 151 - COMPONENT REFERENCE: 3->1 Components 3D Altocumulus clouds A: Amplitude B: Banding C: Freq. 3D texture shader designed for creating cloud layers for ArtMatic Voyager where they yield mid-level layered altocumulus clouds. This component is great for creating mackerel skies with rhythmic banding. Banding controls the amount of banding. When it is 0, the cloud distribution is strictly random. As seen in ArtMatic In AM Voyager, Banding = 0 Banding = 1.0 3D fractal lines A: Amplitude B: Phase C: Frequency 3D fractal-based texture made of randomly intersecting curving veins. Great for marble and other veined textures. This is a structured fractal-based noise and is sensitive to the Max. Iterations for Fractals preference. Increasing the iterations, increases the detail. When used in ArtMatic Voyager terrains, the effect is of a network of faults/cracks. 3D Random lines A: Amplitude B: Phase C: Frequency Similar to fractal lines but composed of randomly intersecting straight lines. Great for fibrous and geological textures. This is a structured fractal-based noise and is sensitive to the Max. Iterations for Fractals preference. Increasing the iterations, increases the detail. 3D Fractal Silex Noise A: Amplitude B: Roughness C: Freq. This 3D texture/shader is useful for creating both elevation maps and color textures for ArtMatic Voyager. Both the elevation map and color texture are provided by the tree shown above. 3d fractal bubbles A: Amplitude B: Roughness C: Freq. - 152 - COMPONENT REFERENCE: 3->1 Components Miscellany Pack(x,y,z) Use this component to pack the output of 3 output functions into a single packet which can be passed to packed functions. The output of this function should only be passed to components that expect packed input. It is only useful for packing RGB streams or 3D coordinates for use with “packed” functions. Open Compiled Tree A: Scale B: Iterations Choose this component to use a 3->1 compiled tree. Compiled Trees and their parameters are covered in detail in the Compiled Trees chapter of this manual. - 153 - 3->2 Components: 3D Vector Functions Many of these components are 2D space transforms that use a third input (called ‘z’) to control the transformation amount. Some 3->2 Components, such as Spherical Projection, transform 3D to 2D space. There are a number of specialized components useful for ArtMatic Voyager creations such for creating DFRM objects (3D objects rendered by ArtMatic Voyager) and window reflections. Most of the 3->2 components are 3D vector functions that warp or distort space. By convention, we refer to the third TIP! You can create interesting dis- input to these components as z, but you should keep in mind tortion effects for movie processing that for many of these components the “z” input is not interby connecting the Z-input to a shape preted as a spatial coordinate. The z input often acts as a conwhich moves during the animation. The trol input that influences the transformation though in some system shown at left can be used to cre- cases it may act as a third spatial coordinate for components that transform 3D space into 2D space. ate a sweeping band of distortion. Most of the components that start with “Z”, use the Z-input to control the amount of the effect (such as rotation amount or distortion amount). Many of the noise functions use the Z-input to control the phase or the noise pattern. When using such components, the Z-input can be used to animate the noise by time by connecting it to the global Z or W inputs. z Scale and Offset A: Displace X B: Displace Y C: Z Scale This component distorts the x and y inputs by scaling and offsetting the incoming values before passing them through to the left and right outputs respectively. The z input controls the amount of scaling. The A and B parameters control the x and y displacement and the C parameter scales the influence of the z input. z Scale & Offset is often used with iterative trees where the iteration value is passed to the z input to scale the space by a different amount for each iteration. It can also be used whenever you need scaling controlled by another component. Note that non-constant z values will distort the space rather than just scaling it. z Displace A: Displace X B: Displace Y C: Amplitude This component uses the z input to displace the x and y inputs independently according to the displace X and displace Y parameters. It differs from z Scale and Offset in that the value of z is added to x and y values rather than multiplying them. It has a skew effect on a simple plane. Tip: you may use z Displace whenever you need the displacement amount to be controlled by another component or by an iteration value. z Multiply x*z, y*z Scale the x and y inputs using the third (z) input to control the scaling. This is also a basic mathematical building block for creating systems from your own mathematical formulas. Tip: When used at the top of the system, this component can be used to create time-controlled (rather than parameter-controlled) zooms. Because larger values of x, y and z make objects farther away, an increasing value of z makes objects appear smaller. To use this component to zoom in, insert a 1D A/x filter before the third input as shown in the example file “z Multiply Zoom”. - 154 - COMPONENT REFERENCE: 3->2 Components Left output = x * z Right output = y * z z Weighted Multiply A: z phase x B: z phase y C: Amplitude This component multiplies the x and y inputs by the z input which can create complex interactions of the inputs. The amplitude determines the z input’s influence. There is no influence when it is 0. The A and B parameters are offsets added to z before multiplying the x and y inputs. As with z Multiply, this component can be used to scale the x and y inputs under the control of another component. Left output: (C * (z + A) * x) Right output: (C * (z + B) * y) The name of this component was changed in version 2.5. In earlier versions, it was called z Multiply. The new z Multiply provides parameter-less multiplication. z Divide, x/z, y/z This component is a useful math primitive and space distortion function. If a constant value is fed to the z input, the result is simple scaling of the space received by the x and y components. But if you send anything more interesting, you get very interesting disturbances of space. Explore sending the output of various 1->1 and 2->1 components to this component and watch what happens. The formula for the x output is x-input/z-input. The formula for the y-output is y-input/z-input. z Rotate A: Amplitude B: Phase z Rotate uses the third input to control the rotation of the space defined by the x and y inputs. When the z input has a center value of 0, nice twirl effects can be created when animating the system. Tip: you may use z Rotate whenever you need the rotation amount to be controlled by another component or by an iteration value. Parameter options allow the rotation to be set in degrees. z Rotate and Scale (expanded and updated) A: Rotation B: Scaling Amount C: Phase The z input determines the rotation and scaling of the input space. There are two algorithms: default and Exponential Scale. In the lastter, the z-input controls the level of zoom and, if connected to time, can produce a nice exponential zoom that is particularly useful for fractal set exploration. Rotation is applied independently of the z value and offset x and y will provide the zoom and rotation center. Better animation control can be achieved with this mode than using the keyframe zoom options. Parameters A (Rotation) or B (Scale Amount) determine the influence that the z input has. Phase is an offset added to the generated co-ordinates.The parameters must be non-zero for z to influence the output. This component is frequently used in iterated systems (so that the iteration number can influence both rotation and scaling) or with 2->4 XYza functions. Parameter options allow the rotation to be set in degrees. Z Sin distort A: Frequency B: Phase C: Amplitude This component is the same as z Scale and Offset with the addition of a sin filter applied to the third input. This is a nice component for creating periodic space modulations (when the x and y inputs are received from the plane or - 155 - COMPONENT REFERENCE: 3->2 Components from another vector component.) z Sin warp (amp) A: Ampl.X Warp, B: Ampl. Y Warp, C: Freq. This component performs the same function as the 2->2 version but uses the Z input to determine the amount of warping. In this example, the iteration count is sent to the Z-Input so that each iteration the warping increases with the iteration number. Z Waves A: Amplitude B: Phase Z Waves is similar to 2D Sin Warp but with the z-input modulating the displacement amount. This component can create ripple-like undulations, especially when the phase is animated. If you follow this component with the Movie or pict component, you can get interesting water-like distortion. z Twirl A: Amount x B: Offset x y C: Offset yz 3->2 implementation of 2->2 Twirl component. The Z-input controls the Twirl amount (amplitude). z Random waves A: Frequency B: Amplitude C: Phase A space distortion function that creates liquid-like wave distortions under control of the z input. The z-input modulates the amplitude of the waves. The Frequency parameter controls not only the spacing of the waves but also where they start. By adjusting the frequency, you can create effects (as shown in the example file) where only a portion of the incoming space is distorted by waves. Example file: Reflection waves, Random Waves Moonlight z Ripples A: Frequency B: Amplitude C: Phase A version of the 2D Ripples component that allows the ripples to be controlled by the z input. The Frequency parameter controls not only the spacing of the waves but also where they start. z Wipe A: Threshold B: Distortion C: Frequency Create a wipe or mask effect controlled by the z input. The component will usually take a 2D space input for the left inputs. The z input will come from a surface/texture generator that provides the wipe’s contour. Where the z input is above value set by the threshold (parameter A), z Wipe generates inifinity (which is transparent to the RGB mixing functions). Where z is below the threshold, the inputs are passed through and possibly distorted. Distortion controls how much the z value will affect the scaling of the x and y inputs before passing them through. Example files: Simple z wipe, Circuitry z wipe and Crystal Noise z wipe Two stages of the wipe performed by the Simple z wipe example whose structure is shown above. - 156 - COMPONENT REFERENCE: 3->2 Components 3D City Light & Reflection # A: Pattern # B: Amount C: Frequency This component provides window lights and reflections when designing city landscapes for ArtMatic Voyager and is a companion to 3->4 3D Tech Noise (Tech Noise provides the color texture for the buildings and City Light & Reflection provides the information about the reflections and light coming from the building windows as long as the same pattern is used for both components). The outputs are intended to mapped as extra outputs in ArtMatic Voyager . The x output value is intended to be mapped to ambient light , and the y output value should be mapped to reflections or wetness in ArtMatic Voyager. Input values. This component is intended to be used to create a color texture for ArtMatic Voyager and so it uses Voyager-based inputs. The inputs are from left to right: latitude, elevation, longitude. (I.e. the left and right inputs are the ground co-ordinates and the middle input is the Voyager elevation). Parameter A selects the pattern/city map to be used. The City Patchwork and Building series map to the patterns of the same name of the 3->4 3D Tech Noise component. The patterns maps are: 0: Building A Sharp 8: Building E Sharp 16: Building I Sharp 2: Building B Sharp 10: Building F Sharp 18: City Patchwork A Sharp 1: Building A Soft 3: Building B Soft 4: Building C Sharp 5: Building C Soft 6: Building D Sharp 7: Building D Soft 9: Building E Soft 11: Building F Soft 12: Building G Sharp 13: Building G Soft 14: Building H Sharp 15: Building H Soft 17: Building I Soft 19: City Patchwork A Soft 20: City Patchwork B Sharp 21: City Patchwork B Soft 22: City Patchwork C Sharp 23: City Patchwork C Soft When creating ArtMatic Voyager cities, set the frequency of all the “city components” to the same frequency. You can sometimes create interesting images when using different frequencies if the difference is a factor of 2. When used in conjunction with a color shader, such as 3->4 3D Tech Noise, the two components should use the pattern (parameter A) with the same name to ensure that the lights created by 3D City Light and Reflection match the colors created by the color shader. Top: As the system appears in ArtMatic. Bottom: View from Artmatic Voyager. Perspective Sym(metrical) A: Amplitude This component can be used in some cases to create perspective-type effects. When set up properly, this component creates two opposed planes which converge towards a horizon. To work as a perspective tool, you should use the Insert popup menu’s Insert Perspective command as it will supply the other components needed to give the effect. The z-input provides depth/tilt of the viewed plane. The amplitude parameter controls the tilt amount. - 157 - COMPONENT REFERENCE: 3->2 Components Perspective Clipped A: Amplitude This component is similar to Perspective Sym except that it doesn’t mirror space about the horizon. When points reach a maximum value, they are clipped to the same distance. With this effect, it is often advisable to use depth cueing to reduce noise which is likely to appear in the far distance. TIP: You can use this component to create 3D globes by using Insert Perspective and substituting the distance component for the upper-right component. You may also want to insert the Distance Mirror component after the perspective component to reduce the background noise. See the PerspectiveClip Globe file in the Doc. Example Files folder which accompanies this documentation. Parallel Projection A: Angle xy B: Angle uz When the inputs describe a 3D surface, this component creates a 2D projection or representation of it. The process is similar to the process by which a cube can be projected onto a 2D plane (such as a sheet of paper) and represented as a configuration of lines. The two parameters serve to rotate and tilt the plane onto which the surface is projected. Spherical Projection (expanded 5.0 and 6.0) Spherical projection provides several algorithms for providing spherical and cylindrical projections. Before ArtMatic 5, only one algorithn was available. Algorithms 0 and 1 are useful for mapping a 2-D image onto the surface of a sphere since they take into account the curvature of the sphere in all directions. Algorithms 2 and 3 are useful for mapping a 2-D image onto a cylinder or cylinder-like object which is curved in only one direction. The algorithm choice depends on whether the 3D space being mapped is spherical or cylindrical as demonstrated in the table below. Parameter options allow you to select the orientation. Prior to ArtMatic 6.0, orientation was along the y axis. Example: ArtMatic Voyager/2.0 examples/DFRM Objects/Basic Objects/Textured torus.vy uses a cylindrical projection Algorithms: • 0 - Spherical Projection. This was the algorithm used by ArtMatic 4.8 and earlier. It creates a virtual sphere onto which the surrounding space is projected. It can be a little bit like looking into a mirrored sphere and seeing the surrounding room captured in the mirror ball. Whether the resulting system actually has the appearance of a spherical projection depends on the inputs. It is often best to precede this component with one of the perspective components. The picture at left was created with the file Spherical Projection which can be found in the Doc. Example Files folder which accompanies this documentation. Tip: Take a look at the example file and manipulate the parameters of the topmost components and note how they are reflected in the spherical portion of the image. Note that there is a discontinuity at 2π. Output: angle(x,z), asin(y/M) • 1- Spherical Sym Projection. The absolute value of x is used which keeps the projection symmetrical and continuous. Output: angle(|x|,z), asin(y/M) • 2- Cylindrical Projection. Y is passed out unchanged. Output: angle(x,z), y • 3- Cylindrical Sym Projection. This is the same as algorithm 2 except that the absolute value of x is used to make the output symmetrical and continuous. Output: angle(|x|,z), y - 158 - COMPONENT REFERENCE: 3->2 Components • Triple Face Projection. Illustratted below. Triple Face Projection that performs a cubic projection that can be used to wrap a 2D-space around a cube. This can be used to wrap images around a cube. The middle area becomes the front/back face, the right-hand area becomes the top/bottom, the left-hand area becomes the sides. • Dome Projection • Dome Sym Projection . Illustrated below. The two dome projection algorithms areuseful for creating architectural domes by wrapping color textures around them. The center is mapped to the dome center. These algorithms minimize distortion when the slope approaches verticality. Technical Note: asin is arcsine and M is the modulus (dist(x,y,z)) used to normalize y. Tree used to for the example images. A sphere with the Spherical Projection set to algo- Spherical Projection set to algorithm 2 (cylinrithm 0 (spherical projection). Notice that it com- drical projection). Notice the squashing of the pensates for the curvature in all directions. logo. Spherical Projection set to algorithm 2 (cylindrical projection) to project the logo image onto the cylinder. - 159 - Spherical Projection set to algorithm 1 (spherical projection) to project the logo image onto the cylinder. Notice the distortion that occurs because the spherical algorithm is compensating for curvature at the top and bottom which a cylinder does not have. COMPONENT REFERENCE: 3->2 Components Triple face projection illustrated. The source image has three ‘panels’ that will be used for the faces of the cube. You could modify the tree to use 3 different images by adding the appropriate components. The tree wraps the three The compiled tree that images around a cube. lays the three images next to each other The three images are wrapped on to different faces of the cube. A dome using the Dome Projection for its texture. (File: RussianDome basilic & Monastere) - 160 - COMPONENT REFERENCE: 3->2 Components Revolution & Sweeps (expanded and renamed) Formerly Revolution Space xz. This component was vastly expanded in ArtMatic 6. This component is primarily used for constructing 3D DFRM objects for ArtMatic Voyager. It provides a number of algorithms for sweeping a 2D shape along a path (set with the algorithms popup). For example, if you rotate a vertically-oriented circle in a circular path, the result is a torus (a donut shape). Connect the inputs to 3D space and the outputs to a 2D surface (a 2->1 tile that provides the shape to be swept). Frequently, a 2D shape from 2->1 Profiles Shapes is used. The algorithms provide different paths along which the profile is swept. Revolution space returns dist(x,z) from the left output and y from the second output. In general, if the profile shape is symmetrical and bounded, the resulting volume will be open inside. If the profile is infinite in the x-minus direction, the volume will be filed. The paths are on the xz (horizontal) plane unless specified otherwise. Parameter: A: Radius. Other parameters appear for different algorithms. Examples A torus is created from the Distance component whose Amplitude is less than 0 The solid created when the 2->1 Shapes component is set to Pyramid Squared The result when 2->1 Lozenge is swept in a circular path - 161 - COMPONENT REFERENCE: 3->2 Components Complex objects can be created quite simply. Algorithms: The examples below illustrate the available path algorithms. Circle and Basic Polygonal Paths Circle Revolution Triangle Revolution - 162 - Square Revolution COMPONENT REFERENCE: 3->2 Components Circle and Basic Polygonal Paths Pentagonal Revolution Hexagonal Revolution Octal Revolution Dodecagonal Revolution Circle and Basic Polygonal paths. Paths based on regular polygons. They can be combined with logic operators to create more complex paths. This set has a single parameter: radius. • • • • • • • Circle revolution. This was the path used by the forerunner (Revolution Space xz) Triangle revolution Square revolution Pentagonal revolution Hexagonal revolution Octal revolution Dodecagonal revolution Miscellaneous Paths 1 Arc 4 Start 4 Waves N Revolution Power Sines N Revolution Rectangle U-Rectangle - 163 - COMPONENT REFERENCE: 3->2 Components Miscellaneous Paths 1 Rectangle & 4 Squares Rectangle & 4 Disks Miscellaneous Paths • Arc 4. A four-sided convex arc pattern. • Star 4. A four branch triangle pattern. • Waves N revolution. A circle modulated by sine waves. Period (parameter D) sets the number of repeats per disk. Modulation (parameter B) controls how much the disk is modified. • Power Sines N revolution. A circle modulated by powered sines. Period (parameter D) sets the number of repeats per disk. Modulation (parameter B) controls how much the disk is modified. • Rectangle. The Width (x) and Depth (z) parameters set the path dimensions. • U-Rectangle . A rectangle with a cut where radius (param C) sets the dimension of the cut and offset (param D) its depth. The Width (x) and Depth (z) parameters set the path dimensions. • Rectangle & 4 squares. A rectangle combined with 4 squares at its edges. The squares radius is controlled by param 3 and can be negative so that the squares are cutting the rectangle. • Rectangle & 4 disks. A rectangle combined with 4 circles at its edges. The circle radius is controlled by parameter C. If the radius is negative the disk will cut the edge with an arc. The offset parameter offsets the disk from the edge. Miscellaneous Paths 2 Cross Cross+Disk Lines Orthogonal Lines Radial Arc Lines Radial Disk Dented Ring - 164 - COMPONENT REFERENCE: 3->2 Components Miscellaneous Paths 2 Dented Rect (R-Points) Miscellaneous Paths 2 Dented Rect (C-Points) Dented Rect (Lines) • Cross • Cross+disk • Lines Orthogonal. Creates a set of unbounded lines in a cross pattern. Period (param D) sets the number of lines per width. Lines Orthogonal generally is best suited to cutting holes in objects (for creating windows for example) but can be used if combined with another volume to create parallel sets of shapes. • Lines Radial Arc. Creates Lines number (parameter B) of unbounded lines radiating from a central disk. Start angle (param A) defines the initial rotation of the path. Period (param D) defines the maximum number of lines and the angle between the lines. Lines Number cannot exceed Period. • Lines Radial Disk. Creates a set of bounded lines radiating from the center. Parameters are: Radius, Inner Radius,Line Width, and Period. • Dented ring. A circle surrounded by a set of “points”. • Dented rect (R-points). A rectangle surrounded by a set of squares. The exact size of the rectangle depends on the period parameter which determines the number of “dents” to create. • Dented rect (C-points). A rectangle surrounded by a set of circles. This algorithm is a useful primitive for creating a building surrounded by columns. • Dented rect (lines) . A rectangle crossed by a set of lines. Inner radius (param C) scales the size of the rectangle. Arc Paths Power Arc xz Cubic Arc xz Power Arc xy Arc Paths Cubic Arc xy • • • • Power Arc xz Cubic Arc xz Power Arc xy Cubic Arc xy - 165 - COMPONENT REFERENCE: 3->2 Components • • • • Perlin Curve Mixed Curve ZigZag Path Arch Tower Spherical disk tile A: Amplitude B: Angle xz C: Angle yz This component creates a 3D-like tiling of space that creates a series of tiles projected outwardly in a pattern such as the ones displayed. The Z-input controls the apparent distance from the point of projection (it can be considered the z co-ordinate of the three D space that defines the vantage point). The larger the value of Z, the closer one appears to be to the point of projection. Amplitude controls the tile size and overlap. As the tiles get large, they also overlap. Complex inversion A: Scale B: Amplitude This component is the same as the 2D version but uses 3D distance (the square root of x-squared plus y-squared plus z-squared). The z-input has a skew-like effect. Multi bubbles A: Amplitude B: Phase C: Z Scale This component distorts space with a bump texture, and the z input provides the scale of the bumps or bubbles. This is great for stucco-like textures. Multi inverse A: Amplitude B: Frequency C: Phase This is a complex component that creates islands of complex inversions, each one of which is a complete universe. Strange web A: Real B: Imaginary C: z Displace This component distorts space with a complex number equation that has three attractors.. The z- input along with the z displace parameter determine the strength of the distortion. Z Facet Space A: Amplitude B: Delta size C: Frequency A z-controlled version of the 2->2 Facet Space function. The z input controls the frequency of the tiling. Each tile has its own coordinate system centered at the parent space’s origin (0,0). The Amplitude parameter controls the size of the tiles. The Delta Size is a scaling/zoom factor for the space enclosed in each tile, and Frequency controls the spacing of the tiles. This component is useful both as a space distortion function and as a texture generator. As a space distortion function, it acts like a 2D vector function whose frequency is controlled by the third input. Like the 2D Orbiters component, this one creates copies of the incoming space. It acts as a space distortion component, when it is fed by a 2D space and a 1D component. When this component precedes objects (especially finite-sized objects like spheres and cubes), the result is a multitude of randomly spaced objects. When the component is used after objects, it provides cell-like textures. Example file: 3D Falling LogoBalls. Notice that there are three layers of balls with is only one real sphere in each. - 166 - COMPONENT REFERENCE: 3->2 Components The multitude of balls is created by the facet space which precedes the Sphere tile. The output is discontinuous and not advised for use with ArtMatic Voyager unless the edges of each facet are 0. z Multi Perlin Random A: Amplitude B: Octaves C: Freq This component implements 2->2 Multi Perlin Random noise with the addition of Z-input control of the distortion amount. z MultiFractal Displace A: Ampl. B: Roughness C: Freq. This component implements the 2->2 version with the addition of Z-input control of the distortion amount. 3D fractal bubbles A: Ampl. B: Roughness C: Freq. This component remaps the incoming space into layers of bubbles randomly drawn from the parent space. The Z-Input influences the phase of the pattern. Connect the Z-input to global Z or W for automated animation. Roughness influences the number of layers of bubbles. The size of the bubbles in each layer is different. Ocean & Foam (Updated 6.0) A: Wave amp B: Wavelet Amp C: Freq. This component was designed to facilitate designing custom seas for ArtMatic Voyager and behaves like a dual 3->1 component. Connect the z-input to time (Global Input W in ArtMatic Voyager mode) realistic wave motion. This component plays a key role in ArtMatic Voyager’s underwater shaders. The x-output provides the main ocean surface and the y-output provides foam. See the 44 oceanfoam and OceanFoam44.am3d example files provided with ArtMatic Voyager to see this component in action. The example at left is an ArtMatic Voyager image whose sea was created using the Ocean & Foam component. The example at right is an ArtMatic image (file: Top Sea) Random 3D Noise A: Amplitude B: Frequency C: Phase This is a 3D fractal/2D displacement function. It is a 3D version of the 2D vector (2->2) random displacement noise. The Amplitude parameter controls how much the input coordinates are displaced. Multi Perlin Random A: Ampl. B: Octaves C: Freq. This is a 3->2 implementation of Multi Perlin Random where Z controls the noise pattern. Connect the Z-input to global Z or W for automated animation. For more information about Multi Perlin Random see the 2->2 chapter of the Component Reference. - 167 - COMPONENT REFERENCE: 3->2 Components Turbulence 3D A: Amplitude B: Scale C: Phase Turbulence 3D is a 3D fractal/2D displacement function. The Amplitude parameter controls how much the input coordinates are displaced. Turbulence 3D is great for clouds, smoke, or to distort any 2D graphic function to give it a natural turbulent aspect. To distort a 3D graphic function, use the 3->3 version. This component uses adaptive resolution with band-limited output as well as the preference Max. Iterations for Fractals. Multi Fractal Displace A: Ampl. B: Roughness C: Freq. This component is similar to Z MultiFractal displace but with the Z-Input influencing the pattern/ phase of the noise rather than the noise amount (amplitude). Random Fractal Space A: Amplitude B: Phase C: Frequency Random Fractal Space can be seen as two uncorrelated 3D fractal scalar functions. It is similar to 2D fractal Space except that the fractal texture varies in three dimensions. The output is truly random (rather than simply a distortion of the input values). Generally, this component is used to “fractalize” an incoming 3D space (often coming from 3D objects) before applying a 2D texture or shader. This component uses adaptive resolution with band-limited output as well as the Max. Iterations for Fractals preference. Tips: Use this function after a Room to see the rich 3D textures. Example file: Fractal vector noise Geological Noise The next group of new components create space distortions that are especially useful for geological textures and for systems intended for ArtMatic Voyager. They can be especially useful in ArtMatic Voyager’s combination mode for adding new characteristics to the built-in planets. TIP! If you are reading this on the computer, you may want to zoom in on the illustrations in order to see details that may not be apparent at the default zoom level. Silex Fractal displace A: Ampl. B: Roughness C: Freq. This component creates spatial distortions typical of silex (silicate) geological formations. The Z-input controls the phase/distortion pattern of the noise. This component can be useful in creating surfaces for ArtMatic Voyager. ArtMatic Voyager 3D Lunar Rocks Surface by itself - 168 - COMPONENT REFERENCE: 3->2 Components 3D Lunar Rocks Modulated by Silex Fractal Displace Cliff Chaos Displace A: Ampl. B: Roughness C: Freq. Ridged Fractal Displace A: Ampl. B: Roughness C: Freq. Balanced Ridged Displace A: Ampl. B: Roughness C: Freq. This component balances distorted with undistorted areas which is very useful in ArtMatic Voyager’s Combination mode. Rocky Fractal Displace A: Ampl. B: Roughness C: Freq. Procedural/utility components Min(x,z), Min(y,z) A procedural component useful as a primitive for building your own systems and implementing your own algorithms. This component simply sets the left and right outputs to the minimum of (x and z) and (y and z) respectively. - 169 - COMPONENT REFERENCE: 3->2 Components Example File: Fractal Polynomial Max(x z), Max(y z) A: Phase x B: Phase y C: Phase z A procedural component that generates a coordinate pair made up of the maximum of x and z (for the left output) and the maximum of y and z for the right output. It is sometimes difficult to predict the effect of applying this effect before trying it as the results are highly dependent on the preceding components. It is very useful for creating interesting angular juxtapositions. Example file: “MAX 3D Room”. Max x y z, Min x y z This component uses the maximum of the three inputs for output 1 and uses the minimum of the three for output 2. Great for creating weird spatial distortions. Results vary greatly depending on the inputs. The result is often a complex mixing of the inputs. Indexed Logic utils # (new) algorithms : • Indexed Max. The left output is the index of the input with the maximum value (0 for left, 1 for middle, 2 for right). The right output is the maximum value of the inputs. • Indexed Min. The left output is the index of the input with the minimum value (0 for left, 1 for middle, 2 for right). The right output is the minimum value of the inputs. • Indexed Contour Max. This algorithm is great for creating contour lines where three surfaces meet. The left output is the index of the input with the maximum value (0 for left, 1 for middle, 2 for right). The right output is the maximum of the inputs subtracted from the previous running max. The right output result is a surface whose value is 0 where the three inputs intersect and positive everywhere else. • Indexed Contour Comp. Composite the three input surfaces where their values are greater than 0. The left output is an an index value from 0 to 2. The right output is a surface that delineates the contours of the surface intersections. A tree that used Indexed Logic Utils to create a composite texture (shown at right) Parameters: • Thickness/offset. Adds/subtracts the parameter value from the surface passed out of the right output. - 170 - COMPONENT REFERENCE: 3->2 Components • Smoothing (algorithms 1 and 2 only) The index returned by the left output is useful for shading different regions of the surface passed from output 2 differently. A gradient object or Packed Index Mixer object can be used to select different shading for the different regions. See Contour Graphics Multishaded for an example. Examples. See the Contour Graphics, Contour Graphics Multishaded, and 32 Indexed Logic example files. Gated Distance A: Threshold B: Amplitude x C: Amplitude y Gated Distance is a routing component that sends its output out either the left or right outlet depending on the distance of the incoming point from the origin (0, 0). Use this component to provide different shading for different regions of an image. The x and y inputs are treated as spatial coordinates. Parameter A provides the threshold which is used for determining the routing. Amplitude x and Amplitude y are multipliers applied to the left and right outlets respectively. In the discussion below, D refers to the distance of the point x,y from the origin. The algorithm is such that when D is above the threshold (parameter A), the incoming z value is sent to the right outlet (0 is sent to the left). When D is below the threshold, D is sent out the left outlet. When D < Threshold left outlet = B * D right outlet =0 else (when D &Mac179; Threshold) left outlet = 0 right outlet = C * z Example files: Gated distance basic is a simple example. Note that the left branch controls the shading of the central area (the points closest to the origin) and the rightmost branch controls the shading of the outer region. Experiment with the threshold parameter to see how it influences the image. polynomial LS D b is an advanced example where Gated Distance (used along with Conditional Z Set) allows the points of the fractal which approach infinity to be shaded differently than the others. Image created by the Gated Distance example file Open Compiled Tree A: Blend B: Recursion Choose this component to use a 3->2 compiled tree. Compiled trees are groups of tiles that can be used in place of single tiles as a kind of macro or subroutine. Compiled Trees and their parameters are covered in detail in the Compiled Trees chapter of this manual. 3D Fractal Sets # (new) This component provides several algorithms that implement 3D fractal surfaces and can be used with ArtMatic Voyager to create amazing images. The left-hand output is the distance field (the object surface when rendered with ArtMatic Voyager). The second output is intended for color mapping or ambient occlusion. When rendering in ArtMatic Voyager, use the Fractal Opaque object shader since it understands the particular needs of fractal objects - 171 - COMPONENT REFERENCE: 3->2 Components (such as how to deal with the infinitely high frequencies that can occur). It is recommended that you use Ambient Occlusion (a setting in the ArtMatic Voyager object options dialog) when rendering fractal objects. The fractal iterations are determined by the Maximum Iterations for Fractals setting. Some of these algorithms converge quickly at high iteration levels. 5 to 8 is generally sufficient for high levels of detail. Examples: Many examples are provided with ArtMatic Voyager. See files with fractal in the name. Parameter options. Some algorithms have paramete options: • • • • Render limit set . Normal mode where the sets is the limit volume of the iterations Render as spheres. Accumulates spheres of smaller and smaller sizes Render as cubes. Accumulates cubes of smaller and smaller sizes Render as spheres & cones. Accumulates spheres & cones of smaller and smaller sizes limit set as spheres as cubes as spheres & cones Various 3D Fractals Rendered in ArtMatic Voyager - 172 - COMPONENT REFERENCE: 3->2 Components Algorithms: • • • • • • • • • • • • • • • MandelBulb MandelBulb Julia (0, 0, -1) MandelBulb Julia MandelBulb Julia (a cos(b),a sin(b),0) MandelBulb Julia R1 (a cos(b),a sin(b),0) MandelBulb Julia R2 (a cos(b),a sin(b),0) MandelSpheres. Creates a fractal based on “Power” symmetries of rotation with spheres MandelTubes. Creates a fractal based on “Power” symmetries of rotation with cylinders Menger Sponge MandelBox + MandelBox MandelBox Julia A MandelBox Julia B Abs MandelBox. A Mandelbox-like fractal that uses ABS(z) instead of the MandelBox folding reflections Kleinian Dream A . A fractal based on spherical inversions. NFold Series Fractal sets based on mirror-rotation folding. Some sets like 8-4 and 4-2 have a dramatic sci-fi architectural look. Examples: See Voyager examples in the NFold folder. a typical NFold series fractal rendered with the render as spheres option. • • • • • • • NFold 2-2 fract NFold 3-2 fract NFold 4-2 fract NFold 5-2 fract NFold 6-3 fract NFold 8-3 fract NFold 8-4 fract - 173 - COMPONENT REFERENCE: 3->2 Components The MandelBulb tower seen in detail and far away. Manbelbulb-based coral reef - 174 - COMPONENT REFERENCE: 3->2 Components Mandel Box ABS MandelBox - 175 - COMPONENT REFERENCE: 3->2 Components An ArtMatic voyager rendering of Kleinian Dream A See Also Menger Sponge: http://en.wikipedia.org/wiki/Menger_sponge Mandelbox. Based on two spherical reflections and xyz folding, the MandelBox creates amazing architectural structures. See: http://en.wikipedia.org/wiki/Mandelbox MandelBulb: http://en.wikipedia.org/wiki/Mandelbulb - 176 - 3->3 Components The components in this group cover a wide range of applications: 3D space distortion and object creation, color/ light manipulation, and mixing. An essential in-depth discussion of function categories is found in the Getting Deeper chapter and is recommended reading for everyone. The inputs to the components are referred to as x, y, and z for the left, middle and right inputs. Keep in mind that they may or may not actually be spatial coordinates. While many of these components were designed with particular applications in mind, it is worth exploring non-typical applications. Tip: Try using the space manipulation components (rotate, sphere, etc.) as color manipulation tools. For example, insert Rotate or Sphere or 3D Random Vector components between RGB/HLS and HLS/RGB components to manipulate image color. 3D Scale (Updated) A: Scale x B: Scale y C: Scale z Scale the three inputs independently. This component can be used as a space distortion function, or as three independent parallel 1D scale filters. Parameter Options: Individual Axis and Uniform Scaling. Prior to ArtMatic 5, individual axis was used. With Individual Axis selected: xout = A * x yout = B * y zout = C * z Uniform Scaling allows all dimensions to easily be scaled by the same amount. It uses parameter A to scale all three outputs and uses B and C to for addition scaling of the Y and Z outputs. With Uniform Scaling, the formulas for the outputs are: xout = A * x yout = A* B * yzout = A * C * z 3D Offset A: Offset x B: Offset y C: Offset z Add an offset to the incoming values. xout = A + x yout = B + y 3D Rotate (expanded) zout = C + z A: Angle xy B: Angle xz C: Angle yz This component provides a few different methods of 3D rotations. While this component was designed to take a 3D space as its input, it can have an interesting affect when applied to color manipulation. Some algorithms provide both 3D rotation and 3D offset making them more efficient than the standard 3D Rotate plus an additional offset component. Algorithms: • Rotate 3 Axes. This was the algorithm used by earlier versions. Parameters A, B and C provide the rotation amounts - 177 - COMPONENT REFERENCE: 3->3 in the xy, xz and yz planes respectively. • Rotate yz (oX) & Offset z & x. Rotate the yz plane around the X axis. Parameter A controls rotation amount, and parameters B and C provide offsets along the z (depth) axis and x (horizontal) axis (the axis of rotation) respectively. • Rotate xz (oY) & Offset x & y. Rotate the xz plane around the Y axis. Parameter A controls rotation amount, and parameters B and C provide offsets along the x (horizontal) axis and y (vertical) axis. • Rotate xy (oZ) & Offset y & z. Rotate the xy plane around the Z axis. Parameter A controls rotation amount, and parameters B and C provide offsets along the y (vertical) axis and z (depth) axis. Normalise A: Magnitude This is a mathematical primitive that normalizes the incoming vectors. The vector’s magnitude is set to unity and maintains its orientation. The magnitude parameter is a scaling factor applied to the resulting vector magnitude. Formulas: xout = x / sqrt(x2 + y2 + z2) yout = y / sqrt(x2 + y2 + z2) 3D Normal zout = z / sqrt(x2 + y2 + z2) A: Magnitude B: Distribution 3D Normal uses the 3D derivative to calculate the orientation of the incoming space/object. 3D Normal generally needs to be followed by the Ax + By + CZ (the dot-product) 3->1 component to yield a meaningful lighting effect. Parameter A controls the Magnitude of the Normal vector. Distribution blends slightly different calculations. This component must actually scan the entire structure tree; when used in a compiled tree, it will not be able to access the parent’s tree and so will yield different results than when used in the parent itself. Using this component as an RGB-shader creates the illusion that red, green and blue lights are illuminating the object. Technically, this component returns the input’s normal vector. The normal is the vector perpendicular to the surface’s tangent plane. Example Files: Braque & Picasso & ArtMatic 3D Spaces (new) This component provides some useful preset 3D spaces that are especially useful for creating DFRM objects. See the 3D Spaces series of examples provided with ArtMatic Voyager to get some idea of how it is used. Parameters: the parameters vary with the algorithm. Parameter Options: orient +, orient -, orient + and offsets*10, orient - & offsets*10. The “*10” options are useful when you need offsets larger than the provided range. The +/- options only have significance when the algorithm uses absolute value, such as Bilateral Split |y|. Algorithms: • Mirror Space |x| |y| |z| . Mirrors the space in all directions by taking the absolute value of all axes. Parameters: A (unused). B ( Smoothing). C (unused). • Radial Space xz . Space is mapped to a radial space oriented along the Y axis (which is unchanged). This has the effect of turning a tall rectangle into a cylinder. The result in mathematical terms is that x becomes the angle scaled by A* 32/π. Distance(x,z) becomes z*B+C. Parameters: A: Scale X. B: Scale y. C: Offset. • Radial Space |x|z - . Radial space transformation but mirrored on the X axis. Radial space becomes problematic near the center (0, 0, 0); so, it is best to avoid havig the objects near it. Parameters: A: Scale X. B: Scale y. C: Offset. • Pyramidal Space y . The y-axis is preserved. X and Z (height and width) are remapped to a pyramidal geometry. Parameters: A: Amount. B: Scale %. C: unused. When A <0.5, space is remapped so that it is narrow at the bottom - 178 - COMPONENT REFERENCE: 3->3 and wide at the tap. When A > 0.5, the space is narrow at the top and wide at the bottom. When A = 0.5, there is no pyramidal remapping. With DFRM care must be taken. The space distortion that occurs when parameter A is high may prevent proper convergence if the camera is located within the region where space is scaled at maximum. The maximum is limited to a 16* ratio. A sets the amount of transform with 0 meaning no change. P-Space SeaShell shows an example where y is used to compensate the distorted distance field estimation. allowing the object to be rendered ok even if the camera is above the object. Quick orientation switch algorithms The next algorithms are provided for quick orientation switches. They are much faster to compute than 3->3 3D Rotate. Use these to quickly switch between front, top and side views of an object. Parameters: A: Rotation. B: Depth Axis Offset% C: Main Axis Offset %. Parameter B provides an offset along the “main axis” (the one perpendicular to the view plane. This will be Z, depth, when in xy-orientation when rotation is at 0.5% (the default). • Normal space xy, rotation oY. Normal orientation is preserved but the space is rotated and offset according to the parameters. • Top view space, xz, rotation oZ. This flips the space 90 degrees vertically so that you have a top view of the object. The effect is the same as using 3->3 Rotate to rotate yz by 90 degrees (π/2). • Side view space zy, rotation oX. This flips the space 90 degrees on its side so that you have a side view of the object. The effect is the same as using 3->3 Rotate to rotate xy by 90 degrees (π/2) • ArtMatic top view space. This mode allows you to quickly switch to a top-view of the space without having an impact on ArtMatic Voyager (which will use the normal view). This algorithm is quite useful if you are working on details and a top-view would be useful in ArtMatic but where you do not want to change the object’s orientation in ArtMatic voyager. Mirror Space Algorithms These transforms mirror the space along the vertical axis (y) or the width (x) and provide rotation along one axis. Parameters: A: Rotation %. B: Smoothing C: Offset %. • Mirror y, Rotate oX & offset z. This creates a mirror of the space (along the y axis) where the mirror can be rotated and offset. This can be useful for animating a mouth or eyelids as shown in the 24 Color Logic.vy example. Animating parameter A (the rotation) gives the effect of a horizontally-oriented “hinge” along the x-axis (the width in normal view). • Mirror y, Rotate oZ & offset x - mirror space with control over rotation and offset in one direction. This algorithm can be useful for animating a mouth or eyelids as demonstrated in the 24 Color Logic example folder. The rotation (“hinging”) is along the z-axis (depth in normal view). • Mirror x, Rotate oY & offset z - Space is mirrored around the x-axis with rotation/hinging along the y-axis (height). This is especially useful for bilateral creatures oriented along z (depth). • Mirror x, Rotate oZ & offset x - Parameters: A: Rotation %. B: Smoothing C: Offset %. The rotation (“hinging”) is along the z-axis (depth in normal view). Bilateral Split Algorithms These create a symmetrical bifurcated space mirrored along the axis in the name. This component is useful for creating rotated mirror copies or to spit an element into two branches. Parameters: A: Rotation %, B: Smoothing, C: Offset. The two spaces are offset by amount C and then rotated. When A is 0.5, the result is just a symmetrical space. The resulting space is not continuous which can be problematic for DFRM if the shapes are not placed correctly. - 179 - COMPONENT REFERENCE: 3->3 • Bilateral split |y| • Bilateral split |z| Orientable Mirror Algorithms Parameters: A: Rotation, B: Smoothing, C: Orientation. A = 0.5% is no rotation. This component mirrors the space and re-orients it by the amount specified by parameter C. When A=0.5 (no change), parameter C has no effect. • Orientable |y| & rotate oZ • Orientable |y| & rotate oX Mirror and Offset Algorithms Parameters: A: Rotation B: Smoothing C: Offset • Mirror & offset x, floor & Rotate oZ • Mirror & offset y, floor & Rotate oX 3D Repeats & Tile (expanded and renamed) formerly 3D Tile. This component provides several flavors of 3D Tiling and repetition. It is useful for creating regular tilings of space which can be useful for creating 3D objects that feature repeating patterns. The Cell Radius parameter defines the spacing between the repetitions. The repetition parameters set the number of repeats along the specified axis. For some algorithm, a fourth parameter is available and specifies an optional randomized rotation for the repeats. This rotation is useful for creating sets of plants or other objects that you don’t want to look identical. NOTE: The produced space is not continuous at cell boundaries. So, care should be taken that objects don’t extend to or beyond the cell boundary. You may need to use the value*10 parameter option to set the cell radius. Parameters: A - Tile X, B - Tile Y, C - Tile Z. The parameter range for A, B and C is 0 to 1. The parameter value sets the spacing of the tiling along the associated axis. When the parameter is 0 , there is no tiling along that axis. The Sets Algorithms are Useful for Repeating Architectural Features Overhead view of the line, rect, cross Overhead view of Array, Arch & Corand ring sets using a disk for the input. ners sets using a disk for the This Arcade patio uses the Corner mode to repeat the arcades. The same arcade element repeated with the Ring algorithm. - 180 - COMPONENT REFERENCE: 3->3 Parameter options : • Use 2/period. This option treats the parameter value as frequency. Low values increase distance while high values decrease it. At 1, the tiles overlap slightly. • Use period. Treats the parameter as the distance between the tiles. Algorithms The Infinite and Repeats algorithms repeat the input cell in a three dimensional pattern with parameters A-C setting the spacing along the three axes. The Sets algorithms are useful for architectural design and modeling. They deposit copies of the input cell along the path shape described by the algorithm. • Infinite Tile. Repeat infinitely. Parameters A-C set the distance between repetitions along x, y and z respectively. By default, repeats are along the x axis. When the parameters equal zero, no repeats are performed in that dimension. • Repeats N. Repeat a finite number of times with the number of times determined by parameter D. Parameters A - C determine the spacing for the x, y and z axes just as in Infinite Tile mode. • Sets xz : line • Sets xz : Rect • Sets xz : Cross • Sets xz : Array • Sets xz : Ring • Sets xz : Arch • Sets xz : Corners - 181 - COMPONENT REFERENCE: 3->3 3D Mirrors and Rotates # (new) This component provides several 3D space transformations that are especially useful for creating 3D objects. The transforms include a variety of rotation and mirroring algorithms along with some others. Parameters: A: Algorithm, B: N Rotate (number of rotations), C: Offset or Angle A l g o r i t h m s I l l us t r a t e d ( 3 D M i r r o r s Untransformed Obelisk. 0 Mirror N xy sharp and Rotates) The tree used for the examples: Mirror each tile/branch and perform N rotations using rotational symmetry with respect to the xy plane. 1 Mirror N xy smooth 2 Rotate N xy N symmetrical rotations with respect to the xy plane. - 182 - COMPONENT REFERENCE: 3->3 3 Mirror N xz sharp 4 The same as algorithm 0 but with respect to the xz plane The same as the previous but with smoothing. Mirror N xz smooth 5 Rotate N xz The same as #2 but with respect to the xz plane. 6 Helix in Y Create a helical transformation of the space with respect to the y axis. Note: it is sometimes useful to use 3D Offset after this component. 07 Mirror N xz & Rotate 30 zy Rotational symmetry with respect to the xz plane plus a rotation of 30° in the zy plane - 183 - COMPONENT REFERENCE: 3->3 08 Mirror N xz & Rotate -30 zy Same as previous but with -30° rotation in zy. In each of the previous algorithms (0 - 8), parameter C controls the rotation center’s offset while parameter B (N) controls the number of symmetries of rotations. In algorthms 9 - 15, the parameter C controls the vertical rotation or the spread rather than the offset. 09 Mirror N xz & tilt C y Mirror symmetry of the input with radial symmetries with respect to the xz axis plus a rotation of -C° in the zy plane. Parameter C controls the vertical rotation in this algorithm (while in algorithms 0 through 8 it controlled the offset). The upper example shows C = 2 while the lower example has C=60. 10 Mirror N xz & tilt -C z Essentially, the upside down version of the previous algorithm. 11 Rotate N xz & Spread Radial symmetry without mirroring plus a randomized offset for each rotation. Parameter C controls the angle by which the rotations are spread - 184 - COMPONENT REFERENCE: 3->3 12 Rotate N xz & Spread & Bend Up The same as the previous algorithm with the addition of bending in the zy plane. This is especially useful for creating flowers and fluted textures. 13 Rotate N xz & Spread & Bend Down The same as the previous algorithm but with a downward bend. 14 Rotate N xz & Branch 3 Radial symmetry with 3 repetitions to create a branched structure. Parameter C is the spreading angle. 15 Rotate N xz Random xz symmetries with randomized rotations and offset with a spread of -C° in the zy plane. N-Fold Mirrors & Offset # (new) This component implements rotational mirroring. It is similar to Mirrors & Rotates but offers a choice of orientations. Parameters: Parameters B, C, and D provide post-rotation offsets in each dimension. Parameter A sets the pre-folding rotation of the space. The resulting space has N symmetrical branches. This component is often used with 2->1 Profiles Shapes or 3->4 Uvid Sweep Volumes. The parameter options sets the number of rotational symmetries. Algorithms: • xy plane NFold mirror x+ • xz plane NFold mirror x+ - 185 - COMPONENT REFERENCE: 3->3 • • • • yz plane NFold mirror y+ xy plane NFold mirror xxz plane NFold mirror xyz plane NFold mirror y- 3D Distorts and Bends (new in 5.0; Expanded in 6.0) This component provides a variety of 3D space distortion effects that are particularly useful for warping simple 3D primitives into complex shapes.It is generally used to modify the shape of objects by being used above them in the structure tree (which warps objects by modifying the space in which they occur). Parameters: A - Algorithm, B - Amount, C - Scale/Period. Example files: See the examples provided with ArtMatic Voyager: 2.0 Examples/DFRM Objects/Space distort objects Spread Gaudi Plant example. Application notes Here are some examples to give you an idea of how you might use these algorithms. For a fish oriented along the z-axis (the depth axis), to undulate the left and right pectoral fins, you would use Undulate Y in Zx with the sideways option. To undulate a vertical antenna or tentacle (i.e. one oriented along the Y axis), you would use Undulate Z in Yx. In other words, undulate back-and-forth (the z-axis) with respect with optional sideways motion to the left and right (the horizontal/x-axis). Several of the new algorithms feature automatic undulations. These should not be applied to animating clusters unless you want the cluster motion to be in sync. To animate clusters in a more natural way (where there is variation within the cluster), use 4->3 w Space Distorts as its fourth input provides an undulation signal whose frequency and phase is different for each instance. - 186 - COMPONENT REFERENCE: 3->3 Algorithm Name Conventions The algorithms use the following conventions in their names. A capitalized X, Y or Z indicates an axis of motion or orientation. A lower-case x,y or z indicates a direction that only applies if the appropriate parameter option is selected. For example, Undulate Y in Zx indicates that there will be undulations of the Y direction (vertical) along the Z (depth) axis and that there can be optional motion along x (the horizontal direction). Parameter options are available for most algorithms: apply everywhere, fade near center, log increase, main dir +, main dir -, sideways, sideways opposite, opposite fades. Algorithms Illustrated (3D Distorts and Bends) The images below were created by applying Distorts and Bends to a an object cluster made up of two intersecting cylinders and a sphere. The camera is facing northwest. The thick cylinder runs along the x axis. Setup undistorted 0 Dist xz ripples y Distort the space vertically using formula: sin(dist* scale) * amount. Ex. 1. Amount =-2 Ex, 2 Amount = 2 1 Dist xz bend y Bend the space vertically by an amount that is a function of the distance to to the center (0) of the xz plane. - 187 - COMPONENT REFERENCE: 3->3 2 xy Plane Bend 3 zy Plane Bend 4 yx Plane Bend 5 Rotate xz by y Vertical twirl of the space by amount * scale 6 Warp y Distort the space’s scale on the y axis - 188 - COMPONENT REFERENCE: 3->3 7 Warp Dist Distort the space proportional to its distance from the center (0). 8 Cylindrical bumps Cylindrical coordinate displacement pattern (angle(x,z),y). This works nicely for objects of revolution and branches. Strong displacements can result in poor convergence. If there are artifacts even at Best and Sublime quality, the amount of distortion should be reduced. 9 Cylindrical & y bumps 10 Cylindrical & y spikes 11 Cylindrical randomize - 189 - COMPONENT REFERENCE: 3->3 12 Spherical bumps Spherical coordinate displacement patterns. Equations: (angle(x,z),angle(y,dist)) 13 Spherical spikes 14 Spherical ripples Undulations. There are now algorithms to undulate shapes over time which is essential for animating creatures without having to keyframe every motion. See the OLife series examples for creatures that make use of this function. 15 Undulate Y Vertical undulations that proceed along the z axis (depth). In other words, undulations up and down that move from front to back when applied to and object aligned with the z (front/ back) axis. With the sideways option, it can be used to undulate lateral fish fins. 16 Undulate Y in Zy. Vertical undulations with With ‘sideways’ option applying to y it can be used to undulate dorsal fish fins. in Zx - 190 - COMPONENT REFERENCE: 3->3 17 Undulate X in Zy Snake-like left-right undulations proceeding from front to back 18 Undulate X in Yz Back-and-forth (left/right) undulations of the vertical axis such as you might use for undulating vertical tentacles or seaweed. 19 Undulate Z in Yx Front/back undulations along the vertical axis, such as you might use for undulating vertical tentacles or seaweed. Radial undulations group Radial undulations create displacements radiate from the center and move along the named axis. 20 Undulate radially in Yx . Vertical radial undulations. 21 Undulate radially in Zx Radial undulations along the z (depth) axis. - 191 - COMPONENT REFERENCE: 3->3 22 Undulate Spherically Yx Undulates radiate outwards spherically from the origin. Random Displacement Algorithms. These algorithms are automatically animated. Example: The file Random Displace Demo.vy demonstrates two ways of using the Random Displace algorithms to animate tentacle-like appendages. Random Displace X Random displacement (in the yz plane) along the X axis using low frequency noise animated over time. Random Displace Y Random displacement (in the xz plane) along the Y-axis using low frequency noise animated over time. Random Displace Z Random displacement (in the xy plane) along the Z-axis using low frequency noise animated over time. Polar Sine Undulations. The 3 polar sines algorithms undulate radially perpendicular to the main axis. For example, Polar Sines Y undulate radially in the xz plane. These undulations are not automatically animated. Polar Sines X Polar Sines Y Polar Sines Z Time Ripples xy in Z Automatically animated ripples in the xy plane that radiate from the Z axis. Time ripples xz in Y Automatically animated ripples in the xz plane that radiate from the Y axis. Power bend z in |Y| Bends an object in the Z direction (depth) with the amount of bending determined by 2y. This algorithm can be useful for bending a triangular dorsal fin into a more natural shape, for example. The amount should be set carefully to avoid problems with convergence. Power bend y in |X| Bends an object in the Y dimension (height) with the amount of bending being determined by 2x. This algorithm can be useful for bending lateral fins up and down on a z-oriented fish, for example. - 192 - COMPONENT REFERENCE: 3->3 Parameter Options. 8 parameter options are available. The options adapt the basic algorithm. Several options allow the distortion amount to be faded. When fading is performed,t he fading (for parameter options that perform fading) depends on the scale/period parameter for those algorithms that fade the distortion (usually near 0). • Apply everywhere. Apply the distortion everywhere. • Fade near center. Reduce (fade) the distortion around 0 on the main axis. • Log increase. Increase the distortion logarithmically with respect to the main axis. Distortion amplitude increases with the logarithm of the distance. This results in distortion only for positive values of the main axis. • Main dir + . The distortion is applied only where the main axis has positive values and fades to 0 where the main axis is 0. • Main dir - . The same as main+ but with distortion applied only where the main axis is negative. • Sideways. The distortion fades to 0 along the secondary axis. For example, when sideways is the option for Undulate Z in Yx, the distortion fades to 0 as one moves away from the horizontal (X) 0. Normally, the fade to 0 would fade to 0 along the vertical (Y) axis. Fade Near Center applied to Undulate Z in Y. The ‘zero’ point is on the vertical axis. Sideways sets the ‘zero’ point along the X axis. • Sideways opposite. Similar to sideways but for those algorithms that are animated by time (such as Undulate Z in Yx) the distortion moves in opposite directions on either side of the center. • Opposite fades. The distortion amplitude fades to 0 in the middle but the modulation is applied in opposite directions for the + and - values. For example, with Undulate Z in Yx, the undulations move upwards for the upper half and downwards in the lower half. Algorithm Changes from ArtMatic 5.0 to ArtMatic 6.0 ArtMatic 5’s x Bend, y Bend, and z Bend were renamed in version 6 as Xy Plane Bend, Zy Plane Bend and Yx Plane. The behavior also changed. In version 5, these were symmetrical bends where positive and negative values on the main axis were bent in the same direction. In 6.0, the algorithms were updated and they are no longer the same for positive and negative values. To accomplish the earlier versions symmetry insert a 1->1 ABS component on the main axis (i.e. the X axis for the Xy bend, the Z axis for Zy, etc.). - 193 - COMPONENT REFERENCE: 3->3 x Bend applied to a rectangular plate in ArtMatic 5 Xy Plane Bend (which replaces x Bend in ArtMatic 6.0). Insert a 1->1 Abs component on the main axis to achieve the symmetry provided by the ArtMatic 5 version of the algorithm. 3D sphere A A: Angle xz B: Amplitude y C: Displace z Create a pseudo-3D sphere. This 3D object behaves a bit differently than the other 3D objects. It is not a true 3D sphere, and, as a result, infinity is not used as the value for the regions outside of the sphere. The sphere appears against the same background that provides its surface texture. 3D sphere B A: Offset x B: Offset y C: Offset z Create a true 3D sphere. The region outside of the sphere is given the value infinity (which is treated as transparent by many of the mixing components). To rotate the sphere, place a 3D rotation component after the sphere. To move the sphere in an orbit, place a rotation before the sphere. 3D plane A: Banking x B: Plane Offset C: z Slope Create a 3D plane which can be banked and tilted. Like all 3D object components, the area outside the object is mapped to infinity (which is painted with the first auxiliary color -- the depth cueing color.) The components which follow the plane component provide the surface’s texture. Banking x controls the horizontal tilt, Plane offset provides - 194 - COMPONENT REFERENCE: 3->3 an altitude offset, and z Slope controls the forward/back tilt. 3D Tube A: Offset x B: Offset y C: Radius Create a 3D tunnel. Parametric face A: Angle xy B: Angle zx C: Offset z A bounded 3d plane (i.e. the face of a cube). The first two inputs control the face’s texture. The third input represents the distance which allows you to control the object’s distance from the ‘camera’ by adjusting the z (third) input. See the examples Logo ParamPlane Additer and Logo Pump. Parametric plane A: Angle xy B: Angle zx C: Offset z A 3D plane. The first two inputs control the plane’s texture. The third input represents the distance which allows you to control the object’s distance from the ‘camera’ by adjusting the z (third) input. The z value can set by the Iteration component when you need a series of 3D parallel planes. A non-constant z input will cause the plane to be distorted. The X & Z (first & last) outputs should be used for 2D texturing. See the examples Logo ParamPlane Additer and Logo Pump. 3D elevation slices A: Scale B: Slope C: Offset z This is an advanced component that makes certain kinds of 3D modelling possible. This component can be used to visualize 2D surfaces or terrains by iteratively drawing slices over the z-axis. Since true 3D modelling is beyond ArtMatic’s current capabilities, this component was added to simulate 3D rendering of some systems. The third input must be connected to a 2->1 function to be evaluated or to a 2->1 compiled tree. The first two inputs determine the points to be evaluated. Scale acts as a magnification control. Slope controls angle of view of the 3D space. Offset controls the spacing of the slices on the z axis. Examples: Look for the word ‘elevation’ in the examples library for examples of this component. 3D density slices A: Scale B: Surface level C: Offset z Another component for simulating 3D modeling. This component works by taking an input function and sampling it iteratively over the z-axis. It is a primitive sort of volumetric rendering. The slices are limited to a plane bounded by -Pi and +Pi on the z-axis. The third input must be connected to a 3->1 component which will be the function to evaluated iteratively. Examples: Look for the word ‘density’ in the examples library for examples of this component.Memory Functions The next several components (all with Memory in their names) are intended for use in (and are only meaningful in) iterative systems which are discussed in detail in the chapter Compiled Trees and Iteration. Memory Components Below are brief summaries of the memory components. Memory components are covered in detail in the chapter Memory Components. Memory components are used in looped/iterated/recursive trees to combine the results of each pass through the loop. These components are only meaningful in such trees. We recommend performing the - 195 - COMPONENT REFERENCE: 3->3 Compiled Trees and Iteration tutorial in order to best understand how these components work. See the chapter Compiled Trees and Iteration for more information about iterative systems and memory components. Memory Min Memory Min is something of a complement to Memory Max. Rather than retaining the maximum values, it retains the minimum values. This is useful for accumulating dark graphics against bright backgrounds in iterative systems. Memory Max This component stores the maximum of the current iteration and the stored values with the fourth input scaling the incoming values. Memory Add A: Start value This component adds the value of each iteration to the value accumulated in the previous iteration with the fourth input scaling the incoming values. Memory Diff Memory Diff, like all memory components, is used to combine the iterations of a looping tree. This component subtracts each iteration’s pixel values from the accumulated image’s. See the chapter Memory Components for details about Memory Diff and the other memory (accumulator) components. Memory Depth Sort This component is a memory-based version of the other depth sort functions. Rather than performing a depth sort between two sets of inputs, the depth sort is performed between the current set of values and the stored values from the previous iteration. Depth Sort preserves the values that correspond to the frontmost pixel when the three values are considered as 3D position. The frontmost pixel corresponds to the value with the lowest valued z (third) coordinate. This component is useful for accumulating 3D objects in recursive and iterative trees. Memory Packed Alpha A: A Threshold B: Feather This is an accumulating version of the 3->3 Packed RGB Alpha component designed to be used in iterated trees. Usually, inputs 1 and 2 will be packed RGB streams and input 3 will be a simple value. As demonstrated below, adjusting the threshold can have a dramatic effect. When using this component. It is important to explore how the threshold value influences the image. See the chapter Memory Components for a detailed illustrated example. 3D color textures 3D Sines A: Amplitude B: Phase C: Frequency 3D math primitive which generates sin(x) in the red channel, sin(y) in the green channel and sin(z) in the blue channel. This periodic component is equivalent to three parallel 1D sine filters. - 196 - COMPONENT REFERENCE: 3->3 3D Color techno noise A: Amplitude B: Phase C: Frequency An RGB version of the 3->1 3D Techno Noise. Example files: “3D Color Techno River” and “Triple pict projection”. 3D Color Strata stone A: Chroma B:Distortion C: Frequency RGB version of the 3->1 3D Stratified Noise. The Chroma parameter interpolates between color and grayscale output. Parameter B controls the amount of vertical distortion. 3D Color Marble A:Hue Rotation B: Saturation C: Frequency 3D color shading function that creates a veined, marble-like texture. Hue Rotation controls the color range of the resulting texture while Saturation controls the color saturation, and Frequency controls the spacing of the veins. 3D Color Bubbles A: Amplitude B: Phase C: Frequency RGB shading function that provides randomly shaped and colored bubbles. 3D color spots A: Chroma B: Phase C: Frequency An RGB version of the 3->1 3D Spots noise function. The Chroma parameter interpolates between color and grayscale output. Max to Gradient A: Amplitude X B: Amplitude Y C: Amplitude Z Treat the three inputs as three surfaces (fx, fy, fz). For each point, the output is the maximum of fx, fy and fz. If the maximum is fx, the left part of the gradient provides the color. If the maximum is fy, the middle of the gradient is used. If the maximum is fz, the righthand part of the gradient is used. The Amplitude parameter sets the range of colors of the gradient that is used (with a value of 0 a constant color is used for each area). For more information - 197 - COMPONENT REFERENCE: 3->3 and an illustration, see the discussion of the 2->3 version of this component. Note: Max to Gradient was designed to be used with ArtMatic Voyager to provide colors for a surface based on the maximum of the inputs (as with the 3/1 MinMax) component. Each “winner” of the maximum will have its own color. Color manipulation Saturation & Lum A: Saturation B: Brightness This component provides direct control of the saturation and luminosity of the incoming RGB values. The output values are restricted to a valid range. (No negative values are passed out.) Color Controls # (Updated) A: Amount B: Red Balance C: Blue Balance Renamed from Colorize and vastly expanded. This component provides various useful algorithms for color adjustment. Algorithms: • Colorize. The original algorithm. A color filter function that lets you desaturate and tint an incoming RGB stream. With this component, you can simulate the look of ìcolorizedî images and sepia tones, and it provides a useful control for the colors created by the various RGB texture primitives.When the Amount parameter is 0, there is no effect. When the slider is all the way to the right, the image is a tinted monochrome image whose tint is determined by parameters B and C (red balance and blue balance) which determine the red and blue value for the colorization tint. When Amount is at the maximum and parameters B & C are 0, the resulting tint is green. • Color Floor. Provides control of the minimum level for each color channel Red (parameter A), Green (B), and Blue (C). When the parameter is at 0 is simply prevents negative color values. • Color Clip. Clip the color values to a nominal range of 0-8. Many of the RGB components do this implicitly, but this algorithm clips color values to optimal ranges if non-safe components were used for color manipulation. The parameters provide an offset value for each color channel: Red (A), Green (B), Blue (C). • RGB Contrast. Independent contrast control of the three color channels: Red (A), Green (B), Blue (C). The output is clipped to the nominal safe range • Multiply. The RGB Color defined by parameters A, B and C is multiplied against the input values. • Monochrome. The parameters define a tint that is applied to a monochrome version of the input values. RGB Contrast A: Contrast Amount B: Offset A component for controlling the contrast of RGB images. When the Contrast parameter is 0, there is no effect. At the maximum value, there are only two output values. The offset parameter controls the contrast divide point. With RGB output, the offset adjusts the overall luminosity. Colors are clamped to valid ranges (no negative values). See the example RGB Primary Dots Dither. Color Shift (new) Like the 4->4 version, this component controls hue, saturation and luminosity and clamps the colors to valid nominal ranges (0 - 8). - 198 - COMPONENT REFERENCE: 3->3 HLS to RGB A: Hue Contrast B: Luminance Contrast C: Saturation Contrast Colorspace function that converts an HLS-based color stream back to RGB. This component is almost always used at some point following an RGB to HLS component. By inserting components between this component and the HLS to RGB component, you can manipulate the hue, luminance and saturation of an image which make many interesting color manipulations possible. Example files: Search for HLS to find the many examples of HLS manipulation. RGB to HLS A: Amplitude Colorspace function that converts RGB-based color to HLS (hue, luminance, saturation). By inserting components between this component and the HLS to RGB component, you can manipulate the hue, luminance and saturation of an image which make many interesting color manipulations possible. Example files: Search for HLS to find the many examples of HLS manipulation. RGB Gamma A: Gamma Red B: Gamma Green C: Gamma Blue Color manipulation function that provides independent control of the gamma (color response curve) of the red, green and blue channels. RGB Gaussian A: Offset X B: Offset Y C: Offset Z A gaussian filter is applied in parallel to the X Y Z inputs. The Offset parameter for each input displaces the center position of the gaussian curves. When applied to spatial inputs. RGB gaussian creates symetrical bands on each axis. RGB Dither A: Amplitude Add high frequency random noise to the RGB inputs. When using direct RGB systems (systems with 3 outputs), RGB dither can be added at the end of the tree before the final quantization into 8 bit per channel RGB to minimize banding and color quantization artifacts. This function’s noise algorithm is independent of the canvas’ current zoom and position. RGB Quantize A: Frequency B: Phase C: Amplitude Similar to the 1->1 Quantize component but operates on all inputs simultaneously. When applied to RGB output, it reduces the number of output colors. Conditional z set A: Threshold B: Minimum This is an advanced component that can be used to create ‘levelset’-type shading when implementing classical-style fractals such as the Mandelbrot or Julia sets. When the distance (of the x, y inputs from the origin (0, 0)) is above the Threshold parameter or below the Minimum parameter the incoming z value is passed to the third outlet otherwise 0 is sent out the third outlet. x and y are passed through unchanged to the left and middle outlets. Hence, when x,y is within a specific range, the third outlet is non-zero and can be used for shading. Generally, the z-input will be connected to the output of the Iteration component in a system with memory compo- 199 - COMPONENT REFERENCE: 3->3 nents. In such a system, it is possible to color a point whose value is infinity with a color related to the number of iterations required to reach infinity. This component can also be used to create distance masking as in the Clock example file. Example files: Fractal polynomial demonstrates the levelset shading technique described above. Clock and Clock Face demonstrate distance masking. 3D Random vector A: Amplitude B: Phase C: Frequency 3D space distortion function. Place this after a 3D object to provide surface texture. If you place a noise component before a 3D object, you will warp the space in which the object exists (and thus warp the object). This is a distortion-type noise whose output is made up of randomized modulations of the input values. 3D Multi Perlin displace A: Amplitude B: Octaves C: Frequency This component sums a series of 3D Perlin noise functions with the frequency doubling for each function in the series. The maximum value for the Octaves parameter is 128 (27) and provides seven ‘octaves’. This component allows very fine control of the frequency content. It is especially useful when used with very low frequency values to create surfaces for ArtMatic Voyager. See also 2D Multi Perlin noise and the 3->1 scalar version of 3D Multi Perlin noise. 3D Fractal Displace A: Amplitude B: Phase C: Frequency Fractal version of the 3D Random vector component. Like the other fractal noise components, there are many frequencies of noise and the complexity/detail can be adjusted with the Max. Iterations for Fractals preference. This function is a great primitive for marble or clouds or any complicated non-repeating texture. 3D Time Turbulence (updated and renamed) A: Amplitude B: Feedback C: Frequency D: Pace Formerly 3D Turbulence. A 3D fractal vector displacement function with feedback. The feedback parameter causes displacements of lower frequencies to be added to the higher frequencies. It is a good primitive for 3D fractal flow and smoke. This component is automatically modulated by time (even when locked). Parameter D, Pace, controls the speed of the time-related animation. ArtMatic 5 and earlier used a constant value of Pi. Additional 3D color textures 3D Perlin Vector Noise A: Amplitude B: Phase C: Frequency Returns the absolute value of three independent 3D vector Perlin noise functions. It is a useful primitive for creating random RGB gradient curves. Use the phase parameter to select the colors. - 200 - COMPONENT REFERENCE: 3->3 3D Color Perlin Noise A: Hue Rotation B: Saturation C: Frequency A color texture based on scalar Perlin noise. 3D Color fractal noise A: Amplitude B: Phase C: Frequency This component is the RGB equivalent of the 2->3 Random Fractal noise function. The Amplitude augments the contrast of the R G & B channels. This component yields interesting effects when combined with other color texture functions. Color fractal noise can also be used as a space displacement function. Example files: “Solid Color Room”. Notice that in this example, the noise is modulated with 3x3 matrix multiplication which is found in the compiled tree at the bottom of the system. 3D Color MultiFractal A: Amplitude B: Phase C: Frequency 3D fractal noise with varying fractal dimension (roughness) created by summing 3D Perlin noise functions at increasing frequencies for each R G B channel. It can be used as a multifractal displacement function when it is connected at the top of a three input system. 3D Caustics A: Amplitude B: Phase C: Frequency A 3D fractal vector function that simulates caustics. Caustics are the patterns formed when a point light source is reflected or refracted by a curved surface -- such as one sees on the bottom of a swimming pool on a sunny day. This component is based on ridged Perlin noise. It generates RGB caustic-like shapes. You can use the Colorize component to modify the colors to give a bluish-watery caustic look. The Phase parameter can be used to create convincing, natural-looking animation. Packed Mixer Family The group of components whose names include ‘packed’ is used for mixing packed streams -- usually from RGB components or branches. When infinity is encountered in one of the inputs, it is treated as transparent. These functions can accept both packed and unpacked inputs. When the third input is treated as an alpha channel, the output will be infinity where the input is infinity. Packed RGB crossfade A: Interpolate AB B: Interpolate C Crossfade between three RGB images. See the description of the 2->3 version for a more detailed description. The parameters determine the contribution that the inputs make to the final output. - 201 - COMPONENT REFERENCE: 3->3 Packed RGB alpha A: Threshold B: Feather Mix two RGB-based images while applying an alpha (transparency) mask provided by the third input. The third input will usually be a simple value (non-packed stream) and acts as an alpha channel for masking the inputs. If the third input is a packed stream then the effect is a complex mixing of the first two images treating the R, G and B layers of the third image as masks to apply to the red, green and blue layers separately. Packed RGB add A: Level in1 B: Level in2 C: Level in3 Perform an additive mix of the three inputs. Packed RGB max A: Level in1 B: Level in2 C: Level in3 Mix three images by comparing the corresponding pixels of each image and picking the brightest pixel of the three at each pixel position. Interesting color effects are possible. Try using a picture of sky and clouds and watch the clouds jump to the foreground in front of the other images. Packed Add & Mul A: Level A B: Level B C: Multiply C Perform an additive mix of inputs a and b and filter the result with input c. Parameters A and B control the mix of inputs a and b. Parameter C determines how much filtering input c provides. Example file: Golden spinal fossil is an example in which the c-input is used for specular highlights. The b-input provides diffuse illumination, and the a-input is the basic surface whose altitude determines the color. Packed Mul & Add A: Level A B: Multiply B C: Level C A packed mixing component similar to Packed Add & Mul with the multiplication and addition reversed hence yielding different results. Packed depth sort A: z offset This component mixes three 3D objects into a single set of 3D outputs. The inputs should be the packed outputs of 3D objects. See the documentation which covers the 2->3 version for more information. This component should always receive its input from Pack components (whose input is from 3D object objects). The algorithm is such that for each set of points received, the set with the lowest value of z wins; in other words, the coordinates closest to the viewer win. - 202 - 3->4 Components 3->4 components generally serve as either color texture components that output RGB+Alpha, color texture + elevation components for ArtMatic Voyager, or packed mixers. Oftentimes, these components are treated as 3->3 components by ignoring the fourth output. Many 3->4 components have a related 2->4. 1->4, 2->3 or 1->4 counterpart. A number of 3->4 Components are especially useful for creating DFRM objects (3D objects rendered by ArtMatic Voayger. Inputs and outputs. The color texture component inputs can be either a 3D space or a 2D space plus a controller input. It is often useful to precede these tiles with the 2->3 Z Set component in order to set the Z-input value (when you want a constant value for Z). It is often useful to feed the Z input with the output of a 2->1 or 3->1 component. Top. ArtMatic Pro side view of a 3D color texture for ArtMatic Voyager based on Z Sulfur Fiberrock. Bottom. The Planet B surface as seen when the tree at left is used as the color texture. Tree notes. Sulfur Fiberrock’s fourth output is not used in this tree--in many cases 3->4 color textures are used as 3->3 functions by ignoring the fourth output. Notice the swapping of Global Inputs Y & Z (often used to set the orientation of 3-input color textures used in ArtMatic Voyager). Fourth Output. The fourth output is often useful for masks or highlights. Some components were designed with ArtMatic Voyager in rock as seen in RGB Alpha Bump mind and the fourth output provides an alpha channel that also color mode. Use the RGB Alpha makes sense as an elevation map. The RGB Alpha Bump color Bump color mode to create 3D color mode will create a nice 3D effect in ArtMatic Pro when used with textures. many 3->4 components. The output of 3->4 Z Sulfur Fiber- Color Shape Primitives These components are 3-input versions of 2->4 components. The third input is used to shift the color. The fourth output can be treated as either an alpha channel or elevation map with the same outline as the shape and peak values at the center. For more information about these components, see the 2->4 Components chapter. Left. Color Polygon RGB output. Middle. Color Polygon fourth output. Right. Color Polygon as seen with RGB+Alpha bump shading. Using the third Input. The third input can be used to modulate the color with the output of another component. In this tree, a 2->1 Grid is used to shift the color of the Color Circle. - 203 - REFERENCE: 3->4 Components Color Polygon N A: Sides B: Radius C: Color Cycle Color Circle A: Amplitude B: Radius C: Color Cycle Color Line A: Rotation B: Size C: Color Cycle Color Neon Line A: Rotation B: Size C: Color Cycle Gaussian Dot A: Amplitude B: Radius C: Color Cycle Color Patterns and Noise These components create various color patterns. The Z input can be considered either a dimensional input (in which case the component is a true 3D texture) or a controller that influences the output color or pattern. The fourth input’s significance will depend on how the component is used. It can be used as an alpha mask/channel, or as an ArtMatic Voyager elevation map, or not used at all (which makes the component function as a 3->3 true 3D color texture). Many of these components yield lovely 3D textures when the RGB Alpha Bump color shader is used. Random Verticals A: Ampl. B: Color Cycle C: Freq. Random Verticals creates a pattern of randomly-spaced vertical stripes. The Z input shifts the color. There is a related 1->4 component. Top view at left. Side view at right. Mondrian A: Amplitude B: Color Cycle C: Frequency Three-input version of 2->4 Mondrian. The Z input influences both color and pattern. Left. Mondrian Z-Input fed by a Grid. Middle. Top (normal) view. Right. Side view. z Random Polygons A: Ampl. B: Color Cycle C: Freq. Three-input version of the 2->4 Random Polygons pattern. The Z input influences the polygon pattern. The images were created with Z at 0, 0.36 and 1.0. - 204 - REFERENCE: 3->4 Components L Maze A: Amplitude B: Color Cycle C: Frequency The Z-input influences the line width. The images were created with Z at 1, 3 and 8. O Maze A: Amplitude B: Color Cycle C: Frequency The Z-input influences the density of the maze. The images were created with Z at 1, 3 and 8. R Maze A: Amplitude B: Color Cycle C: Frequency The Z-input influences the density of the maze and the color. The maze is only visible when z is between 1.2 and 4. When Z is outside this range, the output is a single undifferentiated color. At left, R Maze with z at 1.6, 3, and 3.8. z matrix lights A: Ampl. B: Color Cycle C: Freq. Z Matrix Lights provides a pattern of colored lights. The Z input influences the color, density and spacing of the lights. The images at left were created with Z at 1, 2, and 5. z LED Array A: Ampl. B: Color Cycle C: Freq. Z Led Array creates a pattern reminiscent of blinking LEDs. The Z input influences the light pattern. z Square LEDs A: Ampl. B: Color Cycle C: Freq. Z Square LEDs creates a pattern reminiscent of blinking LEDs. The Z input influences the light pattern. - 205 - REFERENCE: 3->4 Components 3D Tech Noise (Expanded 6.0) A: Pattern # B: Color Cycle C: Frequency This component provides a set of vibrant “techno” patterns that can be used both for designing ArtMatic Voyager cities and for creating techno patterns in ArtMatic. Parameter A is used to select the pattern created by the component. The City Patchwork patterns provide sets of building textures for use in ArtMatic Voyager. A particular building texture is determined by the ground position using the street network pattern. For this reason, this component will usually be used with other components that share the same “city” patterns. The frequency of the component must match the frequency of the street network (often provided by 2->1 Tech Noise) to avoid a building being cut in half by a street. When designing ArtMatic Voyager cities , this component is often used in conjunction with these related components: 3->2 City Light and Reflection, 2->4 Tech Noise and 2->1 Tech Noise. Input and output values. This component is intended to be used to create a color texture for ArtMatic Voyager and so it uses Voyager-based inputs. The inputs are from left to right: latitude, elevation, longitude. (I.e. the left and right inputs are the ground co-ordinates and the middle input is the Voyager elevation). The output values are RGB from the leftmost inputs and is used in Voyager to provide the color shading for buildings. The fourth output is an alpha value intended to be used as an extra output in Voyager. Typically, it is mapped (in ArtMatic Voyager) to “Normal” to provide embossing of the window frames. Notice the structure of this tree. The ground co-ordinates (the left and right tile inputs) are passed in from the global inputs. The middle input (elevation) is passed in from the 2->1 Tech Noise component which supplies the building elevations. The 3D Tech Noise’ fourth output is mapped as an extra output in ArtMatic Voyager where it is used as the “Normal” to provide embossing of the window frames. 3->2 City Light and Reflection is used to provide reflection values so that Voyager can reflect scenery from the building windows. An ArtMatic Voyager image created from the tree shown above. The patterns (algorithns) come in “soft” and “hard” styles. The smooth style is sometimes preferred when designing systems for ArtMatic Voyager as these textures are not band-limited which makes them prone to aliasing when used in Voyager. Algorithms: • • • • • • • • • • • • • Random Cube Grid Cube Edge Grid Building A Building B Building C Techno Maze H Grid Computer Room City Blocks Mayan Pyramid Signs A Signs B City Patchwork A - 206 - REFERENCE: 3->4 Components • • • • • • • • • • • • City Patchwork B City Patchwork C Building D # Building E # Building F # Building G # Building H # Building I # Building J # Building K # Building L # Building N # Walls & Concrete (updated) A: Texture # B: Color Cycle C: Frequency This is a component for creating realistic color textures for buildings in ArtMatic Voyager. The alpha output is intended to be used as an extra output mapped to “Normale” in ArtMatic Voyager which allows ArtMatic Voyager to provide appropriate bump shading. The inputs use ArtMatic Voyager input mapping: X and Z are the ground co-ordinates and Y (the middle input) is elevation. ArtMatic Voyager users can find many examples in the folder VY Bump Examples A variety of realistic wall materials can be simulated with this component. The tree at left demonstrates a typical use. The compiled tree provides the elevation map, and the fourth output of Walls & Concrete is mapped to an extra output rather than the elevation output. Algorithms The texture is selected with parameter A or the algorithm popup. The choices are: • • • • • • • • • • • • • • Square plates Old Stones Stone Wall C Stone Wall D Brick Wall A Brick Wall B Concrete Plates A Concrete Plates B Concrete Plates C Plates & Windows Stucco & Windows Stones & Windows Ceramics A Concrete Mix A - 207 - REFERENCE: 3->4 Components • Concrete Mix B • Concrete Mix C • Stones bands A # • Stones bands B # • Stones bands C # • Mixed blocks # • Mixed striated blocks # • Patchwork blocks # • Tiled floor & stone wall # • Checkboard floor & plate wall # Jitter Tile xz# (new 5.0; Updated 6.0) Jitter Tile xz splits the xz plane (the horizontal plane in ArtMatic Voyager) into many similar cells with local centers. When the output is fed into a component a 3D object, the result is non-identical copies of the object. “Jittering” is often used to perform operations like creating a forest from a tree or a field from a blade of grass for ArtMatic Voyager. This has many applications and is especially useful for creating object clusters for ArtMatic Voyager. A forest of non-identical trees created using Jitter XZ Jittering is done as a space transform rather than by duplicating the underlying object. It is a computationally efficient method as the underlying object only needs to be evaluated once which is very important if the object itself if computationally complex. Application Note: For proper convergence of DFRM objects (for ArtMatic Voyager), care should be taken not to use too much randomization or to set the scale too low which may causes objects to move outside their cell. Jittering of a single object can also be performed in ArtMatic Voyager itself. - 208 - REFERENCE: 3->4 Components This simple tree jitters a 3D Density Shape (set to the frame shape).The fourth output, W, (the randomized jitter value) is sent to 4->3 Rotate so that each copy is rotated differently. By setting up the structure tree correctly, you can create significant variation among the copies. The system as it appears in ArtMatic Voyager. Parameters: • A: Scale controls the size of each cell. The smaller the value, the smaller the region of space that is replicated and the closer the repetitions will be to each other. If you set this to a small value, the region may be too small to contain the object -- especially if the Jitter % is high. • B: Jitter % controls how much the center position is deviated from strict tiling. • C: Clip radius % allows to restrict the area. At maximum the repetitions are infinite. A small value provides only a few repetitions. Output: The output are new co-ordinates X, Y and Z plus a 4th output (W). W is a random number with a range of 0 - Pi that varies with each tile (object copy). Use W to randomize elements of the object. See the example tree above in which W is used to vary object rotation. Parameter Options: • Regular Jitter. The xz plane (horizontal plane in Voyager) is broken up into a fairly regular grid • Sparse Jitter A . The space is divided into a grid that is more irregular and sparse than first mode with various placement patterns. • Sparse Jitter B, Sparse Jitter C . Oher variations of sparse jittering. • bypass. No tiling/jittering. This setting is sometimes useful for debugging a complex system so that you can see - 209 - REFERENCE: 3->4 Components the item being jittered on its own. Regular Jitter Sparse Jitter A Sparse Jitter B Sparse Jitter C - 210 - REFERENCE: 3->4 Components New Algorithms and Parameter Options In ArtMatic 6, several new parameter options were added that create clusters of up to 64 copies arranged in different ways. While the old algorithms scattered all the copies on the same plane, some of the new options create clusters in 3 dimensions. For small numbers of objects (<32) the new options are both more accurate and faster to compute than the original options (Regular Jitter through bypass). Parameter C for the new algorithms determines the number of clones: from 0 to 64. Parameter A for the new algorithms determines the distance between the instances. As always, the fourth output of the component provides a randomized jitter value (between 0 and Pi) that can be used to create variations among the instances. For example, the jitter value can be fed to a rotation or scaling or offset component to modify the position. Or, it can be used to manipulate the color. The “xz” algorithms create finite clusters on the same plane. This can be useful for creating groups of trees or creatures. Animation tips. When animating 3D clusters, do not move the individual object (except for constrained motions like wing-flapping) as you do not want the object to move out of the central area (the region that is cloned). With the 2D clusters, you may move the objects up and down (the y/vertical axis), but do not move them in the horizontal (xz) plane. To animate the whole cluster, use x, y, and z offsets before (above) the cluster/jitter tile. Another technique is to use the global input matrix’s time output (global input w) to affect the motion. Examples. Several examples are found in the Animation Techniques folder. Flying Thing(s) Series. This series is a useful one to study. Flying Thing contains a single animated “bird”. Flying Things 4 Birds has cluster of birds whose wings flap but but do not move. Flyings Things Many Birds Motion shows a larger cluster of birds that seem to independently move with changing altitude and relative positions while flapping their wings. The wing flaps and general motion are accomplished by using global input W. Cluster Motion Perlin. This system is a computationally-lightweight example that uses a basic capsule object with randomized animation within the cluster. Notice how the Perlin function and derivative work to provide the proper altitude information. The derivative component feeds each instance’s rotation value. The compiled tree named Cluster Motion Z handles their altitude. Cluster Motion Sine. This example uses the 1->2 Circular Motion component to provide a dolphin-like swimming motion. Cluster 3D Basic. This example shows an 3D ovoid cluster of rising balloon-shaped creatures. Cluster Motion Perlin Example. New parameter options : • Cluster xz round. A cluster on the xz (horizontal) plane with a circular boundary. • Cluster xz ovoid. A planar cluster whose boundary is an ovoid elongated in the z (depth) direction. • Cluster 3D spherical. A 3D cluster bounded by a sphere - 211 - REFERENCE: 3->4 Components • Cluster 3D cylindric. 3D cluster bounded by a vertically-oriented cylinder • Cluster 3D ovoid. 3D cluster bounded by a flattened (ovoid) sphere • Cluster 3D linoid z. 3D cluster bounded by a horizontally-oriented cylinder that extends in the z (depth) direction Jitter Spherical # Similar to 3->4 Jitter Tile xz. It creates randomized copies of a portion of space. Spherical jitter creates its “cells” radiating outward from a central sphere or hemisphere which makes it useful for creating biological structures like plants or corals that have branches arms or tendrils extending out from a central area. There are several algorithms available and different parameter options that provide for a large number of possibilities. As with Jitter Tile xz, the fourth output is a randomized value (from 0-π) that can be used to modify the individual cells.Use multiple instances of this component in a cascade to create complex plants and branching structures. Examples: SeaAnemosphere, SeaAnemonoid, JS_TriCoralTree, JS 1L Indian Palm Tree, and others with JS in the file name. Spherical jitter clones space radiating from the origin. The Random Spherical algorithm is shown here. Parameters: • A: Number. The number of branches/copies of the original space. • B: Jitter/angle %. The angle or “seed value” for randomization. • C: Offset. Offset along the main axis between the branches/clones. - 212 - REFERENCE: 3->4 Components Algorithms: Random Hemisphere N24 Random Sphere - N24 Regular Hemisphere Regular Spherical Spiraling Hemisphere Alternate Hemisphere; N=24 Alternate Hemisphere; N=8 Rotation Plane; N=12 Rotation Plane Random- Rotation N Planes; N=24 Fan V; N=24 ized; N=12 Fan V Twirled; N=24 Fan H; N=24 Fan V Randomzed: N=24 Fan H Random; N=24 Random hemisphere - create N branches randomly place on the half-sphere pointing towards the direction selected by the parameter option. Random spherical - create N branches randomly placed on the sphere Regular hemisphere - place the branches in a spiraling pattern on the hemisphere Regular spherical - place the branches in a spiral pattern on the sphere. For cases up to N=31 distribution is fairly regular. When N is a number that matches the number of vertices or faces of one of the Platonic solids (see http:// - 213 - REFERENCE: 3->4 Components en.wikipedia.org/wiki/Platonic_solid) the geometry of the equivalent solid is created. For example N=4 (tetrahedron), N=6 (octahedron), N=8 (cube), N=12 (dodecahedron), N=20 (icosahedron). Intermediate cases add or subtract directions base on the closest regular distribution. For example, at N=11, a dodecahedron geometry minus the “south” pole is created. Spiraling hemisphere - similar to regular hemisphere but using a narrower spiral. Alternate hemisphere - place every other branch at different angles in phase opposition, Rotation plane, Rotation plane randomized - this algorithm is similar to the 3->3 3D Mirrors & Rotates component except that the jitter output (the fourth output) can be used to randomize and differentiate each clone. The randomized version randomizes both the jitter angle and the length. The angle parameter changes the overall orientation from upward to downward. A value of 0 is downward oriented, 0.5 is orthogonal to the main axis, and 1.0 is pointing upwards Rotation Plane Rand. Angle=0 Rotation Plane Rand. Angle=0.5 Rotation Plane Rand. Angle=1.0 Rotation N planes, Rotation N planes randomized - there are from 2 to 5 levels of rotations depending on the number of branches (which are set by parameter A). There are a maximum of 20 branches per “level” (plane). Rotation N Planes Rand. N = 8 Rotation N Planes Rand. N = 24 Rotation N Planes Rand. N = 24 Fan V, Fan V randomized, Fan V twirled - branches are placed on a vertical plane in a fan-shaped spread. The angle set rotation angle. The randomized version randomly modulates the angle slightly. - 214 - REFERENCE: 3->4 Components Fan twirled branching structure Fan H, Fan H randomized Parameter Options set the main axis for the rotation: • orientation x • orientation y • orientation z • orientation x R • orientation y R Jitter Axial # This component “jitters” space by creating copies that are distributed along a main axis. Several algorithms are available for creating different sorts of patterns. This is very useful for creating tree-like branching patterns and is often used for designing plant structures. The pattern created is determined by both the algorithm and number of branches. Some combinations of algorithm and N (parameter A, the number of branches) create both a main axis (the trunk) and branches while with other N settings only branches are created. - 215 - REFERENCE: 3->4 Components A recursive tree based on various Axial jitter modes Examples. ArtMatic Voyager’s JAxial Plants & Trees folder provides many ArtMatic systems that make use of this component. Parameters: A: Number : total number of branches B : Angle C : Offset - the offset along the main axis between branch levels Helicoidal Helicoidal Helicoidal A=7; B=0; C=1 A=7; B=0; C=8 A=7; B=0.2; C=8 Helicoidal - Branches are arranged at right angles to to the main axis in a helicoidal pattern. The rotation angle between branches is controlled by the Angle parameter. Helicoidal 30 - Helicoidal arrangement with the branches at a 30 degree incline. - 216 - REFERENCE: 3->4 Components Helicoidal sym rot 3, Helicoidal sym rot 4, Helicoidal sym rot 6, Helicoidal sym rot 10 - These algorithms distribute the branches with an equal angle of rotation. The number after ‘sym’ indicates the number of branches per “set”. For example, Helicoidal Sym Rot 6 will increment the rotational angle by 60 degrees (360/6) between each branch. The Angle parameter determines the branches’ incline angle. Multi levels, Multi variable levels - The Multi Levels family of algorithms places branches together on the main axis in discrete levels at different vertical positions. The number of branches per level depends on the Angle parameter which controls the rotational angle between branches. The variable version varies the distances between levels slightly. Orientable multi levels, Orientable multi variable levels - The branches are placed in discrete levels on the main axis. The Angle parameter controls the vertical incline level of the branches. The number of branches per level is determined by parameter A (Number of branches). The variable version varies the distances between levels slightly. Orientable bilateral, Orientable bilateral skewed, Orientable bilateral helicoidal Two branches per level are placed along the main axis. The Angle parameter sets the incline angle. The number of levels is determined by parameter A (number of branches). The skewed version places the two branches perpendicular to each other and slightly skews the levels. The helicoidal version offsets the layers in a helicoidal (spiral) pattern. Random hemispherical, Random spherical - Branches are oriented in a roughly hemispherical or spherical distribution around the axis. Angle modulates the branch incline. Helicoidal spherical - Similar to random spherical but the branches are rotated around the axis in a spiral (helicoidal) pattern as they are placed higher up the tree. Random Parallel - pairs of branches are placed along the axis with randomized radial orientation. Angle modulates the incline. Mixed dense - this algorithm randomly arranges branches in levels of 1, 2, or 4 branches. Angle modulates the incline angle. Mixed Sparse - randomly arranges the branches in levels of 1 or 1 branches. Parameter options: The options allow you to set the main axis direction and whether or not the branches will be randomized. Motion Cluster # This component is a jitter component whose purpose is to create co-ordinated clusters of cells whose motion is automatically animated. Several motion and topology algorithms are available. The algorithms determines the motion of the “cells” while the parameter option determines the initial cell pattern. For example, you can choose the algorithm ‘Explosive 3D’ to create an explosion pattern of motion and the Cluster 3D Spherical parameter option to start with the objects distributed around a virtual sphere. This component is useful for creating interesting schooling, herding and flocking motion as well as for exploding objects and collections of particles. - 217 - REFERENCE: 3->4 Components Explosive 3D algorithm with option Cluster 3D Spherical The cluster as it appears during the course of the animation. Examples: See the examples in that start with the letters MC in the Animation Techniques folder. Parameters: A: Number B: Size - size of the cells. This determines the object spacing C: Speed Algorithms: • • • • • • • • • • • • • • • Static - no built in motion, uses the distribution defined by the parameter option. Motion Z Linear Motion Z randomized plane xz Motion Z randomized 3D (narrow y) Motion Z randomized 3D Motion Z undulate Motion Y Linear Motion Y randomized Motion Y randomized 3D Random walk XZ Random walk XY Random walk 3D Explosive 3D Explosive 3D with gravity Explosive 3D with inverse gravity Parameter • • • • • • • • • • • options : Cluster xz plane disc Cluster xz plane ovoid z Cluster xz plane ovoid x Cluster xz plane ring Cluster of Clusters xz plane Cluster 3D spherical Cluster 3D cylindric Cluster 3D ovoid z Cluster 3D ovoid x Cluster 3D sphere envel Cluster of Clusters - 218 - REFERENCE: 3->4 Components z Disk Tiles A: Amplitude B: Color Cycle C: Frequency Z Disk tiles creates the pattern shown below. The Z input provides a color shift. z Paint Strokes A: Ampl. B: Color Cycle C: Freq. The Z-Input influences the orientation of the brush strokes and the saturation (with maximum saturation where Z=0). The image at right was created by patching the output of 2->1 Grid to the Z input. Z Strokes A: Amplitude B: Color Cycle C: Frequency Z Strokes is another brush-stroke like texture. The Z input influences both orientation and color of the pattern. z Line Network A: Ampl. B: Color Cycle C: Freq. Z Line Network is a pattern that resembles a layer network of colored strings. The Z input influences both color and the relative orientation of the strings. z R-Patchwork A: Amp. B: Sharpness C: Freq. 3-input implementation of 2->4 Time R-Patchwork. Z controls the phase of the pattern within the blocks. Color is provided by the current gradient. Zoom in to see the sample images in better detail. Middle: Z fed by Gaussian Dot. Right: Z fed by multiperlin noise 3D Cellular A: Ampl. B: Color Cycle C: Freq. 3D Cellular color texture. The Z Input influences the pattern. The pattern is very similar in top and side views. - 219 - REFERENCE: 3->4 Components 3D Multi Bubbles A: Ampl. B: Color Cycle C: Freq. 3D Multi Bubbles creates a pattern similar to 3->2 Multibubbles. The Z input modulates the arrangement of the bubbles. The pattern is very similar in top and side views. 3D Lava Bubbles A: Ampl. B: Roughness C: Freq. 3D Lava Bubbles creates a texture like glowing lava. The tree at left was used to create the images at right. The top image is the view in ArtMatic Pro. The bottom image was created in ArtMatic Voyager using the ArtMatic system as an alternate sea. The fourth output can be used as an alpha mask or (in ArtMatic Voyager) as an elevation map that maps the contours of the color texture. 3D Green Marble A: Ampl. B: Roughness C: Freq. The Z input modulates the pattern which is very similar in side and top views. The Amplitude controls the output range of the alpha/elevation output. Left. Green Marble used as both elevation map and color texture in ArtMatic Voyager. 3D Color Dots A: Ampl. B: Color Cycle C: Freq. The Z input modulates the pattern. The pattern is very similar in top and side views. 3D Color Star Field A: Ampl. B: Phase C: Freq. 3D Color Star Field is a texture reminiscent of a star field. The Z-input modulates the texture’s pattern. The pattern is very similar in top and side views. - 220 - REFERENCE: 3->4 Components 3D Ice cracks A: Amplitude B: Roughness C: Freq. 3D Ice Cracks creates a texture resembling cracked sea ice. It is especially useful for creating ArtMatic Voyager ice floes where the alpha output provides the elevation map and the first three inputs provide the color textures. The amplitude influences the balance between the blue and the white areas. When the amplitude is high, white dominates. Left. Tree based on 3D Ice Cracks. Middle. Image as seen in ArtMatic Right. Image as seen in ArtMatic Voyager when the ArtMatic system is used for both elevation and color texture. z Multifractal A: Amplitude B: Roughness C: Freq. Z Multifractal creates a color multifractal noise where the Z input influences the saturation. When the Z value is low, the result is undiferrentiated gray as seen in the side view. Left: Top View. Right: Side View z Sulfur Fiberrock A: Amplitude B: Roughness C: Freq. Z Sulfur Fiberrock is a color texture especially useful in systems for ArtMatic Voyager. The Z input controls saturation. The fourth output is useful as either an alpha channel or elevation map. When Z has a low value, the output is gray. Right: ArtMatic Voyager image where the component supplies both color and elevation. z Granular Rock A: Amplitude B: Roughness C: Freq. Z Granular Rock is a color texture especially useful in systems for ArtMatic Voyager. The Z input controls saturation. When used by itself as both color texture and elevation map, the result is a planet surface like the one shown. Use it in ArtMatic Voyager’s Combination mode to add surface rocks. Left. Z Granular Rock as seen in ArtMatic Pro Right. Z Granular Rock used as both color texture and elevation map in ArtMatic Voyager (zoom in to see details). z Green Bushes A: Amplitude B: Amount C: Freq. Z Green Bushes is a color texture shader designed for use in ArtMatic Voyager to provide bush-like greenery. This component is very effective when used in ArtMatic Voyager’s combination mode. The Z input influences the color and contrast. At low values, the color, contrast and bush density. The fourth output is useful as either an alpha channel or an ArtMatic Voyager elevation map, - 221 - REFERENCE: 3->4 Components Top View (Z Low) Top View Side View As seen in ArtMatic Voyager 3D Leaves # (new) This component creates a variety of leaf-shaped density fields that are especially useful for creating leaves or other DFRM objects for ArtMatic Voyager. A typical structure tree demonstrating this component is shown below. The input is a 3D space and the output is a 3D space warped into a leaf shape (which will be sent to a color texture function) and a density field (which will be used in Voyager to define the leaf shape). The MR Palm Tree Voyager example Tropical B Leaf Attached to a Cactus Branch EXAMPLES. There are many examples of this component’s use in the Voyager’s 2.0 Examples/DFRM Life & Plants/Components Demo folder. In particular see the example leaves Demo.vy. A very simple section of an ArtMatic structure that uses the Leaves # component and others to create a color-textured leaf in ArtMatic Voyager. This structure was used to create the examples in the table below. Algorithm is selected with the algorithm popup. Parameters: A: Angle, B: Bending Amount, C: Shape. The shape parameter provides variations of the generated shape. - 222 - REFERENCE: 3->4 Components Palm Leaf A with Bend = 0 Palm Leaf A with Bend = 1 Bending Amount illustrated Parameter Options: Orient xy, Orient zy, Symmetric 30 xy, Symmetric 45 xy, Symmetric 60 xy, Triple 30 xy, Triple 45 xy, Eventail xy Algorithms Illustrated (3D Leaves) Algorithm Shape = 0 (Min) 0 Heart Shape = 1 (Max) 1 Heart Saw 2 Palm Leaf A 3 Palm Leaf B - 223 - REFERENCE: 3->4 Components 4 Lozenge Saw 5 Tropical A 6 Tropical B 7 Tropical C 8 Alien Rings - 224 - REFERENCE: 3->4 Components 9 Alien Flower - 225 - REFERENCE: 3->4 Components Parameter Options (3D Leaves #) illustrated:z Orient xy Symmetric 30 xy Symmetric 60 xy Triple 30 xy Orient zy - Camera rotated off-axis slightly for this image. Symmetric 45 xy Eventail (fanned) xy Triple 45 xy Color Grass Field # (new) Creates an infinite field of grass for use with Voyager DFRM objects. The output is color (the lefmost 3 outputs) + field value (object). The field value defines the shape of the blades of grass. This component is faster than using a jitter function with a repeated single grass object. The Option popup provides several different grass types. Those - 226 - REFERENCE: 3->4 Components with “random” in the name have randomized colors. Random Yellow Grass using the follow terrain Option Parameters: A: Modulation Scale, B: Modulation Amount, C: Contrast. Parameter Options: see table below The examples below were created with the ArtMatic Voyager Builtin Grass example file provided with Voyager (2.0 Examples/DFRM Life & Plans/Grass folder/Builtin Grass). ArtMatic structure tree of the Builtin Grass example file (provided with ArtMatic Voyager), Notice the use of A2 (Voyager Elevation) to limit the grass to low elevation areas. The use of A2 Requires that the Follow Terrain option be turned on in Voyager’s Object dialog. The parameter options popup provides a number of different options that determine the color and shape of the blades of grass. The table below shows the various types of grass at a few different levels of magnification. - 227 - REFERENCE: 3->4 Components Green Grass Random Green Grass Random Green Gr. (close) Yellow Grass Random Yellow Grass Sparse Grass Random Sparse Grass Strange Grass Strange Grass (closer) Random Strange Grass Random Strange Gr. (closer) Random Strange Gr. (close) Sparse Strange Grass Sparse Strange Grass (closer) Sparse Random Strange Gr. - 228 - REFERENCE: 3->4 Components uvid Sweep Volumes This component incorporates profiles (like 2->1 Profile Shapes) and path sweeps (like 3->2 Revolution & Sweeps) into a single component that is very useful for generating complex building and object structures. The unique UVID output scheme allows you to easily map different color textures to different parts of the created objects. Profiles and Paths. This component provides a choice of profile shapes via the algorithms popup and paths via the parameter options popup. Profiles are cross-section shapes and the the path is what you might call the floor plan. The cross-section is swept along the path to create an object. 9 shape profiles are provided and 16 paths which provided 144 different solids. The table below shows two of the available profiles and two of the paths and the solid that is created by sweeping the profile along the path. Path: Rectangles & Squares Path: Revolution II Profile: Framed Rect Profile: Arch The solids that result from sweeping the profiles along the path. UVID and Input/Output. This component takes 3D space as the input and the outputs are: UV - the left two outputs are called U and V. They are remapped x,y co-ordinates that are generally fed to a color texture. These co-ordinates are projected onto the created object similarly to how spherical projection adjusts 2D co-ordinates so that they can be mapped onto a sphere without distortion. I(ndex) - I is an integer index value that indicates an object part (such as wall or roof). The index value is typically fed to something like Packed 4->4 Packed Index (w) Mixer that allows color textures to be mixed according to an - 229 - REFERENCE: 3->4 Components index. For example, different color textures for the roof, walls and floor can be fed to the Packed Index Mixer and selected via the index. For example, the wall & roof profile generates an index of 0 for walls, 1 for the floor, and 2 for the roof. The index value might also be used to modify other material properties. D(istance Field) - D is a distance field (DFRM) object created by the component. The component takes 3D space as its input and generates 2D co-ordinates (from the left two outlets) that will typically be fed to color textures, an integer index value, and a DFRM field for the object. The index value will typically be passed to a component such as 4->4 Packed Index (w) Mixer whose job it is to choose a color texture according to the index. The Mixer’s feathering parameter should be set to 0 to prevent distortions where index values change. Profiles The profile shape is selected via the Algorithm Popup. • • • • • • • • • Profile : rectangle Profile : framed rectangle. Rectangle with framed edges. Profile : circle Profile : arch Profile : arch iy-. An arch that extends down infinitely in the y dimension Profile : wall & roof. Edged box with an orientable roof Profile : wall & roof iy-. wall & roof that extends down infinitely in Y Profile : pointed arch Profile : pointed arch iy-. Pointed arch that extends infinitely down in Y - Paths The path is selected via the Parameter Options popup) • • • • • • • • • • • • • • • • Path : x axis || Path : x axis Path : z axis || Path : z axis clipped. Creates a bounded volume in z where the width parameter sets the width along the z axis. Path : revolution || Path : revolution Path : rectangle || Path : rectangle Path : rectangle & squares || Path : rectangle & squares Path : triangle || Path : triangle Path : Edges squares Path : Edges circles Path : arch || Path : arch Parameters: Parameter A, Radius, sets the overall size of the object. For rectangular paths, Width (parameter B) controls the aspect ratio. For Revolution II paths, it sets the radius of the ring. The Height parameter (C) is a percentage applied to the radius. So, changing the radius will also change the height. For a circle, keep the height at 0 to have a true circle. Parameter D varies depending on the profile and path. - 230 - REFERENCE: 3->4 Components Note that because profiles and paths are combined in this component, the parameters can change both the overall path and the profile shape. It might adjust curves or angles or smoothness or a secondary radius as with the rectangles & squares path. Application Notes There are two versions of most paths. One version has II at the and the other does not. The option with ‘II’ at the end sweeps the profile so that it is centered on the path center. Otherwise, the profile is more or less centered on the layout created by the path and may extend unbounded in one or more directions (such as X axis). For example, when the rectangle and squares II path is applied to the wall & roof profile, the result is a wall/roof structure that follows the the path and has a plaza in the center. Path: rectangle & squares II; profile: wall & roof On the other hand, when the path is the plain rectangle & squares, the result is an enclosed area with the wall & roof profile, as shown below. Without the “||” option, the roof expands all the way and the walls enclose the path. - 231 - REFERENCE: 3->4 Components Path: revolution || with the arch iy- profile Path: “revolution” used with the “arch iy-” profile Unbounded paths. A few of the paths (x axis, x axis II and z axis II) are infinite along one axis and should be combined with other primitives to give the bounds. For tips about limiting infinite shapes, see 2->1 Profile Shapes. Many useful layouts can be created by using an infinite path (such as x axis II and preceding UVID Sweep Volumes with 3->3 N-Fold Mirrors and Offset as shown below. - 232 - REFERENCE: 3->4 Components Above: the X Axis II path unbounded as seen in ArtMatic and ArtMatic Voyager. - 233 - REFERENCE: 3->4 Components Above: by applying N-Fold Mirrors & Offset with N-fold 5 on the xz plane, the endless building is given a finite shape. Edges. Some profiles generate distinct edge borders. Edges have an index value (i output value) of 3. Textures, Profiles and Auxiliary colors. Some profiles need more than the 3 color textures that 4->4 Packed Index (w) Mixer can handle. - 234 - REFERENCE: 3->4 Components Profile: wall & roof. Path: z Axis Clipped. This is a good starting point for a basic house. Note that the edges have an index value of 3. If they are not mapped to a particular texture (using 4->4 Packed Index (w) Mixer), they will appear as gray edging. Very complex objects and architecture are possible by combining multiple UVID Sweep Volumes. We recommend exploring the example files to learn strategies and techniques for combining them. (Above) Two towers built using several mixed UVID Sweep Volumes in conjunction 2->4 XYza Patterns # (bauhaus algorithm). Examples. The towers shown above, built from multiple instances of UVID Sweep Volumes can can be found in the ArtMatic Voyager files: 34 uvid Ring Tower.vy (the tower in the back right) and 34 uvid Bahaus Tower.vy (frontmost). There are many other uvid examples to explore, too. Build your own. It is relatively easy to create custom uvid primitives using compiled trees (CTs) like 2->1 Profile Shapes and 3->2 Revolution & Sweeps. The index can be generated using a 1->1 Set Constant tile and the UV outputs using 3->2 projections (parallel, cylindrical or spherical). - 235 - REFERENCE: 3->4 Components S-Space Scale This function scales space uniformly and passes out a space scaling value that can be used for DFRM systems to properly scale space. It takes space as its input and the output is space (from the x,y, z outputs) plus S (the fourth output) where is a scaling value. This is component is especially useful non-linear transforms that often cause convergence problems. Take a look at the 3D fractals for examples of this component in use. Typically, all the outputs are sent to one of the 4-> S-Space components such as S-Space Transforms. Parameters: A - Scale 3D Multifractal Noise A: Ampl. B: Roughness C: Freq. 3D Multifractal Noise is similar from the side and the top view (unlike Z Multifractal). The Z input influences the noise pattern. The amplitude influences both color saturation and the alpha channel contrast. This component is related to 2->4 Multifractal Noise. 3D Ridged Fractal A: Ampl. B: Roughness C: Freq. 3D Ridged Fractal is especially useful for designing systems for ArtMatic Voyager. The fourth output is useful as either alpha channel or elevation map. Amplitude controls the fourth output’s contrast and range. 3D Fractal Silex Noise A: Ampl. B: Roughness C: Freq 3D Fractal Silex Noise is a color texture shader whose pattern is reminiscent of certain silicates. It is useful as an RGB + Elevation component. 3D Color Patchwork A: Ampl. B: Roughness C: Freq The view is similar from the side and the top. The Z input influences the noise pattern. - 236 - REFERENCE: 3->4 Components 3D Random Rects A: Ampl. B: Roughness C: Freq The color is derived from the current gradient. The view is similar from the side and the top. The Z input influences the noise pattern. 3D Lunar Rocks A: Ampl. B: Roughness C: Freq 3D Lunar Rocks creates a color texture reminiscent of lunar rocks. The fourth output is useful as either an alpha channel or as an ArtMatic Voyager elevation map. 3D Facet Rocks A: Ampl. B: Roughness C: Freq 3D Facet Rocks is useful for designing natural looking stone textures and systems for ArtMatic Voyager. The fourth output is useful as either alpha channel or elevation map. In ArtMatic Voyager, it is often used in Combination Mode to add rocks to a planet surface. 3D Granit(e) Rocks A: Ampl. B: Roughness C: Freq 3D Granite Rocks is useful for designing natural looking stone textures and systems for ArtMatic Voyager. The fourth output is useful as either alpha channel or elevation map. In ArtMatic Voyager, it is often used in Combination Mode to add rocks to a planet surface. 3D Fractured Rocks A: Ampl. B: Roughness C: Freq 3D Fractured Rocks is useful for designing natural looking stone textures and systems for ArtMatic Voyager. The fourth output is useful as either alpha channel or elevation map. Packed Mixers and Memory Components There are several 3->4 components designed for mixing packed streams. Some of these components take RGB (or RGB+Alpha) packed streams for all three inputs. Some of the components take a single value stream in the third input (the Z input). Where a packed stream is expected, it is also possible to pass in single values in which case the input is treated as grayscale. - 237 - REFERENCE: 3->4 Components Packed z Blend A: Feather B: Offset This component uses the z (third) input to blend the images received in inputs 1 and 2. Inputs 1 and 2 should be packed RGB or RGB+alpha streams. When inputs 1 and 2 are RGB+alpha the resulting alpha (the fourth output) is the blending according to z (the third input) of both inputs’ alpha channels. When inputs 1 & 2 have no alpha (they are RGB or scalar) then the resulting alpha is the z input modified by feather and offset parameter settings. If either input 1 or 2 is a value stream, it is treated as RGB grayscale. Packed z Morph (expanded and renamed) A: Z Level B: Feather Formerly Packed z Max. This mixer composites two RGBA streams (inputs 1 and 2 which should come from a 4->1 Pack til) using the third vector input stream to control the blend. Several algorithms are available. Algorithms: • Morph using weighted max. (The original z Max algorithm). On a pixel-by-pixel basis, compare the value of input 1 to the value of input 2 + input 3 + Parameter A. If input 1’s pixel has the same or greater value as the others, its pixel is displayed. When Feather is 0, the pixels come from either input 1 or input 2. When Feather is not 0, inputs 1 and 2 are blended at the mask edges. When an input is an RGB+A stream, the alpha channel alone is used for the comparison. If the input is an RGB stream, the input’s value is value of R + G + B. It is often useful to insert a 1D filter to adjust the alpha channels. A large variety of effects can be created by fine-tuning the component parameters. Take some time to explore the complex interaction between the alpha channel levels and the parameters. • Morph using cubic weighted max • Morph using quintic interpolation • Morph using Exponentials In this example tree, input 1 is MultiFractal noise. Input 2 is Interlaced Grid. The mask (Z) is the 2->1 Pict/Movie component. Interlaced Grid’s pixels appear whereever its alpha channel (the fourth output) plus + the Pict/Movie value + Parameter A is greater than the fourth output of input 1. Packed Random Mix A: Amount B: Phase C: Freq. Packed Random Mix takes three RGB or RGBA streams and randomly mixes them using a built-in noise function. Packed Crossfade A: Interpolate AB B: Interpolate C This component mixes three RGB or RGB+Alpha streams. Interpolate AB determines the relative mix of inputs 1 and 2. Interpolate C controls the relative mix of input 3. Packed mul & add A: A * B Level B: Add C Level Multiply the pixels of image A (input 1) with those of image B (input 2) and add the pixels of image C (input 3). Es- 238 - REFERENCE: 3->4 Components sentially this creates an image where input 1 * input 2 is the background image. There is a related 3->3 component. Packed Maths (expanded and renamed) A: Add B Level B: Mul C Level Formerly, Packed add & mul. Algorithms: • add B & multiply C. Image A (input 1) and Image B (input 2) have their pixels added together and their combined image is filtered (multiplied) by Image C (input 3). • add B & Subtract C • weighted average Packed Max A: in1:in2 Bal. B: Level in3 C: Feather The values of the three input images are compared and the image with the maximum value’s pixel is taken. When the images are RGB+A, the alpha channel is used for the comparison. Otherwise, the R + G + B is used as the value. Packed Logic (expanded and renamed) formerly Packed Alpha Min. This component provides a number of algorithms for combining packed streams. It is particularly useful for constructing DFRM objects. It s similar to the 2->4 Packed Logic component. Examples: See the file 3D packed3 Edges Logic.vy provided with ArtMatic Voyager. Input 3: Tube x axis Input 1: Cube Input 2: Tube z axis Algo: Edges Intersect AB & Subtract C Algo: Subtract C & Intersect With Algo: Subtract C & Union B with moderate border settings to acB with minimal border settings. centuate the edges. Algorithms: • Min (intersection). Compares the alpha values of all three inputs (which should all be RGB+Alpha packed streams) and selects the input (both the color and alpha values) from the stream that has the lowest alpha value. • Max (union) • Union AB & Intersect with C • Union AB & Subtract C • Intersect AB & Union C - 239 - REFERENCE: 3->4 Components • Intersect AB & Subtract C • Subtract C & Union B • Subtract C & Intersect with B • Edges Intersect AB & subtract C The subtract algorithms use the same method as 2->4 Packed Logic’s Framed Subtract with the border left around the subtracted region controlled by parameters B and C. The edges algorithms use the depth cue color (the first auxiliary color) for the resulting edges. Packed Alpha Compose A: Feather AB B: Feather C C:Bg Color Blend the inputs treating the alpha channels as transparency. The background color defined by parameter C shows through where the inputs are transparent. Memory Packed z Blend A: Feather B: Offset Memory Packed Z Blend is a memory version of the 3->4 Packed Z Blend component. Input 1 is not iterated and serves as the background image while both inputs 2 and three are iterated. See the chapters Memory Components and Compiled Trees and Iterations for more information about using memory components. 3D Looper (new) This component is a fully 3D looper and is similar to the 2->3 Looper. Like all loopers, this component is recursive. The leftmost 3 outputs of the component are fed back into the component that feeds the loop. The rightmost output is the count value (the iteration number times Parameter B, count multiplier). All components between the looper and the next memory component are looped. - 240 - 4->1 Components 4->1 Components have three main uses: to mix four independent outputs, to create a texture from two space transforms, and to pack the outputs of RGB+Alpha components into a stream to be fed to a packed mixer. 4->1 components are frequently used They are also useful for creating a tex- The 4->1 Pack component to combine the output of four different ture from two different space transforms. is used to pack RGB+Alpha components. output into a single stream. Ax+By+Cz+w A: Scale X B: Scale Y C: Scale Z This component is used to sum (mix) 4 input values. Parameters A, B and C are applied as scaling factors to the X, Y and Z inputs prior to summing the values. Multiply A: Amplitude B: Offset Multiply the input values together. Amplitude (parameter A) scales the output, and Offset (parameter B) is added to the result. Pack Pack the four inputs into a single stream. The output should be fed to a component that expects packed input (such as the packed mixers). The use of the pack component is covered in the tutorials. Min(x,y,z,w) A: Amplitude Compare the four inputs (x, y, z and w) and pass out the minimum value multiplied by Amplitude (parameter A). Max(x,y,z,w) A: Amplitude Compare the four inputs (x, y, z and w) and pass out the maximum value multiplied by Amplitude (parameter A). - 241 - REFERENCE: 4->1 Components Distance (U,V) Mathematical primitive that computes the distance from vector U (inputs 1 and 2) to V(inputs 3 and 4). Dot Product (U,V) Mathematical primitive that computes the dot product of vectors U (inputs 1 and 2) and V (inputs 3 and 4) i.e. (Vx*Ux)+(Vy*Uy). This can be used to find the distance to a line. If the vectors are normalized, it is related to the angle between U&V. Determinant A: Amplitude B: Offset Random Mix A: Amount B: Phase C: Frequency Random crossfading of the four input values. This component is especially useful for creating terrains for ArtMatic Voyager or other complex textures. 4d Perlin Noise A: Amplitude B: Phase C: Frequency A 4D implementation of Perlin Noise. Connect the fourth input to Global Input time to animate the texture in 3D automatically over time -- very useful for creating 3D elements for ArtMatic Voyager. This component has many uses. Interesting textures can be created by feeding this component the output of two different space transforms. Bezier Curve A: Amplitude B: Tangency 3D w Fractal Noises (new) This is a version of 3D Fractal noise that uses the fourth input (w) to control the fractal dimension (the roughness) of the noise. Values above 0 increase the fractal dimension (with relation to the baseline dimension) and values below 0 decrease it. This component is great for clouds or terrains when you need higher fractal dimensions. Use a constant w value to increase or decrease the fractal dimension or a varying w to create interesting patterns and terrains. Fractal Noise controlled Image with w set to a by a constant high value w = approximately 0.5 - 242 - w very low REFERENCE: 4->1 Components w set to a higher value w set to a low value Volumetric clouds created with the structure shown above Algorithms: Straight fractal noise, Multi Fractal Positive, Multi Fractal Balanced, Ridged fractal noise. Parameters: A: Amplitude, B: Phase, C: Frequency Parameter options: Use Direct Frequency, Use Voyager km Examples: See the ArtMatic Voyager examples in 2.0 examples/Terrains and also 2.0 examples/Clouds & Volumetrics/Volumetric AM w fractal clouds.vy DEM Mandelbrot This component implements the Distance Estimation method of calculating Mandelbrot and Julia sets. The distance estimation method provides improved resolution compared to the standard method of calculating them. Information can be found on the internet about the advantages of this method. Typically, one pair of inputs is fed by a 1>2 Set Constant component. For Mandelbrot sets feed the first input pair, vector U, (inputs 1 and 2) with 0. For Julia sets, use constants for inputs 3 and 4 (vector V). - 243 - 4->2 Components: 4D Vector Functions These components serve a broad number of uses. An essential in-depth discussion of function categories is found in the Getting Deeper chapter and is recommended reading for everyone. In the descriptions below, x and y refer to the two left inputs and x2 and y2 refer to the rightmost inputs. Complex number primitives. Many of these components are mathematical primitives for performing complex number arithmetic. The complex number inputs are called Z and C; Z refers to the two leftmost inputs, x and y, where x is the real part and y is the imaginary part of Z. Likewise, C is made up of the two rightmost inputs. Complex Add Z + C A: Scale Add mixes two 2D spaces by adding the respective x and y coordinates. Changes to the incoming space can sometimes have compound effects. For example, if two rotation components feed Add, changing the rotation parameter of either input will also cause changes to the scale of the picture. (Renamed from Add Z + C in version 4.0). Tip: Check out the result of using this component with rotation and complex map as inputs. Left output: A(x+x2) Right output: A(y + y2) Complex Add N*Z+C A: N Real Part B: N Imaginary Part This is a useful complex number primitive that is handy for creating a new space with aspects of the spaces that feed the component. Advanced users will find this primitive useful for implementing their own formulas. Formula. Parameters A (Real Part) and B (Imaginary Party) define the real and imaginary parts of complex number N. The component sends out the real part (from the left output) and imaginary part (from the right output) of the complex number created by the computation N*Z + C where the left two inputs are considered the real and imaginary parts of Z and the right inputs are considered the real and imaginary parts of C. Complex multiply Z*C This component performs complex number multiplication by treating the inputs as two sets of complex numbers. The effect is quite dramatic and is highly dependent on the input functions. This component provides symmetry and creates interesting spatial deformation. The x and y inputs are treated as the real and imaginary parts of a complex number and the x2 and y2 inputs as parts of another such that: Z = x + iy C = x2 + iy2 This returns the complex multiplication of Z and C. The real part of the product is sent out the left outlet and the imaginary part is sent out the right. Left output: (x * x2) - (y*y2) Right output: (x * y2) + (y * x2) - 244 - COMPONENT REFERENCE: 4->2 Components Complex divide Z/C Perform complex number division by treating the inputs as a pair of complex numbers. As with all division if the inputs are identical, the output is a single color (i.e. a plane), but, if you offset the values, you get interesting deformations. Left output: real part of Z/C Right output: imaginary part of Z/C Complex Power Z^N+C A: n power exponent A complex number primitive that implements Z^N+C where n is the value of parameter A. Like the other complex number primitives, this component is handy for creating a new space with aspects of the spaces that feed it. Advanced users will find this primitive useful for implementing their own formulas. Complex Z^2 + C A: Recursion B: Outer Slope The Mandelbrot/Julia Set equation implemented as a space mixing/distortion component. This component will usually be used near the top of the tree and takes two spaces as input, treating them as complex numbers Z and C where the first input of each pair is the real part of the number and the second input of each part the imaginary part. The output of the component is a space (a quite complex one). Example files: Yellow Pulsing juliaSet. The colorful and decorative Fractalcandy shows a modified Mandelbrot/Julia Set shaded by a compiled tree that provides complex RGB shading. Equation = Z2 + C Complex Z^3 + C A: Recursion B: Outer Slope Another Mandelbrot Set relative. This is the cubed version of the Mandelbrot equation. Because this component is computationally intensive, you may want to lower the value of the Max Iterations for Fractals preference while exploring (and increase the value, if necessary, for final rendering). Example file: Venitian Fractale SinDC. This example makes use of both the squared and cubed Mandelbrot relatives. The file also demonstrates how compiled trees can be used to implement complex shaders. Equation = Z3 + C Complex C(Z + 1/z) A: Recursion Complex number primitive and space distortion function. Explore it to discover fascinating fractal textures. This can also be used as a building block in compiled trees for creating new fractals. Equation = C * (Z + 1/Z) Complex exp C e^Z A: Recursion Complex number exponential function. This component is quite CPU-intensive and is a valuable building block for creating new fractals. Equation = exp(Ce z ) - 245 - COMPONENT REFERENCE: 4->2 Components Complex C sin Z A: Recursion B: Outer Slope Another building block for creating new fractals. Example files: Complex C sin z and Chinese Fractal Sin z Plate Equation = Csin(Z ) Distance Divide A: Amount B: Phase This component divides the first space by the distance of the second pair of inputs from the origin. It can have perspective-like effects. Because division is used, the results change if the order of the inputs changes. Phase adds an offset to the distance value. Amount is an interpolation between the distance and 1. When the amount is zero, the distance is ignored. Distance divide can create interesting enclosed spaces from infinite spaces. When two infinite space transforms are passed in, the result tends to be a complex warped space enclosed in a disk or figure eight-like shape. The results can be quite complex from even the simplest trees. When using this component, be sure to carefully explore the results when the Amount parameter is close to zero. When enclosed spaces are passed in, the result is sometimes an infinite unfolding of the enclosed space. The order of the space transforms matters (i.e. A/B is not the same as B/A). It can be interesting to explore what happens when the same 2-output tile feeds both the left two and right two inputs. The examples below use Interlaced Grid after Distance Divide, as it helps visualize the space transform. You may want to use similar trees to become familiar with this transform. (If reading this manual on a computer screen, be sure to zoom in to see details that might be missed onscreen.) Exp field A: Amplitude B: Warp This component creates a composite space that has aspects of both input spaces. A field equation is applied to both pairs of inputs and the results are added together. The field equation is similar to a gaussian curve and hence the maximum output is found where the input value is 0 and approaches zero as the input reaches infinity. ComplexMap 4D A: Real B: Imaginary Like the 2D Complex map, this component is a complex number polynomial. This version is recursive and is sensi- 246 - COMPONENT REFERENCE: 4->2 Components tive to the preference for Max iterations for fractals. This component creates particularly rich output. City Light & Reflection A: Pattern # B: Amount C: Frequency Like the related 3->2 component, this component provides lighting and reflection information for buildings’ windows. 4->4 City Textures is the companion component that provides the color texture for the buildings (usually provided by 2->4 City Maps). The pattern (map) name should be the same for both the City Textures and City Light & Reflection, and the frequencies should be the same as well. Extra output 2 mapped to reflections in Voyager The image as it appears with no Voyager reflection mapping Inputs. When discussing the inputs to this component, the inputs are referred to as (from left to right): x, z, i, and y. The left two inputs (x and z) are the ground co-ordinates (latitude & longitude), ‘i’ is the texture index which is normally received from 2->4 City Maps, and y is elevation. Texture index. Texture index is usually provided by 2->4 City Maps but you can pass in a constant to select a particular building texture or manipulate the index to select different textures for the same buildings. Outputs. The left and right output values (also called X and Y) are the illumination level and reflection level. Normally, these will be mapped to Ambient Light and Reflection in ArtMatic Voyager (using Voyager’s extra output mapping options). Parameter A selects the city/building map to use. The names correspond to the maps created by the 4->4 City Textures component with which this component is meant to be used. For perfect sync, use same frequency and texture index (i) that is passed to 4->4 City Textures. The maps are: City Texture A, City Texture B, City Texture B, City Texture C, City Texture C, City Classic Escher disks A: Offset x B: Offset y C: Radius A complex space distortion function which tiles space with disks using the Mandelbrot set equation. The C input (the second input pair) act as the C constant in the Mandelbrot equation. Mondrian Displace A displacement map for creating Mondrian-like effects. The displacement uses a random arrangement of discrete patterns. The two rightmost inputs control the pattern’s space. 2D Vector Maths # (expanded and renamed) A:Amplitude Renamed from Real Multiply. This component provides several vector math primitives. The inputs are treated as two sets of vectors: U (x,y: inputs 1 & 2) and V (bx, by:inputs 3 and 4) to which the selected operations are applied. This component can create interesting composite spaces. The output algorithm is indicated by the name. - 247 - COMPONENT REFERENCE: 4->2 Components The • • • • algorithms : Add: A(x+bx, y+by). Subtract A(x-bx, y-by) Multiply A(x*bx, y*by) Divide A(x/bx,y/by) Add Normalized A: Scale Another useful mathematical primitive that is often used for implementing systems based on differential equations. The component’s formula is Z + (C/N) where N is the magnitude of C(square root of x22 + y22). Example file: “Differential System”. Interpolate A: Interpolate The left output is an interpolation of x and x2, and the right output is an interpolation of y and y2. This component offers a way to animate the transitions from one transform to another. The Interpolate parameter set to its minimum value generates the left-hand space and at the maximum value generates the right-hand space. Other values blend the two spaces. You can also use it to interpolate between two sets of values in parallel. Radial Interpolate A: Amplitude This component generates an interpolation from space A to space B where the distance from the origin determines the weighting towards space A or space B. Compatibility Note. ArtMatic Pro 2.5 uses undistorted space for the interpolation (unlike earlier versions). Facet Mix A: Amplitude B: Phase C: Frequency This component generates a composite space by randomly choosing facets/bubbles from one space or the other so that the resulting space has a mix of bubbles from both spaces. In this way, chunks of space B become mixed with space A. Amplitude is a zoom factor applied to the inputs before feeding them into the bubble algorithm. Phase is an offset factor. Frequency determines the “bubble” size. Renamed in ArtMatic Pro 2.5. This component was previously called Bubbles Mix. Moebius(Z) + C A: Angle B: Scale C: Imaginary This component applies a Moebius transform to the space provided in the first two inputs and adds the space provided by the right inputs. This component can create very interesting warped spaces and fractal-like patterns from even simple inputs. Min <> Max A: Amplitude B: Min to Max This is a true minmax function that blends between the maximum or the minimum of the two spaces’ coordinates. - 248 - COMPONENT REFERENCE: 4->2 Components Blended max A: Balance This component generates a weighted maximum. The actual math is a bit complicated as the implementation guarantees continuous (smooth) output. The resulting space will have some aspects of both input spaces. The balance parameter controls whether the function gives the precise maximum or a weighted value that favors either the left or the right input pair. Essentially, the component acts so that the left output=Max(x,x2) and the right output=Max(y,y2) though not strictly. With the balance set to 1, the input always wins. The effect of changes to the balance parameter can be quite surprising. This component creates interesting juxtapositions of space. Abs & minimum A: Amplitude B: Rotate B This component provides an interesting way to combine spaces. The output is the absolute value of the minimum of x and x2 and y and y2. Amplitude is a multiplier applied to the output. Rotate B rotates the second space before calculating the minimum. Y Compare This is a procedural component that chooses the input pair Z or C whichever’s y component has the highest value. This creates a composite space that is an interesting mix of the two inputs. The offset parameter is added to the two output values. Example file: “Y compare Space”. A: Offset Split Space A: Offset Create a composite space whose left half comes from the left inputs and whose right half comes from the right inputs. The split is made using Space A’s coordinates. So, the split might not be a straight line. The offset moves the split point left or right. Advanced users will find this useful when building fractals in iterated systems. Example file: Double Rotation fractal beast makes use of this function within the compiled tree. Distance compare Create a composite space by picking the point from Space A or Space B that is closest to its own origin. This is another primitive that can create fascinating composite spatial systems. Example file: DC Double Affinity feedback uses this component to create a fractal. Space Compare uses this component to mix a Radial Star space with a simple space. - 249 - COMPONENT REFERENCE: 4->2 Components Split Disk A: Radius B: Offset X C: Offset Y This component creates a new space where space transform B (the right two inputs) is applied everywhere except the disk-shaped region in the center where space transform A is applied. Radius determines the radius of the disk in which transform A (the right two inputs) is applied. Alternate Split x from Z, y from C Create a new space by taking the x co-ordinate from the Z input and the y coordinate from the C input. This is one of those components where the results are a bit unpredictable but often rewarding. Example file: “XfromZ Space” Split 4 A: Offset X B: Offset Y Combine four circular areas drawn from space B (the two rightmost inputs) with space A (the left two inputs). This component is mostly intended for recursive systems where it can create complex fractal patterns. Parameters A & B affect the relative weight of the spaces. See example file Split 4 feedback A. - 250 - 4->3 Components Many of these components are mixers that were designed to mix RGB-based images with gradient-based images -such components treat the leftmost three inputs as an RGB image and the rightmost input as a gradient-based image (shaded with the active gradient). Some 4->3 components are essentially 3->3 components with the fourth input acting as a controller for the component -- these are especially useful in iterative systems since the output of the i component can be used to offset, scale or rotate the iterations. 4->3 components also include the Looper family of iterative components. An essential in-depth discussion of function categories is found in the Getting Deeper chapter and is recommended reading for everyone. Input notation convention: By convention, the inputs are sometimes referred to as x,y,z and w where x is the leftmost input and w the rightmost. x,y and z do not refer to spatial coordinates except where explicitly stated. RGB/Gradient Mixing Components This group of components was primarily designed for mixing the output of RGB and gradient-based components and branches. The leftmost inputs should be an RGB ‘stream’. The rightmost input may be either scalar or packed input. If the 4th input is a scalar value, these components map the value to the current gradient to create the color. The output is RGB. Choose RGB and ArtMatic shading from the Structures popup menu to create a structure set up to mix RGB and ArtMatic gradient-based shading. The active gradient is applied to the right input before the images are mixed and shading/depth cueing are applied to the combined image. RGB mix A: Level in1 B: Level in2 Mix an RGB branch of the tree with a gradient-based branch by adding the values of the corresponding pixels of the two input images. Parameters A and B control the relative level of the left and right images. RGB multiply A: Amount B: Offset Mix an RGB branch of the tree with a gradient-based branch by multiplying the values of the corresponding pixels of the two input images. In essence, the RGB image is filtered by the ArtMatic image. The result is 0 (black) where either image is black (i.e. multiplying by 0 yields 0). Parameter A controls the strength of the filtering and B is a luminance (brightness) offset that is useful since multiplication can sometimes yield dark images. RGB alpha A: Threshold B: Feather Mix the two input images and treat the second image as an Alpha mask. Only the pixels whose value is above the threshold are displayed. The feather parameter determines the number of pixels beyond the mask’s boundaries which are displayed. When the threshold is at the maximum only image one is visible. When the threshold is at the minimum value, only image two is visible. Example file: Simple alpha dissolve This component is great for creating dramatic dissolve effects for movies and video. Tip: If the second image has cloud or star textures, you can effectively superimpose them on the first image. - 251 - COMPONENT REFERENCE: 4->3 Components RGB Interpolate A: Interpolate Interpolate between the two images. When the slider is at the extreme left or right only the corresponding image will be seen except where the image has infinity. Infinity is transparent. This is essentially the same as the 2->3 Packed RGB Crossfade. 3-in + control Each of the components in this group is equivalent to a simple 3->3 component but provides a fourth input that acts as a control. For example, w Offset is equivalent to 3D Offset with the fourth input (w) controlling the offset amount. These components are often used in iterative systems with the w-input being fed by the iteration component. w Offset A: Offset x B: Offset y C: Offset z Add an offset to the x,y and z inputs. The w-input acts as an offset multiplier/displacement vector. Formulas: left output = x + (A * w) middle output = y + (B * w) right output = z + (C * w) Tip: Use w Offset whenever you need displacement to be controlled by another component or by an iteration value. w Scale (updated 5.0) A: Amount B: Floor C: Roof Scale the x, y, and z inputs with w acting as a scale multiplier. When A=0 no scaling occurs. Roof allows you to pin the multiplier value (the w input) to this maximum. Roof must be higher than the Floor parameter. Formulas: left output = x*( 1 - (A * w)) middle output = y*(1 - (A * w)) right output = z*(1 - (A * w)) w Rotate A: Angle xy B: Angle xz C: Angle yz Rotate the x,y,z inputs (treating them as spatial coordinates) with w acting as the rotation control. The parameters determine the angle of rotation which is multiplied by w. Tip: Use w Rotate whenever you need the rotation to be controlled by another component or by an iteration value. w Multiply (new) This component simply multiplies the x, y, and z inputs by w (the fourth input) and sends out the result of the multiplications. This is similar to 4->3 w Scale but the output values are not clipped. w Divide (new) Divide the x,y and z inputs by w and pass out the results. W Scale and Offset Y This component uses the W input to control scaling and/or a Y-offset. When used above a DFRM object, this allows the vertical positioning and object size to be modulated with an external controller. This can be useful for animating - 252 - COMPONENT REFERENCE: 4->3 Components motions. W Space Distorts W Space Distorts provides similar 3D space distortion to 3->3 3D Distorts and Bends with the addition of a fourth input (W) which controls the amount of distortion. Use of the W input, is useful for animating motion. See 3->3 3D Distorts and Bends to see illustrations of the sorts of distortion that this component can create. See the examples in the Space Distort objects examples folder. 3D Tree Structures # (New) This component creates a tree-like branching of space using a variety of techniques (symmetries, rotations, translations and repetitions) that are especially useful for creating trees and plants for ArtMatic Voyager. When used inside a recursive CT (compiled tree), this component may be sensitive to the iteration level (depending on which tree algorithm is selected) which results in a more varied structure than if each level were simply a scaled down version of the parent. [Left] ArtMatic Voyager tree [Right] 3D Tree Structure used inside a recursive compiled tree To create an tree-like object, the component is used in conjunction with a component such as 3->1 Density Shapes since by itself, it is just a space distortion function. Most users will want to use one of our many examples as a starting point for their creations since using the component from scratch requires a solid understanding of ArtMatic structures and recursion. However, it is fairly simple to make modifications to the many example files that are provided with ArtMatic Voyager. Of course, you are not restricted to creating trees for ArtMatic Voyager. - 253 - COMPONENT REFERENCE: 4->3 Components Use this component to create non-tree-like objects, too. A sphere transformed with a single recursion of 3D Tree Structures Inputs and outputs. The four inputs are a 3D Space (the left 3 inputs) and w which acts as a random seed for the random numbers used internally to determine the branch spacing. When the 4th output of Jitter Tile xz# is connected to w, it will randomize the aspect of repeated trees. Or, you can connect w to global input A3 if Voyager Jitter Opaque mode is in use. To control the range of w-related modifications, you can use the 1->1 Math component set to the Fract algorithm to limit the range from 0 to 1 and add a scale and offset so that you can control the minimum, maximum and amplitude of the variations. The best way to get started using this component is to start from one of the examples in Voyager’s 2.0 Examples/ DFRM Life & Plants/Plants iterative folder. Parameters: • A: N Rotate. For most algorithms, this is the number of symmetries of rotation. Some algorithms, such as Alternate 180, only use this value for iteration #3 (in a recursive CT). • B: Angle A . The main branch angle. Low values result in branches pointing upward. 90 degrees will be perpendicular and high values create branches angled down. • C: Angle B / Slope %. The slope or a second angle. The meaning depends on the particular tree algorithm. The slope controls how much the length of the branches diminish going up. At 0, the branches are parallel. For some algorithms (such as cactus) it controls the bending. For some (palm trees) is is the sub-branching angle. Algorithms Illustrated (3D Tree Structures) - 254 - COMPONENT REFERENCE: 4->3 Components The tree algorithms are also referred to as “tree rules” since strictly speaking some of the algorithms are rule sets sensitive to the number of iterations. 0 - Palm Tree. All branches start from the same center. nice for palm-like structures 1 - SR Tree B1. When iterated (recursed), the first iteration level can have N branches while the additional iteration levels just have N branches created with rotational symmetry off of the parent branch. tree rule 1 (3 iterations) 2 - SR Tree BN bend up . All levels can have N branches with some randomization - 255 - COMPONENT REFERENCE: 4->3 Components 3 - SR Tree BN bend down . All levels can have N branches with some randomization 4 - Random SR Tree BN . All levels can have N branches with some randomization tree rule 4 (3 iterations) 5 - Random SR Tree B1. Similar to rule 1 but branch direction and length are randomized. 6 - Cactus. Branches grow alternately left and right. When iterated it produces a structure like the one below: 7 - Alternate 180. Branches grow alternately left and right. - 256 - COMPONENT REFERENCE: 4->3 Components 8 - Alternate Ferns. 9 - Rotating Branches. Branches grow in alternating fashion with a global rotation controlled by parameter C. tree rule 9 (3 iterations) 10 - Rotating Branchs & SR. Similar to 9 for the first levels but then grows clusters of rotating branches whose number is related to parameter A. Here an example of tree rule 10 with leaves attached with SR 8: - 257 - COMPONENT REFERENCE: 4->3 Components L e s s o n : U s i n g 3 D T r e e S t r uc t u r e s Analysis of a basic structure for creating a tree The generation of a trees/plants is a complex problem. 3D Tree Structures can create a wide variety of plant structures. A typical structure tree for a tree/plant is shown below: • There is a section (a single 3->1 Density Shapes tile in this structure) responsible for creating the trunk. • The trunk shape is passed (along with 3D space) to a recursive compiled tree that creates the branches (it includes the 3D Tree Structures component, • The trunk+branches are fed to compiled tree that adds the leaves. • A typical ArtMatic structure tree for trees and vegetation - 258 - COMPONENT REFERENCE: 4->3 Components The compiled tree that handles the branches is generally a recursive compiled tree. The number of levels of recursion determine the number of layers of branches. Some tree algorithms vary the branching pattern according to the recursion level. More details are found below. A SIMPLE STRUCTURE: TRUNK + BRANCHES Below is a very simple structure that provides a trunk and branches and colors them with a simple color texture. The outer level structure [ArtMatic system: Angles 43 tree iter from the Voyager example Tree rule 1.vy]. The structure creates a trunk with branches and uses a simple color texture. The same structure and recursion level (3) but a different tree rule (number 4 instead of number 1) creates a very - 259 - COMPONENT REFERENCE: 4->3 Components different tree. Main Structure. The main (outer-level) structure tree provides the tree trunk (A) and color texture (C). The recursive compiled tree (B) provides all the branches and sub-branches. The 3D Rotate component at the top is useful for adjusting the orientation. Helpful hint: 3D Rotate is very helpful when designing any 3D object as it enables you to rotate the object in space while working on the object even if you don’t plan on having the object rotated in your final scene. The 3D space (from 3D Rotate) and the tree trunk (from 3->1 Density Shapes) are passed into the CT that adds the branches (described below). The tree trunk (A) output is also sent to the 1->4 Hue Color tile (C) which provides the tree’s color texture. Hue Color’s RGB output is sent to Alpha Scale and Offset which provides final adjustments of the completed tree. The Branches CT (Compiled Tree) In the structure shown above the compiled tree (CT) labeled B provides the branches. A CT is a group of components that appear as a single tile in the outer-level ArtMatic structure. Below is the internal structure of the compiled tree that creates the branches. This structure (with different parameter settings) is used for almost all of the plants and trees that we create. Adjustments of a few parameters can create a virtually endless variety of plants and trees. The structure inside the compiled tree that provides the tree branches. The green lines indicate the input received - 260 - COMPONENT REFERENCE: 4->3 Components from the parent tree: 3D Space and the tree trunk (a density field) CT Inputs. The compiled tree receives four input values from the parent structure (which are indicated in green in the diagram): three space co-ordinates and the tree trunk density field . Quick analysis. The incoming space is scaled (by the W* component) and sent to the 3D Tree Structures component whose output is sent to 3D Density Shapes (algorithm = Cactus Branch) and blended with the tree trunk (the density field received from the input). The output is the modified space (modified by 3D Tree Structures component) and the modified density field (which is the tree object). Details. The Set Constant tile (label: A) is used as a scaling factor by being multiplied against the incoming space using the W Multiply tile. Its output is also used as the y-input for the Math Tools component in the group of components labeled D where it has a further impact on the scaling. The scale space is sent from W Multiply to the 3D Tree Structures component (label C) -- which is set to Algorithm 1, N Rotate =1, Angle A = 5, Angle B/Slope = 40.844. The 3D Tree Structures component’s w input (which acts as a random seed) comes from the Set Constant component labelled B in the diagram. The 3D Tree Structure’s output is a space warped into a tree-like shape. This space is sent to 3->1 3D Density Shapes which is set to the Cactus Branch algorithm. This provides the actual branch objects (the density field). The 3D Tree Structure output is also passed to the first three outputs of the final component (whose job is just to pass out the values it receives). The 3D Density Shape (which is at the top of the group labelled D in the diagram) is sent to 2->1 Math Tools->Iteration Scale. The resulting branches are thus automatically scaled by the number of iterations. Each successive iteration creates smaller branches. The adjusted branches are then added to the density field (the actual tree object) that was passed in to the compiled tree. The resulting output is a density field (3D object) which is passed to the fourth input of the last component. The last component sends 4 output values out of the tree. The three co-ordinates of the branch-warped space and the updated branching object (density field). Recursion. The recursion parameter of the compiled tree determines the number of branching layers. Setting it to a value larger than 0 causes the CT to be looped so that its operations are performed several times. This particular type of compiled tree is recursive which means that the compiled tree’s output is fed back to the input each time that it is iterated (looped). Each iteration of the tree creates a new level of branching as illustrated below. Some of this component’s algorithms (the so-called tree rules) are sensitive to the recursion level and create different branching patterns at different levels of recursion so that different levels of branches are not simply scaled down versions of the previous level. Recursion = 0 Recursion = 1 Recursion = 3 With this tree rule (algorithm 1), each level of recursion adds another set of branches at the end of the existing - 261 - COMPONENT REFERENCE: 4->3 Components branches. Some tree rules add branches elsewhere as shown below. Tree Rule 4 with Recursion = 3 ADDING LEAVES To add leaves to a tree, we need to add components to: • add leaves to the trunk and branches • blend the leaves with the tree branches Below is a “trunk+branches” type structure to which components have been added to provide leaves [Left] Structure that creates just trunk and branches [Middle] The structure modified with components to add leaves [Right] The compiled tree that handles the leaves The tree with the added leaves - 262 - COMPONENT REFERENCE: 4->3 Components Analysis • a compiled tree (A) was added that takes a 3D “tree” space as input and sends out an 3D color texture and a density field that corresponds to the leaves. Its output is packed with 4->1 Pack so that it can be sent to a mixer • a 2->4 Packed Alpha Max component (C) was added to mix the tree and branches with the leaves • a4->1 Pack component (B) was added to pack the trunk+branches A tree created with the structure tree above as it appears in ArtMatic Voyager. Recursion and 3D Tree Structures. When used inside a recursive CT, one must set the scaling ratio for each level carefully to avoid having branches grow outside the plant’s boundaries. Our example systems are already set up with the necessary scaling components and should generally be your starting point. In general, scaling values of 2 to 5 work best. Because the structures are recursive, they are quite sensitive to parameter values and can be computationally intensive. w Color Fade A: Feather B: Amount This component uses the fourth input (w) to blend the first auxiliary color with the RGB channels received in the first three inputs. Feather is the amount of feathering/blending done at the edges of the alpha channel. Amount is a multiplier applied to the w input. When Amount is positive, the auxiliary color appears where the w input value is 0. When the value is negative, the auxilliary color appears where the alpha channel is greater than 0. This component is functionally identical to the 4->4 version except that it does not pass out an alpha channel. The rightmost input may be either scalar or packed input. If the 4th input is a scalar value, this component maps the value to the current gradient to create the color. - 263 - COMPONENT REFERENCE: 4->3 Components w Color Shift A: Hue B: Lightness% C: Saturation This component uses the fourth input (w) to shift the HLS values of the RGB image passed into the three left inputs. The parameters determine how much the HLS values are shifted by the fourth input (w). The w input is used to shift the Hue and Saturation values by an offset whereas it is used to scale the Lightness (luminance) by a percentage. The rightmost input may be either scalar or packed input. If the 4th input is a scalar value, this component maps the value to the current gradient to create the color. Loopers Images created with “looped” (iterated) trees Loopers allow a part of the structure tree to be looped several times. Each time through the loop being collected by a memory component. Looping (also known as iteration) is a very powerful technique that can create very complex images from an apparently simple tree. Loopers are covered in-depth in the chapter Compiled Trees & Iteration which provides a helpful tutorial. Loopers are recursive. Each time through the loop, they feed the left two outputs of the Looper component back into the input of the components that directly feed the looper. (Be sure to perform the tutorial in the Compiled Trees & Iteration chapter if the previous sentence seems unclear). 4->3 loopers are designed to be fed by two space transforms. In the descriptions below, F refers to the space transform that feeds the left two inputs of the Looper and G refers to the space transform that feeds the right two inputs. For all 4->3 Loopers, the inputs are two space transforms and the output is a space (from the x and y outputs) and a count value (from the z output). The count value is the iteration number times the parameter B (Count Multiplier). Staggeringly complex images can be created from very simple elements with the Cross Looper. Looper F(G) A: Iterations B: Count multiplier Looper F(G) feeds the output of space transform G (the right two inputs) into space transform F and passes the resulting space [F(G)] out of the left two outputs of the looper and also back into space transform G for the next iteration. Looper G(F) A: Iterations B: Count multiplier Looper G(F) is like Looper F(G) but feeds the output of F into G (rather than G into F). Cross Looper A: Iterations B: Count multiplier This looper is quite complex it iteratively crossfeeds transforms F and G and the results of the previous iteration. In iteration 0 (the first iteration), both F(G) and G(F) are performed. In iteration 1 (the second time through the loop), there are four transforms F(G), G(F), F(G(F1)), G(F(G1). Cross iterations are extremely unpredictable and can yield richly complex results. When using Cross Looper, the number of iterations grows exponentially–so watch the number of iterations. With a computationally-intensive tree, even the fastest processor can be brought to its knees. - 264 - COMPONENT REFERENCE: 4->3 Components Memory Components Below are brief summaries of the memory components. Memory components are covered in detail in the chapter Memory Components. Memory components are used in looped/iterated/recursive trees to combine the results of each pass through the loop. These components are only meaningful in such trees. We recommend performing the Compiled Trees and Iteration tutorial in order to best understand how these components work. Memory Add This component adds the value of each iteration to the value accumulated in the previous iteration with the fourth input scaling the incoming values. Memory Max This component stores the maximum of the current iteration and the stored values with the fourth input scaling the incoming values. Memory w Alpha Memory Alpha mixes the current RGB values with the stored RGB values by interpreting the fourth input (w) as the transparency of the current values. A high w value makes the current value (pixel) opaque. A w value less than 0 makes the current value (pixel) completely transparent (and, hence, invisible). See the file MemAlpha Clouds for an example of this powerful component. We recommend rendering the animation to get a sense of the incredible effects you can achieve with this component. One can simulate volumetric-3D rendering with this component. The parameters are the starting RGB color values. This component is great for simulating 3D volumetric rendering. Example file: Don’t miss the MemAlpha clouds example. Render the movie. It is amazing! Memory w Min Memory w Min compares the current w value with the stored w value and stores whichever set of values (R,G, B, and w) has the lowest value for w. This component is very much like Memory Depth Sort but uses w (which is stored but not passed out of the function) rather than the third input for the comparison. Example file: See Mwmin perlin noise for one example of this component. Memory w Max Memory w Max compares the current w value with the stored w value and stores whichever set of values (R,G, B, and w) has the largest value for w. Note that only the w value is used for the comparison unlike the simple Memory Max component which uses all of the input values for the comparison. Packed Mixing Components This group of components combines ‘packed’ mixing functions with other common operations. They allow more compact trees which render more efficiently than trees which use multiple components to provide the same functionality. Most of these provide the same functionality as 3 or more primitive components. Each of the three first inputs can be either packed or unpacked. The fourth input must be a simple unpacked stream. Notation: a, b, and c refer to the first, second and third inputs. These are used instead of x, y, z because the inputs are - 265 - COMPONENT REFERENCE: 4->3 Components packed streams rather than simple values. Packed blend * w & blend A: Interpolate B B: Interpolate C C: Multiply w This component is a procedural shader in which input A (the first input) is mixed with input B (the second input). The result is multiplied by the w (fourth) input and mixed with the C (third) input. Formula (pseudo-code): blend( blend(A,B) * w , C) Example file: Undescribable C Packed Add & Blend *w A: Add B B: Interpolate C C: Multiply w This component is equivalent to a packed mix (using addition) of inputs a and b with the result being crossfaded with the c input. The resulting output is then scaled with w acting as a scaling factor. Parameter A controls how much of stream b is added to the base image. Parameter B controls the crossfading with stream c. Parameter C determines the influence of input w. Tip: w will usually be connected to a component that provides global illumination. Formula: ((a + A*b) crossfaded with c ) * w Packed Add & Mul +w A: Add B B: Mul C C: Add w Add inputs a and b. Multiply the result with input c and add w to the result Parameter A controls how much b is added to a. Parameter B controls how much c will multiply the result. Parameter C controls how much w is added at the end. w can be used to provide the shading and can create specular highlights. Formula: ((a + A*b) * c ) + w Packed Mul & Add *w A: Mul b B: Add c C: Mul w Multiply inputs a and b and add input c. Multiply the result by w. Parameter A controls the influence of input b. Parameter B controls the influence of input c. Parameter C controls how much w will multiply the result. w will usually be connected to the component that provides the global illumination. This component is used in the Gated bilateral B metal ground compiled tree which acts as a custom shader to provide a realistic illumination of the “beast”. Formula: ((a * b) + c) * w Packed Add & Add *w A: Add B B: Add C C: Mul w Add inputs a, b and c and multiply the result by w. - 266 - COMPONENT REFERENCE: 4->3 Components Parameter A controls how much b is added to a. Parameter B controls how much c is added. Parameter C controls how much w will multiply the result. w will usually be connected to a component that provides the global illumination. Example file: Liquid invasion Formula: (a + b + c) * w Packed Depth Sort A: z offset Mix four 3D objects into a single 3D stream. This component is just like the other Packed Depth Sort components (2->3, 3->3) and requires that each input be a packed stream. Parameter A acts as an offset in the third (z) dimension. Each input should be a 3D object whose output has been packed. Packed RGB w Min This component is the RGB equivalent of the 3D Depth Sort components but uses the third and fourth inputs for the comparison. The first two inputs must be packed RGB streams. The third and fourth inputs must be single value streams. This component treats the third input as a fourth value for the packed data in input a, and the fourth input is treated as a fourth value for the packed data in input b. Either input a or input b’s values are passed through the component depending on which stream’s fourth value (either the third or fourth input) is smaller. When input c < input d then input a is passed through. When input d is the smallest value, input b is passed through. Example files: Landscape 1 sky Packed rgb w Min blend A: Transparency (of input B) This component is a variation of Packed rgb w Min except that the frontmost object (the component ís second input) is transparent and fades into the background (the first input). This component is useful for 3D fades using the 3D parametric face component. Example file(s): Triple bascules blend, Tech flower room D, Tech Triple pict Pan B Packed Alpha *w A: Threshold B: Feather C: Multiply Mix the a and b inputs (usually RGB inputs) and treat input c as an alpha mask. The w value is multiplied by the final output and will usually be connected to a branch that provides global illumination. Inputs c and w should both be scalar (non-packed) values. Parameter A determines the threshold over which masking occurs. Parameter B provides feathering at the mask border and determines the definition of the mask borders. Parameter C determines how much the w input influences the result. Packed a*w alpha b A: Threshold B: Feather C: Multiply Mix the a and b inputs (usually RGB inputs) and treat input c as an alpha mask. w multiplies the source prior to the masking and makes shadow effects possible. Inputs c and w should both be scalar (non-packed) values. - 267 - COMPONENT REFERENCE: 4->3 Components Parameter A determines the threshold over which masking occurs. Parameter B provides feathering at the mask border and determines the definition of the mask borders. Parameter C determines how much the w input influences the result. Example files: Flying Shadows contains a small iterative loop which feeds Packed a*w alpha b. Butterfly Shadows uses the same technique to create a mathematical beast. Packed (a+w) Alpha b A: Threshold B: Feather C: Add w Mix the a and b inputs (usually RGB inputs) and treat input c as an alpha mask. The w value is added to source a before masking. Example files: This component is used for the halo effect in Flying Shadows Halo. Electro Rain MemAlpha illustrates the fact that the packed mixing components behave like the ‘mem add’ components for all layers except for the first. See also Packed MemAlpha clouds. Packed Blend & Alpha A: Blend AB B: Threshold C: Feather Perform a mix of inputs a and b and mix the result with input c while treating input w as an alpha mask. Inputs a, b and c should all be packed RGB values. Input w should be a scalar (single value) stream. Parameter A controls the mix of images a and b. Parameters B and C control the mask threshold and feathering. Open Compiled Tree A: Scale B: Iterations Compiled trees are groups of tiles that can be used in place of single tiles as a kind of macro or subroutine.. Compiled Trees are covered in more detail in the Compiled Trees chapter of this manual. Compiled Trees and their parameters are covered in detail in the Compiled Trees chapter of this manual. - 268 - 4->4 Components 4->4 components are generally used to process RGB+Alpha information and are quite similar to the 3->3 components. The input to 4->4 components is usually RGB in the first three inputs and an alpha channel in the fourth input. The output is generally RGB+Alpha. Advanced users will find additional applications. In this chapter, the left three inputs and outputs may be called either XYZ or RGB. The fourth input and output may be called either alpha or w. Frequently, a 4->4 component is the bottom-most component in a tree where it is used to join an RGB branch of the tree with a branch that creates an alpha channel. In order for an alpha channel to be exported from ArtMatic, the tree must have a four output component at the bottom. Some 4->4 components can be useful for visualizing the alpha channel (as in the above example) as it is otherwise invisible. This can be especially helpful when desiging systems for ArtMatic Voyager where the alpha channel often provides the terrain map. Some 4->4 components are implementations of commonly used 3->3 components with an alpha channel pass-through and are often used as the last component in the tree to bring together the RGB and Alpha branches of a tree. In many cases, the fourth input is passed through to the fourth output without change. DFRM. A number of 4->4 components are invaluable for created DFRM objects (3D objects for rendering with ArtMatic Voyager). Alpha Scale & Offset A: Scale XYZ: B: Scale w : C: Offset w Scale inputs XYZ using parameter A, and independently scale and offset the fourth input (w/alpha) using B and C. Where the input values are called X, Y , Z and W and the called A, B, C, the output values are X*A, Y*A, Z*A, (W*B) + C. Infinity passes through unchnaged. A: Scale XYZ. Scaling factor applied to the X, Y, Z inputs before passing them out. The W/alpha output is unaffected by this parameter. B: Scale w/alpha. Scaling factor applied to the fourth output (w/alpha). C: Offset w/alpha. Offset added to the fourth output (w/alpha). XYZ Offset A: Offset X: B: Offset Y C: Offset Z Add independent offsets to the X, Y and Z inputs. It functions identically to 3->3 3D Offset. The output values are X+A, Y+B, Z+C. The fourth input is passed out unchanged and has no influence on the XYZ inputs. XYZ Scale A: Scale X B: Scale Y C: Scale Z Scale the X, Y, and Z inputs. The fourth input is passed out unchanged. This is functionally identical to the 3->3 3D Scale component. The output values of Xout, Yout and Zout are X*A, Y*B, Z*C. Infinity passes through unchnaged. 3D Rotate (new) This is simply a 3D Rotate (like 3->3 3D Rotate) with a fourth input that is passed through without influencing anything. This behavior is convenient when working with the various S-Space components. - 269 - REFERENCE: 4->4 Components S-Space Scale Scale the space uniformly and send out an adjusted scale value. This component takes a space (xyz) plus a scale value as its inputs (such as the values generated by the 3->4 S-Space Scale component. The output is the scale space (from the xyz outputs) and a scale value which is the fourth input (x) multiplied by the scale value. The scale value is important for DFRM systems that scale space to make sure that space converges correctly. Parameters: A - Scale S-Space Transforms # This component implements many interesting non-linear space transforms that would normally be challenging for DFRM. Many of these are mindbending transforms especially useful for creating 3D fractals. Most of the algorithms result in non-uniform space scaling and require use of the S (fourth) output to adjust the scaling of DFRM fields to avoid convergence problems. Fractals based on S-Space Transforms A fractal based on the Rotation Sym xz & Spherical fold algorithm - 270 - REFERENCE: 4->4 Components Examples: see the files found in ArtMatic Voyager’s DFRM 3D Fractales folder. Input/Output. The input will generally be an 3D S-Scale space (three dimensions plus “S”). The output is 3D space plus S. The S output needs to be applied to scale the DFRM output in order to avoid convergence artifacts as in the tree shown below. Algorithms: • Abs & Scale & Offset • Sphere Inversion. Similar to the 2->2 Complex Inverse component. Inputs X, Y, Z AND S are divided by length(x,y,z)2. Parameter options: Radius 1, Radius Pi, Radius Pi2, Radius 16. • Space Inversion • Spherical fold. Reflect the space between two spheres of Radius A and B where A and B are the values of the parameter sliders A and B. • Sphere Reflection • Mandelbox Transform consists of a spherical fold + mirror foldings above +-1. • Mirror N-Fold xy & Spherical Fold. Options: N-Fold 3 through 20. A mix of planar rotation symmetries with spherical folding. • Mirror N-Fold xz & Spherical Fold. Options: N-Fold 3 through 20. A mix of planar rotation symmetries with spherical folding. • Tetra s-inversions • Cross s-inversions • Kleinian Box s-inversions. Spherical inversion sets. • -3D N-Fold oZ oX • 3D N-Fold oZ oX. Two planar rotation symmetries around they given axis. • 3D N-Fold oY oX. Two planar rotation symmetries around they given axis. • Sierpinsky Tetrahedron. 45° mirror transform that converges to Sierpinsky Tetrahedron fractals when iterated. • Sierpinsky Octahedron. 45° mirror transform that converges to Sierpinsky Octahedron fractals when iterated. • Saw Plane (xz). Infinite mirror saw and scaling in 2D on the xz plane. • Saw Space. Infinite mirror saw and scaling in 3D. When iterated with rotation and offset, Saw Space creates interesting fractal textures and can be used to modify other objects. 45º mirror transforms • Boxodron • Pyranodron • Pyrabulbodron - 271 - REFERENCE: 4->4 Components S-Space Sphere Inversion This component reflects the space around a sphere. The scaling is non-linear; so, make sure to use the s-output (the fourth) to divide the DFRM amplitude at the end of the tree to avoid convergence problems. Undistorted cube Sphere-inverted cube The component’s s-output needs to be used to scale the DFRM (object) field. In this example, the compiled tree creates a color DFRM object (RGB+DFRM) The input is a 3D space in the xyz inputs and a scale value in the fourth input. The output is a 3D space plus a scale value. S-Perspective Distort This component creates a perspective distortion of the space and is useful for deforming DFRM objects. As with S-Sphere inversion, you should use the s-output to scale the DFRM object’s amplitude (as shown in the S-Sphere Inversion explanation) in order to make sure the convergence is accurate in ArtMatic Voyager. The input is a 3D space in the xyz inputs and a scale value in the fourth input. The output is a 3D space plus a scale - 272 - REFERENCE: 4->4 Components value. Undistorted cube Perspective-distorted cube Contrast & Offset A: Color Contrast B: Scale w C: Offset W Adjust the color contrast of the XYZ inputs (which are treated as RGB), and scale and offset the fourth input. Parameter A adjusts the color contrast of the RGB channels and has no influence on the alpha channel (the fourth input). B and C scale and offset the fourth input (w/alpha) and have no influence on the RGB input/output. If the fourth output’s value is infinity, it will be converted to a valid alpha transparency value. Smooth floor A: Floor Level B: Roof Level C: Smoothness Apply the 1->1 Smooth Floor function to the fourth input and pass through the other channels unchanged. See the description of Smooth Floor in the 1->1 components chapter. The output is clipped to a valid color range (i.e. no negative values are passed out). The depth fade color is used where the output value is infinity. In the alpha channel output, infinity is mapped to a low value. ArtMatic Voyager Cities and Themes City Textures A: Pattern # B: Color cycle C: Frequency This component is an RGB + Alpha component for creating ArtMatic Voyager cityscapes. It provides the color texture for building exteriors and an alpha output that can be used for special effects (like embossing) in ArtMatic Voyager. This component generally provides the color shading for buildings created with the 2->4 City Maps component and has a special interpretation of the input values. The available patterns are: City Texture Set A, City Texture Set B, City Texture Set C, Classic Set. The inputs are (from left to right): • x and z. the ground co-ordinates (latitude and longitude) • i: texture index. Index value that selects the color pattern to use. The color texture for the buildings is determined by the “i” input and not by the ground position. The “i” input will usually be provided by 2->4 City Maps, but you may pass in a constant (to select a particular texture) or manipulate “i” to select different textures for the same buildings. • y: elevation. Output values. The left three outputs are RGB values used as the color texture. The rightmost output (the alpha value) is meant to be used as an extra output in ArtMatic Voyager. It is a ‘bump’ value that can be used as an ‘extra - 273 - REFERENCE: 4->4 Components output’ value in ArtMatic Voyager (see the image below) rather than an elevation map. The tree below shows a typical use of this component. Simple typical tree showing The ‘embossing’ of the win- use of City Textures. Note that dows is the result of the City the tree’s elevation output (the Textures alpha output as the tree’s fourth output value) “Normal” in Voyager. comes from City Maps and not from City Textures whose fourth output is not an elevation value. VY Thematic Filters A: Texture B: Level C: Frequency This is an RGB+Alpha component used to enhance the visual complexity and realism of ArtMatic Voyager landscapes and includes vegetation such as grass bushes and trees. The input will be RGB+Alpha and the output is RGB+Alpha. Parameter A selects the texture/theme implemented by the component. The Level parameter generally shifts the texture vertically. The themes are: Texture Gray Rocks Fractured gray rocks White Rocks & Beach Red Rocks & Beach Strata Rocks A Strata Rocks B Strata Rocks C Grass & Bushes Pine Forest Notes Fractured gray/white rocks and beach with dunes below zero. Fractured rocks and beach below zero. Rocks gets gray Stratified patterns with various colors. Those two filters adds vegetation above 0 and below a certain altitude. The vegetation is of course not realistic but works fairly decently from some distance. Wide Beach, Dunes & Peb- Adds a beach with dunes & small rocks near 0 but leaves what’s high unchanged. bles Erosion Erode the terrain above zero to the level specified by parameter B, (approx from 500 meter to 2500 meters). It does change the RGB by lowering the brightness inside valleys. The structure tree Image as it appears in ArtMatic Image as it appears in ArtMatic Voyager - 274 - REFERENCE: 4->4 Components The structure tree at left was used in ArtMatic Voyager to create the image in the middle. The VY Thematic Filters tile (the bottomost tile) is set to Red Rocks & Beach. The image at right shows the image as it would appear without the thematic filter. RGB & Alpha Interactions Several components use the alpha channel to influence the RGB values that are passed out of the first three outputs. They are useful both for manipulating images and helping to visualize the alpha channel (which is helpful when creating 4-output systems for use in ArtMatic Voyager). The example images demonstrate the results when the RGB channel is the U&I Software logo and the alpha channel is a grid. The tree at left was used to create the RGB * Alpha example shown below. RGB * alpha (Expanded) A: Alpha Contrast B: Highlights Level C:Alpha Level Multiply the R, G and B channels with the w/alpha channel. The w/alpha input is passed out unchanged through the fourth input. This is often very useful for helping visualize the alpha channel as shown at left. Alpha Contrast controls the contrast of the alpha channel before it is multiplied with RGB. Highlights Level provides highlights where the alpha channel amplitude is large. This parameter controls the brightness of the highlights. These are added on top of the RGB. Alpha Level is a scaling factor applied to the alpha before the alpha is multiplied with the RGB. Parameter Options: • None . Negative or zero alpha values will set the rgb to black (previous behavior). • Use depth cue color for alpha. Negative alpha values will be mapped to the depth cue color (first auxiliary color). • Use aux color A for alpha. Negative alpha values will be mapped to the second auxiliary color. Alpha Fade A: Feather B: Amount This component uses the alpha channel to blend the first auxiliary color with the RGB channels and multiplies the RGB with a high-contrast rendition of the alpha channel. Feather is the amount of feathering/blending done at the edges of the alpha channel. Amount is a multiplier applied to the blending alpha channel. When Amount is positive, the auxiliary color appears where the alpha channel’s value is 0. When the value is negative, the auxilliary color appears where the alpha channel is greater than 0. Alpha Shade A: Amount B: Alpha Contrast This component is similar to Alpha Fade but draws highlights where the alpha channel is bright and dims the RGB where the alpha channel is dim. The Alpha Contrast parameter is applied to the alpha channel (the fourth input) before the shading is applied to the RGB image. - 275 - REFERENCE: 4->4 Components Alpha Gradient A: Amount B: Gradient Scale X C: Gradient Offset Interpret the alpha channel as a gradient image (rendered with the current gradient) and blend it with the RGB channels. The alpha channel is also passed out unchanged through the fourth output. Amount controls the mix of the RGB and Alpha/Gradient channel. Gradient Scale X is a scaling factor applied to the alpha channel before it is mapped to the gradient. Gradient Offset is an offset applied to the alpha channel before it is mapped to the gradient. B and C do not influence the value passed out of the fourth output. Color Shift A: Hue Shift B: Lightness C: Saturation Adjust the HLS (Hue, Luminance/Lightness and Saturation) of the RGB image passed into the component. This component is very convenient for adjusting the HLS of an RGB image without having to convert color spaces and can be used with straight RGB images (no alpha) by leaving the fourth input unconnected. Sophisticated color processing effects can be created by adjusting HLS. The output is clipped to a valid color range (i.e. no negative values are passed out). The depth fade color is used where the output value is infinity. In the alpha channel output, infinity is mapped to a low value. 4->4 Memory Components Below are brief summaries of the 4->4 memory components. Memory components are covered in detail in the chapter Memory Components. Memory components are used in looped/iterated/recursive trees to combine the results of each pass through the loop. These components are only meaningful in such trees. We recommend performing the Compiled Trees and Iteration tutorial in order to best understand how these components work. Memory Add Each iteration is added to accumulated image by adding the R, G, B and alpha values to those in the accumulated image. Memory Fractal Add A: Power Slope B: Sum Gain Each iteration’s pixels are made brighter or dimmer than the previous iteration’s before being added to the accumulated image. Memory Weighted Add Use the alpha channel to adjust the pixel brightness before an iteration is added to the accumulated image. Memory w Max (updated) For each pixel, compare the alpha (w) input value to the stored image’s and keep the pixel whose w value is largest. In order to be compatible with DFRM, the component is initialized to -infinity. Parameter D (Blend With Last) offers control of the blending between iterations. It is especially valuable when doing fractal iteration. When the parameter is set to the maximum, only the last iteration will be visible leaving only the limit set when working with a fractal. - 276 - REFERENCE: 4->4 Components Memory w Alpha Combine the current iteration’s pixels with the accumulated image’s by treating the w/alpha channel as transparency. Memory Diff A: Smoothness Subtract each iteration’s pixel values from the accumulated image’s. Packed index Mixer (new) This is a very powerful component that mixes 3 RGBA (or Color/DFRM) inputs using the fourth input to control the mix. This component is generally used with an index value (like the one created by 3->4 UVID Sweep Volumes) as the fourth input. This allows composite objects to be created with different color textures for different parts of the object. Additionally, auxiliary colors can be mapped to some values depending on the parameter option settings. The output is determined by the index (fourth input) value. Input A is used where the index value is between 0 and 1. Input B is used where the the index is between 1 and 2. Input C is used where the input is between 2 and 3. 44 Packed Index Mixer used to provide different color textures for different tiles. File: 44 Packed Index Tiles Time as an index. Use time as the fourth input to fade between several systems over time as demonstrated in 44 Packed Index Mixer Time. Examples: See the patterns# series provided with ArtMatic. Parameter Options • Normal - in this mode index values above 3 are mapped to a color defined by the values of parameters B, C, and D (R,G - 277 - REFERENCE: 4->4 Components and B respectively). Also, -1 and -2 are mapped to the 2nd and third auxiliary colors. The first auxiliary color isn’t used since some other components make use of it. • Clamp to 3 - in this mode, values are clamped to the range from 0 through and including 2. • modulo 3 (loop) - in this mode, the index values are looped from 0 to 2. It can be used with a UVID (see 3->4 UVID Sweep Volumes) index to mix several textures and all XYZA tiles (where Z is a texture index). Compiled Tree (updated) In ArtMatic 4.8 and prior versions, 4->4 compiled trees were looped but not recursive (while all other CTs with the same number of inputs and outputs were recursive). As of ArtMatic 5, 4->4 compiled trees are recursive as they should be. A new option, allow feedback (ins -> outs) has been added for all recursive compiled trees. By default, the option is on and the CTs are recursive. When the option is turned off, the CT will loop non-recursively (and thus needs a memory component at the end to accumulate the loop results). 4->4 Compiled Trees are most commonly used to create recursive fractal-like objects. For fractal-like objects, the input to the CT will be a 3D space in inputs xyz and the fourth input (w) will be a density field. Inside the CT, you generally will accumulate the density using Memory w Max. This component is also used extensively for creating iterative plant structures (see 4->3 3D Tree Structures) where the input is 3D Space and (in w) the density field to which the structure is to be added (such as the tree trunk to which branches are to be added). In these cases, the output is typically the modified object (density field) or a packed RGBa value that holds the color texture and field density value (the object). The advantage of using 3D Space + RGBa output is that you can mix the output with other similar CTs to build up complex plant structures. For example, a first 4-> 4 CT might create the first level of branches while a second will add a different secondary branching structure and a third would add the leaves. An example of this is found in the ArtMatic Voyager examples 2.0 Examples/DFRM Life & Plants/Plants Iterative/ Composite... Composite Tree A.vy and the ArtMatic structure that creates the plant. This component can be used with the iteration component when the tile is in feedback mode to accumulate all iterations with a memory component. When creating 3D fractals, it is often useful to mix the various iterations levels together instead of rendering just the the limit set which can be just a very fine dust. Examples: The ArtMatic Voyager example T 44 6_4 Nfold snowflake.vy uses this technique. - 278 - REFERENCE: 4->4 Components T 44 6_4 Nfold snowflake.vy - 279 - Memory Components This chapter documents the behavior of the available “memory” components. Memory components are used in looped (iterated) trees in order to combine the images created in each pass through the loop; they have no practical application in non-looped trees. This chapter describes the behavior of the memory components but does not cover detailed background in looping, iteration and recursion. It is assumed that you are familiar with looping/iteration which is covered in the chapter Compiled Trees and Iteration. NOTE! If you are not familiar with looping/iteration, be sure to read the chapter Compiled Trees and Iteration and to perform that chapter’s tutorials. Memory (accumulator) components store the image that is created when a tree (or branch) is looped. They combine the result of each new pass through the loop with the accumulated result of the previous iterations. A memory component (accumulator) is necessary to store the successive iterations. Without one, all you would see when using Iteration or Looper components would be the result of the last pass through the loop. The different memory components are distinguished by the method used to composite each new iteration with the accumulated image. Most memory components are available for more than one tile type. The basic functionality is the same regardless of the number of inputs and outputs. There are 1->1, 3->3, 4->3 and 4->4 memory components. 1->1 memory components are for gradient-based images. 3->3 and 4->3 memory components are for RGB images. The 4->3 memory components use the fourth input as a mask or controller that influences the compositing. 4->4 memory components are used for RGB+Alpha trees. A Simple Iterated Tree At left is a portion of an iterated tree that repeatedly rotates a line and accumulates the results with the memory comopnent. The complete ArtMatic tree is provided in the Documentation Examples file as More Splines. Below are the results when different memory components are used. Memory Max Memory Add Fractal Add Memory Diff Memory Component Reference Memory Add A: Start Value B: Sum Gain (1->1, 3->3, 4->3, 4->4). Memory Add simply adds the new value to the old value. The Start Value parameter is the initial value which is added to the first iteration. Because the effect accumulates over the iterations, you may sometimes want to set the Start Value to a low value so that the system doesn’t attain large/max values everywhere. This component can be useful for superimposing many instances of a changing system. Memory Add can be especially useful for summing harmonics in systems designed for sound generation. In RGB systems, this component can be used to achieve beautiful transparency effects. In 3D systems, you can achieve volumetric effects. 4->3 note: This flavor of the component is the same as the 3-in/3-out version with the addition of the fourth input which acts as a filter mask that is multiplied against the input values. Where the mask is black, the result is black. Where the mask - 280 - REFERENCE: Memory Components is white, the result is unchanged. Memory Diff A: Smoothness (1->1, 3->3, 4->4). Memory Diff subtracts the values of the new iteration’s pixels from those stored in the component’s memory. Fascinating patterns emerge where different forms and colors intersect. Memory Depth Sort (3->3) Memory Depth Sort acts as a memory-based version of the other depth sort functions. Rather than performing a depth sort between two sets of inputs, the depth sort is performed between the current set of values and the stored values from the previous iteration. Depth Sort preserves the values that correspond to the frontmost pixel when the three values are considered as 3D position. The frontmost pixel corresponds to the value with the lowest valued z (third) coordinate. This component is useful for accumulating 3D objects in recursive Surfaces Z sort iGate E and iterative trees. See the files “Surfaces Z sort igate E” and “Surfaces Z sort igate” for sophisticated examples that use the component as a “z buffer” that builds up layers synthesized by the system’s compiled tree. Memory Fractal Add A: Power Slope B: Sum Gain (1->1, 4->4) Memory Fractal Add scales the brightness of each successive iteration before performing a simple addition of the new pixels to those stored in the accumulator. As a result, layers increase or decrease in brightness. This increasing/decreasing brightness helps prevent the brightness overloading that can occur with Memory Max. The brightness scaling can also provide a sense of depth to layered images. Power Slope is the gain change applied to the pixel brightness between iterations. The gain changes exponentially. When the value is .5 each iteration is half as bright as the previous one. When the value is 2, each iteration is twice as bright as the previous one. Sum Gain adjusts the brightness of the tile’s output. Memory Max (1->1, 3->3, 4->3). Memory Max retains whichever is larger: the new value or the stored value. When the iterations are done, this component will essentially have returned the largest value (for each point) of all the iterations. 4->3 note: this flavor of the component is the same as the 3->3-out version with the addition of the fourth input which acts as a scale factor (multiplier) that is applied to the input values. Memory Min (1->1, 3->3). Memory Min compares the pixels in the current iteration with the stored pixels and chooses those with the smallest values. Memory Weighted Add A: Alpha Contrast B: Alpha Offset (4->4). In each iteration, the alpha channel is used to scale the RGB pixels. For example, a tree like the one below can be used to simulate Memory Fractal Add. This component is something like RGB * Alpha with memory. Alpha Contrast adjusts the alpha channel contrast before the alpha channel is multiplied against the RGB values. Alpha Offset is added to the alpha channel value before the alpha channel is multiplied against the RGB values. - 281 - REFERENCE: Memory Components Memory w Alpha (4->3, 4->4). Memory w Alpha mixes the current RGB values (received via the first three inputs) with the stored RGB values by interpreting the fourth input (w) as the transparency of the current values. A high ‘w’ value makes the current value (pixel) opaque. A ‘w’ value less than 0 makes the current value (pixel) completely transparent (and, hence, invisible). See the example file MemAlpha Clouds for an example of this powerful component. We recommend rendering the animation to get a sense of the incredible effects you can achieve with this component. One can simulate volumetric-3D rendering with this component. Memory w Max (4->3, 4->4). Memory w Max compares the current w value (the value received in the fourth input) with the stored w value and stores whichever set of values (R,G, B, and w) has the largest value for w. Note that only the ‘w’ value is used for the comparison unlike the simple Memory Max component which uses all of the input values for the comparison. Memory w Min (4->3). Memory w Min compares the current w value (the value received in the fourth input) with the stored w value and stores whichever set of values (R,G, B, and w). If the current w value is smaller than the stored w value, then the new RGB and w are stored. See Mwmin perlin noise for one example of this component. This component is very much like Memory Depth Sort but uses ‘w’ (which is not passed out of the function) rather than the third input for the comparison. Memory Packed Z Blend A: Feather B: Offset (3->4). Memory Packed Z Blend is a memory version of the 3->4 Packed Z Blend component. Input 1 is not iterated and serves as the background image while both inputs 2 and 3 are iterated. Memory Packed Alpha A: A Threshold B: Feather (3->3). This is an accumulating version of the 3->3 Packed RGB Alpha component designed to be used in iterated trees. Usually, inputs 1 and 2 will be packed RGB streams and input 3 will be a simple value. As demonstrated below, adjusting the threshold can have a dramatic effect. When using this component. It is important to explore how the threshold value influences the image. Input 1 provides the background image and is not iterated. Inputs 2 and 3 are iterated. In each iteration, input 3 is applied as a transparency (alpha) mask applied to input 2 before the result is combined with the accumulated image. Normally, input 3 is a single value, but a packed stream may also be used. If input 3 is a packed stream, its R, G and B values will be applied as masks to the corresponding color channels of input 2. - 282 - REFERENCE: Memory Components In the example shown above, Input 1 (the background) is Interlaced Grid. Input 2 is a picture of the U&I Software logo. Input 3 is a Line. Inputs 2 and 3 are rotated in each iteration. The logo shows through where it intersects input 3 (the line). Threshold (Parameter A) is the threshold that the alpha mask (input 3) must meet before its pixels are visible. Input 3 must be brighter than the threshold for input 2 to be visible. Threshold low. When the threshold is low, the background is completely masked. Threshold medium. As the threshold increases, the background shows through in more places. Threshold high. When the threshold is high, input 3 is only greater than the threshold where it has its peak values. - 283 - History 2015, June 08 - Complete merge of all component descriptions from the ArtMatic 5 and ArtMatic 6 “New Features” guides into the main component reference. Published online June 9, 2015. 2015, June 15 - Update intro section of each component chapter that features new classes of components not covered in original intros. For example, 3->1 Reference chapter mentions DFRM in intro section. - 284 - REFERENCE: 1->1 Components - 285 - REFERENCE: 1->1 Components - 286 - REFERENCE: 1->1 Components - 287 - REFERENCE: 1->1 Components - 288 - REFERENCE: 1->1 Components - 289 - REFERENCE: 1->1 Components - 290 - REFERENCE: 1->1 Components - 291 - REFERENCE: 1->1 Components - 292 - REFERENCE: 1->1 Components - 293 - REFERENCE: 1->1 Components - 294 - REFERENCE: 1->1 Components - 295 - REFERENCE: 1->1 Components - 296 - REFERENCE: 1->1 Components - 297 - REFERENCE: 1->1 Components - 298 -