This is an unofficial console mode compile of Povray v2.2 to run on a Dec AXP150 running Windows NT 3.x. It also includes the Harlequin patch which gives two new pigments and two new normal patterns. The pigments are HARLEQUIN and MILLEFIORI. The normal patterns are FACETS and SCOOPS. See below on for how to use them. ** BUGS ** I don't know enough C to fix these problems, so there won't be a bug fix version available from me. The bugs currently in this version are: The +D switch is completely disabled. Absolutely NO on-the-fly viewing of the image is available. (I'll talk to someone who knows how to fix it, though. Putting the camera directly above its look_at point causes a Dr Watson error. Just put the camera something like 0.000000001 to one side. The program crashes for unknown reasons in the middle of a trace sometimes. Especially when the new textures and normals are being used. ** NEW FEATURES ** The new effects are: harlequin color_map{[..]} wildness <...> mortar <...> [is_2d] [taxi/euclid/fourth] A sort of random tesselation with solid colors. By default it is made up of irregular polygons; setting wildness (see below) to 0 creates a randomly-colored checker texture. Harlequin uses a color_map, from which colors are randomly chosen. EG: {[0.0 color Red] [0.5 color Red] [0.5 color White] [1.0 color Black]} will make half the cells red, and the other half different shades of gray ranging from white to black. How it's done: Take all the integer lattice points in space. Perturb them at random (the scale of this is called "wildness". Call these "centers". Divide space into regions so that each region contains the points closest to one specific center. Color the whole "nearest-neighbour region" (aka "Dirichlet domain", "Voronoi region", "Wigner-Seitz cell", etc...) one randomly- selected color. Uses: Coarse granite. Camouflage greens (with a bit of turb- ulence.) Meadows (scale huge, use a greeny-brown color map and low wildness) Crazy paving. Abstract murals. Rough-hewn stonework (put a translucent layer with colors over a stone texture!) Conglomerate stones and some fancy marble (use a bit of turbulence.) Modifiers (with sample values) wildness 0.5 The more wildness, the further from their original cubical shape the cells are. Wildnesses over 1 may cause strange 'splintered' shapes. Wildnesses near 0 give near-cubical cells. The wildness may also be a vector. wildness<1,0,1> would give centers perturbed only in the x and z directions; thus the cells would look something like the cells of an irregular honeycomb, with vertical "walls" but random "roofs". mortar 0.1 This puts a layer of "mortar" between the cells. Parameter = width of layer: so mortar 0.03 is very narrow, mortar 0.5 very wide. (Cells are of approximately unit size.) Default is 0. mortar_colour White Chooses the color of the mortar. White is the default. In a short-lived first release, color_map(0.0) was used - this was not very satisfactory, and created occasional "mortared-over" tiles. is_2D Uses only distances in the XY plane. Looks like an image map. Useful (a) because it runs faster, (b) because if you want to avoid big areas of mortar on a _flat_ surface, the 2d verson works better. No parameter. taxi Uses taxicab metric d = |x1-y1| + |x2-y2| + |x3-y3| instead of Euclidean distance to compute the cells. Instead of boundaries at all angles, the cell boundaries are all planes with orientation where i,j,k are taken from {-1,0,1}. The effect is zigzag boundaries. Try it...might look good for frost or something! fourth Uses the fourth root of the sum of fourth powers instead of Euclidean distance. It's somewhere in between the effects of the other two metrics. Good for masonry. euclid This is the default metric - you don't need to declare it. It's there just in case. Turbulence, scale, translate, etc: as usual! millefiori color_map{[..]} wildness<...> [is_2d] [taxi/euclid/fourth]. Imagine getting a whole load of those gobstopper candies with layers of different colored sugar, then squeezing them together into a big solid mass. Or, to be less revolting, imaging fusing together many glass balls with concentric spheres of color. Now carve something out of the mass. Like spotted, but more polygonal. Uses a color_map in a fairly conventional way. How it's done: Do the Dirichlet domain calculation. Don't worry about what the nearest center is. Rather, keep track of how much nearer you are to the nearest neighbour than to the second-nearest. Then use that as the index of a color-map. Note that if you use the same modifiers you get the same cell boundaries as in harlequin. Useful for layering textures. Uses: Decorative "glass". Tortoise-shell. Convection cells in a cup of coffee. Cracks in mud. Roads seen from the air. Stones with "crazed" pattern. Snake scales. Modifiers: Same as for harlequin, except for mortar, which has no effect. If you want mortar, just leave a one-color band of the desired width at the bottom end of the color_map: color_map{[0.0 color Mortarcolor] [0.1 color Mortarcolor] [0.1 color Othercolor] ...} scoops 0.75 mortar 0.2 wildness<...> [is_2d] [taxi/euclid/fourth] This is a normal modifier based on the Dirichlet cells. If the amount is positive, the middles of the cells appear to bulge out from the surface, creating the appearance of a cluster of fused nodules (or scoops of ice-cream!) If it's negative, the middles of the cells are 'sucked in', making a surface that appears to have been chipped or carved with an ice-cream scoop. The scoop curvature is added to the existing curvature. Thus, if scoops -1/R is applied to a sphere of radius R, the scooping will (to second order) cancel the curvature of the sphere and it will appear faceted. However, most curved surfaces do not have uniform umbilic curvature at all points - so it won't facet them. All modifiers from above apply. The "mortar" is a band at the edge of each cell which isn't scooped. Moreover, if the same set of modifiers is used, the cell boundaries will coincide - allowing colored bulges (stones?) in a flat mortar matrix. Typical amounts are from 0.1 to 1. Values much greater than 1 get rather unrealistic - but interesting. Sort of like a brain. Uses: Mostly strange. Try it on a mirrored sphere. Also, it ought to make a pretty realistic raspberry! facets 0.1 wildness<...> This is a real faceting operation. I haven't implemented variant metrics, though it could [should?] be done. It makes the surface of any curved object appear to be broken up into small poly-gonal facets. Think of mirror balls, or beaten copper. It works on anything, not just spheres. The amount corresponds to the size of the facets, proportional to the object. facets 0.01,on any size of convex body, will break it into on the rough order of 10,000 facets. facets 0.1 will produce around 100 facets. Near 1, it gets rather unrealistic; larger values could crash. How it works: The original normal is itself a vector, lying on the unit sphere. Scale it by 1/amount - it's now on a big sphere. Find the Dirichlet center nearest it, and normalize that, to get the new normal. The effect is that all the points from a region on the surface now have the same normal - so they form a facet. Uses: Beaten metal, irregular crystals, etc.