![]() |
Most of the options are self-explanatory. If there were some textures already defined then Delete
would delete them from the list, Edit would allow you to change the various parameters and
Copy would prompt you for a name and produce an identical texture with that name. Import allows textures from other AOI files to be pulled into the current file. |
Selecting on New brings up the dialogue on the right: Here you enter a Name for the texture and select which type of texture you want from the drop-down list. |
![]() |
![]() |
|
Specularity is the reflectiveness of the object. A value of 1 means the object is completely reflective
and thus the diffuse colour will not be visible. A value of 0 is completely non-reflective. The images on the right show objects all with a specularity of 0.3 and show the effect of varying the Specular Colour. Plastic type objects normally reflect virtually white light whereas metallic objects tend to reflect light that is tinged with the object's diffuse colour. In the examples here, the Hue and Saturation of the diffuse colour has been used as the specular colour with varying amounts of Value and compared with a 'plasticky' white specularity. |
![]() |
![]() |
The same surface properties as were described in Uniform Textures are
also here. This time however, both the colours and the values are determined through the choice of
2-D images. This means that the values of the various parameters vary over the object's surface according
to the image used, instead of being uniform. On the left of the dialogue box are the diffuse, specular, transparent and emissive colours. If you click on the square box immediately to the right of the text, another dialogue box title 'Images' appears. Click Load to read in a new image. The image can be in .jpg, .png, .gif or .hdr format. Simply find the image and click on 'Open' to get the image. A thumbnail of this image is then displayed in the 'images' dialogue box and is automatically selected (shown by being enclosed by a black square). If other images have been read in already then you can select any of them by clicking on them. Once the required image is selected, click on Done. (If you wish to have no image selected, click on Select None). Note that there is also a uniform colour box next to the image box. The colour specified here modifies the colours of the image map uniformly. As with the uniform texture dialogue, double-clicking on the preview displays a menu from which the view and preview object can be changed and the preview can be zoomed (CRTL and RMB drag up/down) and panned (RMB drag). |
![]() |
A preview window is also displayed showing the current texture applied
to a sphere. This preview window automatically updates as the texture is built up. The size of this
preview can be altered by dragging the sides of the preview window frame and the preview can be zoomed
(CTRL drag with RMB) and panned (drag with RMB).
As with the uniform texture dialogue, double-clicking on
the preview displays a menu from which the view and preview object can be changed.![]() To start with, the preview shows a uniform white texture as this is the default. Please note, however, that 2D textures are shown using projection mapping (link to mapping section), whereas 3D textures are shown using linear mapping. Thus, the same procedural texture might look different for the 2D and 3D preview. All the following examples in this section have been created using 3D procedural textures. As an exercise, you might want to check if they look different for a 2D procedural texture, and if it's the case, why. The boxes at the right hand side of the procedural texture editor show the surface texture properties that were described above for the other type of textures. The idea of the procedural texture editor is to pass values (either colours or numbers) into the relevant property boxes. This is done by inserting values, functions and transforms and connecting them to the property boxes. This produces a set of values which are calculated for each point on the surface thus creating the texture. Values, functions etc are inserted from the Insert menu of the procedural texture editor. |
If we had connected a Y box to this, we would have got a gradient in the y-direction. What if we wanted
a gradient diagonally ? In this case, we need to feed (X+Y) to the input of the color map. Select both
X and Y from the Insert -> Values menu. To perform an addition, we need to select Insert ->
Functions -> Add . Then connect the outputs of the X and Y boxes to the input arrow of the Add box,
and the output of the Add box to the input of the color map as shown on the right: There is another way we could have achieved this. Under the Insert -> Functions menu is a powerful function called Expression. Select this and double-click on it. This function allows the entry of any mathematical expression of x,y,z, time and the box inputs. Enter 'x+y' in the box and click OK. Connect the output of this box to the gradient and the same effect is achieved. This is also shown on the right: |
![]() |
![]() |
Most of the entries here are self-explanatory: Number inserts a box with a single constant number. Double-click to change the value. Color inserts a single constant colour box. Double-click to bring up the colour chooser dialogue to change the colour. X, Y and Z simply bring up boxes with the x,y,and z values at each point on the surface. For procedural 2D textures, Z is zero. Time This inserts a box, the output of which is the time value. In animations, this value will change and thus textures, themselves, can be animated. |
![]() |
These entries are applied to numerical values to modify them in various ways: Expression allows the entry of any mathematical expression of x, y, z, t (representing time) and any of 3 inputs to the box. The inputs are identified as input1, input2 and input3. Expressions can use the following mathematical operations: +,-,/(division),*(multiplication), ^(to the power of),%(modulus) and can contain the following functions: sin(a): sine of a, cos(a): cosine of a, sqrt(a): square root of a, abs(a): absolute value of a, log(a): natural logarithm of a, exp(a): e to the a power (same as e^a),min(a, b): minimum of a and b, max(a, b): maximum of a and b,pow(a, b): a to the b power (same as a^b), angle(a, b) : the angle formed by a right triangle with sides a and b, bias(a, b): the Bias function with a bias of b,,gain(a, b): the Gain function with a gain of b. The constants, pi and e are also recognised. Custom allows a curve to be drawn relating the output to the input. New points can be added by <ctrl> clicking on the graph and existing points can be moved by clicking and dragging. The curve can be smoothed by checking the appropriate box. In addition, the function can be made periodic, i.e. it repeats itself forever outside the 0-1 range. Otherwise, input values less than 0 produce the same output as an input of 0 and input values greater than 1 give the same outputs are input values of 1. Scale/Shift multiplies the input value by a constant value and adds an offset value. Double-click on the box to alter both these values. Add, Subtract, Multiply, Divide These boxes each have 2 inputs which are added, subtracted (bottom input from top input),multiplied together or divided (top divided by bottom) depending on the operation selected. Abs returns the absolute value of the input, i.e. if the input is greater than 0, there is no change, if the input is negative, the positive value is returned (e.g. -5 becomes +5). Blur Produces a blurring effect. There 2 inputs, one is set of values that you want to apply the operation to, the other is a value defining the amount of blurring. More accurately, this second value is the range over which the smoothing is performed. Clip This function limits the input to be within a range specified by double-clicking the box. Input values between the limits are unchanged, values less than the minimum are set equal to the minimum, and inputs greater than the maximum are set equal to the maximum. Greater Than returns 1 if the top input is greater than the bottom and 0 otherwise. Min, Max Both these have 2 inputs. These are compared and the minimum or maximum respectively is returned as the output. |
![]() |
These functions are used to create or change colour values in various ways:
|
Blend is another way of defining a colour from a range. It takes 2 input colours and blends them according to the numerical input. The important difference between this and the custom colour function is that the colours are inputs are can thus be created by other functions. This is a simple example where one of the colour inputs is a fixed red colour and the other is a colour selected from a custom colour map. The function selecting the colour from the map is simply Y so this would create a gradient in the Y direction. The colour selected and fed into the blend function thus varies from white to black depending on the Y position. This then gets mixed with red according to the X position which is the function fed into the Blend colour function. Obviously much more complicated functions can be defined. | ![]() |
RGB This module allows Red, Green and Blue components to be determined via numerical inputs.
is a seemingly simple function, its power lies in the fact that the components are inputs are can therefore
be calculated by other function combinations. In the example on the right, the Red component is determined
from a Noise module, the Green component is obtained from a
Wood pattern and the Blue component is
dependent on the View Angle to the Power of 3. |
![]() |
HSV As with the RGB module, this function has 3 numerical inputs; one for each of the colour components. This time the Hue, Saturation and Value components can be controlled via numerical inputs as shown in the simple example on the right in which the Hue is determined by the x-position. | ![]() |
HLS As with the previous two modules, this function has 3 numerical inputs; one for each of the colour components. This time the Hue, Lightness and Saturation components can be controlled as shown on the example on the right in which the Lightness varies sinusoidally and the Saturation is determined from a scaled Cells pattern. | ![]() |
This module allows scaling, rotation and translation of x,y or z. Double-clicking on the
box brings up a dialogue allowing entry of the relevant transformation parameters. An example is shown on the right. Here is the same basic texture we had in the HSV example above. The X output of the linear transform is fed into the Hue component of the HSV colour function. With the default transformation settings, this would result in the same texture as before. However, a scaling factor of 5 has been entered in the x column and a 45 degree rotation has been applied in the z-axis to produce the modified texture seen. |
![]() |
![]() |
The polar module transforms the linear co-ordinate system of x and y to the polar co-ordinate system
defined by r (radial distance) and theta (angle). An example is shown on the left. The top example shows the result of feeding the r co-ordinate into the Hue of the HSV function producing a pattern where the colour is the same for points at the same distance from the centre, thereby producing rings of colour. Similarly with the theta co-ordinate, points at the same angle have the same colour as shown in the lower image. |
This transforms the linear co-ordinate system to a spherical coordinate system. The example on the right shows an example using the Grid pattern (see below). This is used to select a colour from the custom colour function giving the result in the upper image. Applying a spherical transfrom to the co-ordinate system before the Grid pattern produces the image below. |
![]() |
![]() |
This transform keeps a linear co-ordinate system but applies a random jittering effect. Double-clicking
on the box displays a dialogue allowing control of the amplitude of the jitter and the range over which
the jittering takes place. In the example on the left, we have the texture used as an example above under 'Polar'. This ordinarily produces a set of rings of different colours. This time, however, a jitter has been applied to the x and y co-ordinates of amplitude 0.5. The top image shows the effect with a scale of 1 and the lower image shows what happens when this scale is reduced. |
![]() |
There are several pre-defined texture patterns in Art of Illusion accessible through the Insert -> Patterns menu as shown on the left. Each pattern has 3 inputs for x, y and z coordinates. |
The expression distance2-distance1 is a very useful function: Here, it is plugged into the default custom colour module for the diffuse colour and emissive colour. |
![]() |
Double-clicking brings up the dialgue box on the right: Clicking on the outlined square brings up a dialogue enabling you to select or load an image. The X-size and Y-size are the relative sizes of the image. The remaining options allow the image to be tiled (simply repeating ad infinitem) in either the x or y direction or to be mirrored. In the latter case, the images are tiled in such a way that adjacent tiles are mirror images; this allows a seamless blend across the surface. |
![]() |