Texturing with Orbit Traps Direct (UF5)

From Ultrafractal Wiki

Jump to: navigation, search

Orbit Traps Direct (UF5) is a Coloring Algorithm in dmj5.ucl

also see:

   Orbit Traps Overview
   TrapShapePlayground

There has been a lot of discussion about texturing with Orbit Traps Direct UF5 and how well it works. I thought perhaps I could help a little bit with some explanations and example UPRs. I hope all these UPRs work as expected; if there are any textual errors, please let me know. This is a bit long.

To start with I will be re-using the TrapShapePlayground I posted earlier. Here it is again if you missed it:


TrapShapePlayground {
; www.fractalus.com
::HdttShn2deVzutNMM47FovDG+BI12bppbD6yaXLQBKWB6uHoYRnoVZJBJl+zb/oktjTadck3
  pEa+9RRRRSJWZolOq47nfWSij7EAJ9PGq+pNUNk8og++ajarklm8Kn52QuKLLZDwXvxF+LqH
  MWSundpBYcnlkeDtmDykHmlcvSC2f8tLWcRRW2VpnfWAfYtKpaHXJJp/kW+c3ao00Su7dSOa
  6awtRxI1bFOumatnfWNVr5y1N0BpDMksLQg01SvHUpMIYaQdN9NuXfeSFXASaNuteyRlMqhN
  bbVdaCy38OJ9OQCGe5tNcT9c1Lbt01CcZ3nnY137EW+A+LIWZUuBIN7llrbMcYr8JltielDS
  mxfBMoFc7B8josOqx5DADYB9St6Vc7XcR2nVtiyFqtOSOUgc5SLnBNH/Gq0Wh0EcJQNJGQDU
  HRqSsKBnR+ax3yv8q5fZx8BjqliQk4wA7dGKDTGcXrEKDe41GsKbFbDxs6/OPEev5h7X+bzK
  uznDaHj0nCxfUbncfQ+T8b9tTjE9vlKvb58u1pwXtMADEQp7D7tQpVQR6pYe4GMW0UnyEJe/
  maPHNGS6gAVI8FXUf9Le4hiJ9ypRak203IR3UMHLa7zcd8oFKFi+XFDiXvHe3GDY3oEMS2s5
  H34NlRYNHJtUVXrkhTf/J/f60kGB7YP/3nQ/SHNltWw8fQ7wNak0aCm9tunKna1LgF7HFPPm
  hX5m2SZLp4lg5xTAvCIk6TymOHrD0Thn9Z41pifqrB1qD9DGp8x/4gh6s5/+jKuc0ubeQR3c
  rFc/qmnlfa47at5l1eHKmUUMpc4KWwkeauTreNgf3yOBC6JSCfKgBoMWOJa0RWBsnxLi04Vb
  llhSlmXYE3KowrKmg/jwn0Gox8xuDorGvBUtiNUlxD4nvWosgdsSDP5YTjaxubNnC4X5uN9X
  mFDzuCKvYZz+4Y8wmI9meAt4FONPn8dwOSIHezt1c0mM3KojFIbZHdJ5O4R2npnwBdaqQvak
  wSDJfCX/NnDnLtDs1ZA5acursZFj8kjdvI9j9v6eB9NcMLXWCpn2GxG02D/Buw/DJWr7FJZs
  McrT1UlHyiwxZO6UMHZUlu5UuBqo4ImYgpbcggVs1KFG2RrnwxB9ej8VcIjgDQya/Snc+lLW
  soIHPeaHfdfDgDP1hub42i5I0/h2+6Yb
}

And here is the outline for the coloring (on the Inside tab for the playground):

Generic Coloring (Gradient)
  Coloring Algorithm -> dmj5-OrbitTrapsDirect Gradient UF5 (UF5)
    Trap Iteration -> Trap Select
    Trap Position -> Trap Position
    Trap Shape -> Point
    Trap Transfer -> Trap Transfer
    Trap Mode -> Closest
    Trap Texture -> Flat Texture
    Trap Color Mode -> Distance

Now before we dive in and look at texturing UPRs, we have a bit of theory to cover. "Texturing" is just the process of modifying the color or shape of something to make it appear to have a surface *besides* the usual smooth coloring.

Recall the information flow for basic orbit trapping:

 location           inside
 mapping   fractal  outside                                layers

  point -> orbit -> trap distance
           orbit -> trap distance
           orbit -> trap distance
             .
             .
             .
           orbit -> trap distance
                    (final) distances -(trap/color mode)-> color

There are several ways we can apply "texture" to our traps:

1. We can distort the trap shape itself.
2. We can add or multiply our texture to our trap distance.
3. We can add the texture value during the trap coloring step.

Here is where each of those methods is applied in the data flow:

pre
 location           inside
 mapping   fractal  outside                                layers

  point -> orbit -> [[1]] -> trap distance -> [[2]]
           orbit -> [[1]] -> trap distance -> [[2]]
           orbit -> [[1]] -> trap distance -> [[2]]
             .
             .
             .
           orbit -> [[1]] -> trap distance -> [[2]]
                    (final) dists -(trap/color mode [[3]])-> color


These three methods all produce different results. We're going to take a look at each of them so you can understand them better. And to do that, we're going to use two different textures as examples. Here is the first:


image:fBmTexture.jpg


fBmTexture {
; www.fractalus.com
::B33yAgn2di12ytJMQ03zM5fghPAHgEsTbH9SSa7MdG3+Qz7ekhFb1IkYkkzl+13VCw4LYQ0n
  SE75s30urkchimZo8Pf9VBBGmhDkwiHKDeGe3sTBhBvxyNbJLSiC2CsNbNu/lT/AUaSslUmC
  yZGNJ8JaJDEB/QKA9X+0NxzvJJK6+v085lz2LZhTQ41X5UjzyZ0KDTKIhPQzeZjSuTkHGIro
  ZMzHk4oogSwsVmTK3xNsKqWf9Vl0qKmYTNdQYAFJ6GEIdjw6YFSFCm6EXSfnZlHHUw4ggWiB
  5vNUROVlPbXRZYAyX9BJ87gAUssvVzN0ytaVjmekjm9Qe81fudxql4fB+al00DpZvuaTtidh
  yZCbWaF2L5c2rgC1g5AgniSboKjNB0jGqWVJfDD/kbiOX0aKjL3ZIxQCylJ0scouYQRF6CkG
  nJAqKQBVA1QEyAtkzyJ3l8p453ne7i0ezqZcXm44E73V0csYw8okLV4mXTyKrZZTKOv8Ppu0
  7TL/xqfpWzMProV6hIdWK+Uptr7Synxvx3GHJ6frkW3yYdrxwXsyBD4Qm5kYzGW/2JIcMmHH
  g+imakKPxbDqDcUfIV5WQ5cbzF12/ibe4ygu1heqkmyXPRX3M7La9LsK/RzlSE9XT6Ff1B4N
  bVgerknTimleZlX3Gh9ckwMZZpU429t78P3KJ0D2+u/fIhOT7NldaQ9fQ74A1Ta1JzuR3TlT
  p8VQjzj8nXuiVYmmp0ZU8IxY/JgHB4K9JRTnj2AVThn+F4tpifq2gqrczDGo9ZLtC6bym97f
  7hlhjQ17RbNg7sZcU84w3PYzuuYdpPGpYlQy0wZtsuQ6nWRheqipFcdkmUQ2Dta/fCmE3txT
  xlFFaYkWkT51c5iZxpLSTv/u7mmF1s/CkkU8yipzHjZ1q62xbnFPPZcwUxGEckHa11TM0U8j
  UpD+tLGHtEvZtdGlPQ9Ixv/GZ9fSCoCHn70OHxhfvZnAhqJSCriUANPPm4NaPnMfgyT85kaH
  +idiM3Q867+6nNk4lYmQEgwrDBfdqGDk4pBorH+wxSZefTtXif+RuUjV5hDT23SpGs7t5UA/
  Gzst7iW+wsdcvdZWdccJe4AoOV3jU8yQ1P15DQPQKv+lyX8AQOdoEZDbvbL3D3zDI6Ic85go
  XNQapmktgr7Wd9XLtHs2oAxGzWscOZg659vW60ZYtvu7JGWlLyG6A22v5bS7A8H5C/PkybcP
  PJjth7My6+cXVE+U7L+C7L8M623Q/EUQ3xtFTtPV1pFdpUipdU7BMRO8O5O8BwOHgE18l21x
  zXsYRSMu908TrcoCwH23iu9HeJJFh+PAcPrf9A==
}


Here I plugged the fBm shape into the playground. Most of the options are the default, but I changed a few: I increased the fBm "Scale" to 3.162 and in the Trap Transfer I changed the "Offset" and "Post-scale" to 0.5. The "Scale" change just increases the "noisiness" of the texture by shrinking it (play around with it to see). I'll talk more about the [Trap Transfer]] tweaks in a little bit. Here's the outline of this UPR:


Generic Coloring (Gradient)
  Coloring Algorithm -> dmj5-OrbitTrapsDirect Gradient UF5 (UF5)
    Trap Iteration -> Trap Select
    Trap Position -> Trap Position
    Trap Shape -> fBm (dmj5.ulb)
      Noise Basis Function -> Noise
    Trap Transfer -> Trap Transfer
    Trap Mode -> Closest
    Trap Texture -> Flat Texture
    Trap Color Mode -> Distance

Now, here is the other texture:


image:Pillowed_Texture.jpg


PillowedTexture {
; www.fractalus.com
::wust9in2deV3upOMM47n0eHq6DA02zYsfUu5MObSTa6Mpt7RhGXInlmUlE2Gv9Hn0WK/Ugwu
  CS93njtjtjThmmbpi7u8ioIL3KAS8rchQ9FwieH+2uUDxRfxZ2FkxZJRLA+8FW/fF0Vg2QSd
  Mz1AjbNk4J0SOIjeWJBz93OM96hZJJ3cfznfZwaJj9Civ8Cva8bfOtyyVSS8vp5fMXrWKZxR
  qKaO3uikmkEVC2FKGpcpwyroGzlXUSrq4y510BpF0kkhIQ6cpzwKUaEM1Luk+N3JPNqgLAJt
  E903sUJjqZDWWUGHh81rIxPBSQzzfsmbsjb10GN9gA32N5JmdX7ipvg/CiZaltHSD+c68aF7
  dl9E2s0JsXyM+ngG1gdDg7iyYparLA0jGqmWhnpaS2wk9FNjyFqlWSKkhc5SDnB1ZEaq0Ug0
  EcJQ1RaoCoWiUFZUCOjcV2tpXfzofNeUvR1chPSsdg9JNlhJD2HUClGP8aCW5NLbCxsy/NyH
  en8yzT/reG3+umWZOGp9Cx7KtddXQeP+N22pRi23UlzssOz6U4Lm6hBCI3ujv5cr38CiPFzt
  dwQRTtKdg4dO1GGaIkq8LoChr4i6qfxDPcZU364AVST6bgorLmDFt5DeV4oFKFi+PZ9ivaD8
  2FawsQJYkkBjOsyrLjwaueO7fnLOU+8OkD94fTCd7cwUWaA9PgWbuj17PhyDDmYfD7qKgox4
  JVOHbLpDmJKtrtf47nxdpCak4h2wwO4aIi2HeD5VHhhZBF9leKxdf/VFXe0ycHogrybA3trp
  JpnG+6ac36KnBFyZFGhjzVllKp3r8JuNCiPN3zLz1jf92eGEqOTS4diagyYpkgRbypYCQ6Zo
  8sAVexSZuf8n6raDbHUYPzzw+R41OQ25o+Q9A6MDOZwhhWqY9VZ8C+5HEKDYOWphjcopRNYX
  vnnD4v42Fdd1DhZbBlbZetfcIeYTkOV3jUs1b9cVrAzRC51jlfomMPKoHLQ2wO4Sy1wDsPTH
  ht60UgW1RCL1kcJcdX90fu0awGrGkzx3lkMI7INkXPa2u9vaHlcCHzyl5Q8p1RoBtNwvlJ8T
  IxaMvAJjlhLtq6qcfWEOX/BHn/Azs3Ow+Eogiv1CDMtzF71ipUpwwOq9IO+invJXhTb7NASS
  zXaXne94xjzSxjnm3xtpCwXR0iu9VeZjQo/HcmfNTA==
}

This provides a "pillowed" texture that is very regular. Here's the outline for it:

Generic Coloring (Gradient)
  Coloring Algorithm -> dmj5-OrbitTrapsDirect Gradient UF5 
    Trap Iteration -> Trap Select
    Trap Position -> Trap Tiling (dmj5.ulb)
    Trap Shape -> Point
    Trap Transfer -> Trap Transfer
    Trap Mode -> Closest
    Trap Texture -> Flat Texture
    Trap Color Mode -> Distance

Again there are default parameters here except the "Post-scale" in the Trap Transfer block has been changed to 2, and instead of a "Trap Position" in the positioning slot I've put "Trap Tiling", where I've set the "Tile Spacing" to (0.5,0.5) and the "Tile Rotation" to 45. Try changing the actual trap shape and you'll see how the tiling is being used. Change it back to a "Point" trap shape when you're done.

With these two examples, we're ready to experiment with texturing.

For simplicity, we're actually going to start with texturing method #2, where we add or multiply our texture value together with the trap distance itself. To do this with the original TrapShapePlayground, we need to replace the single "Point" trap shape with a TrapShape Merge, so we can plug in multiple trap shapes:


image:TrapShapePlayground.jpg


TrapShapePlayground {
; www.fractalus.com
::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
  ckPeG+/6hzTQZ1xRf4/JII+yh+/Aenws/D==
}

Here's the outline:

Generic Coloring (Gradient)
  Coloring Algorithm -> dmj5-OrbitTrapsDirect Gradient UF5 (UF5)
    Trap Iteration -> Trap Select
    Trap Position -> Trap Position
    Trap Shape -> TrapShape Merge (common.ulb)
      Trap Shape -> TrapShape Block
        Trap Position -> Trap Position
        Trap Shape -> Point
        Trap Transfer -> Null Transfer
      Trap Shape -> TrapShape Block
        Trap Position -> Trap Position
        Trap Shape -> Point
        Trap Transfer -> Null Transfer
    Trap Transfer -> Trap Transfer
    Trap Mode -> Closest
    Trap Texture -> Flat Texture
    Trap Color Mode -> Distance


Now with this UPR I've changed the "Merge Mode" in TrapShape Merge to "add" because we're going to add our texture to our trap shape. As soon as I did this (as you will see when you paste the UPR and compare it to the original playground) the size of the trap *shrinks*. Why? Because I have set up two traps, both points, both in the exact same place, and then added the results together. This effectively means every trap distance is *doubled*, which means they reach the "Trap Threshold" value much closer to the trap center than before. This is why the trap shape appears to shrink. Since we're going to be replacing one of those Point shapes with our texture in a moment, this is fine.

So, let's go ahead and paste the fBm texture into the second Trap Shape slot in the Merge. For this, we need both the Trap Shape object and the Trap Transfer object; we'll have to copy them one at a time. (To do this, click the fBm Texture window, then go to the Inside tab, locate the "fBm" entry in the "Trap Shape" slot, right-click the icon and choose "Copy"; then click the TrapShapePlayground window, go to the Inside tab, locate the second "Trap Shape" slot in the TrapShape Merge, right-click the icon, and choose "Paste". Use a similar procedure to get the Trap Transfer copied into the slot just under the fBm shape.)


image:TrapShapePlayground FBmTexture.jpg


Here's the copied UPR:

TrapShapePlayground+FBmTexture {
; www.fractalus.com
::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
}


Holy mangled circles, Batman! It's hard to see the original trap shape through all that mess. What to do?

Now we're going to talk about Transfer functions, and how they are your friend (especially if you're a texture addict). The TrapShape Block object used in TrapShape Merge includes slots for Trap Position, Trap Shape, and Trap Transfer. Trap Position indicates *where* the trap shape is. Trap Shape governs the overall shape of the trap. And Trap Transfer is used to modify the distances reported.

What's going on under the hood with a Transfer is a multi-step process. The Trap Transfer object uses each of the parameters you give it in the order you give them. Let's imagine your trap shape reports a distance that varies from -1 to 1:


    -1  -.8 -.6 -.4 -.2  0  .2  .4  .6  .8   1
  <--+---+---+---+---+---+---+---+---+---+---+-->
     |<----------- trap distance ----------->|


The Transfer consists of offsets, which shift the range of values to the left (negative) or right (positive), scales, which multiply both endpoints by a particular value, and a transfer function (which changes the values in a non-linear way). We can spend a lot of time talking about Transfer functions but we won't (at least not today). For now, we will leave the function as "linear" so that it does not interfere with what we are doing.

If you look at the Transfer parameters for the fBm trap we pasted in you will see that we changed the "Offset" to 0.5 and the "Post-scale" to 0.5. These numbers weren't chosen arbitrarily. *Most* trap shapes will return distances ranging from 0 (at the trap "center") to infinity (very far away from the trap). Except for other scaling factors, trap distances should range from 0 to 1 to cover the full range of colors in the gradient. Trap shapes intended for use as textures, however, often produce "trap distances" that are negative as well as positive, and this is true for fBm. When I showed you the texture at first, I was using a "texture" trap shape as a regular trap shape, and that means those negative values will all get clipped to zero, resulting in big patches of solid color. To "fix" this so you can see the texture I offset by 0.5 (so now the range of values is from -0.5 to 1.5) and then scaled them by 0.5 (so now the range of values is from -0.25 to 0.75). Although this technically does allow some negative values to slip through, in practice fBm rarely produces results in the very ends of its range.


   -1  -.8 -.6 -.4 -.2  0  .2  .4  .6  .8   1  1.2 1.4 1.6 1.8 2.0
 <--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-->
    |<----------- trap distance ----------->|
              |<--------- after 0.5 offset ---------->|
 after 0.5 scale   |<----------------->|


So, I put values into the Transfer to make the texture more visible as a trap shape. Now we're using it as a texture again, we can remove those. Locate the Trap Transfer that applies to the fBm trap shape, right-click its icon, and choose "Reset Parameters" to reset just this object's parameters to the default.

Hmmm, not much better. In fact it looks even more fragmented. But, now we're in a great position to play with the most important value in the transfer: the "Post-scale" value. Within a Trap Transfer, the do- nothing value for "offset" parameters is 0, and the do-nothing value for "scale" parameters is 1. (This is because offsets are addition and scales are multiplications.) If we want to reduce the effect of our texture, we want to *scale down* the "distance" reported by the texture so it will have less effect on our combined trap distance. So, enter 0.1 for the "Post-scale" value, to reduce the texture effect to just one-tenth its original strength. Here is the result:


Image:TrapShapePlayground FBmTextureScaled.jpg


TrapShapePlayground+FBmTextureScaled {
; www.fractalus.com
::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
}


Play with the "Post-scale" parameter so you can see how it directly affects the "strength" of the texturing effect. Here is the same thing, but now using the pillowed texture, scaled to 0.5:


Image:TrapShapePlayground PillowedTextureScaled.jpg


TrapShapePlayground+PillowedTextureScaled {
; www.fractalus.com
::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
  jj9c5TPjfzKOXg6m3G9xvoFeh8h+/hQpGQE=
}

Notice with each of these that by combining the texture directly with the trap shape, we alter the shape. We are coloring these traps based on the trap distance, so we can directly see the results of our texturing; we'll have to discuss other trap coloring modes another time.

That's it for texturing method #2. Now let's look at method #3. (Yes I know we still haven't talked about method #1. We'll get there.)

Method #3 allows us to add texturing to our traps *without* altering the trap shape. Let's go back to TrapShapePlayground + fBm Texture (scaled). Copy the fBm trap shape (not the TrapShape Block, just the trap shape) and paste it into a fresh copy of the TrapShapePlayground's "Trap Texture" slot. You should get this:


Image:TrapShapePlayground FBmTextureAsTexture.jpg


TrapShapePlayground+FBmTextureAsTexture {
; www.fractalus.com
::7izhUin2di1SvtNOQ47BI/HI0pdxC4IpEZn2CeJJbLQBy2C0c3gWakN3QRKQSnH7v+dIlkld
  ssMVPlQNffzLyZIHXqZ5Wm4zXeBhY5WBQjeSzq/1GWNQ+pg9+atarsg8Xky7qIPBvZ3qByfw
  MEbz//nRkX5F2N0FpxOlsB4r3YdrIIbQboJuPnrhCu1QjegVxBJ57KJY+ynuKZ+Vpxx3+l2P
  /4sdSW4FEd5Fe14dwcWtlrk0o7Y5P34YREVNLnbfnmEHTqA7GVBtarwyrZGzlXUxqr5y1N0B
  pF004rQgs1SnjVq0IYmXcF7NuTeCpkLAJrCzF/yykFMdxstlVREkv+da03AJo55fthbkjb9y
  WNdvAN7+8Er+c3ilPi/FEr0K7Akm9yy1NK2HKHJsdpT4gkL4vAaUD29A+RUGLTbdJgB0Q9ya
  1rY4neV8xiWx4C1WLNBc7ycphXANnZ0MppEpJ4SgpJaoGYWqURMKBvgeT6nSmfb21LyGMrmL
  8ZiDTsfTzKwDD27VClG38aTW5tLbTxFV/bmP9+wjff5P0r4W3BXzYkOKF/Rpdr7TyHxv13OP
  S0/Wqcul15WnDf5SPMQA52PEb+6Rvgozx8wAMU0MrSHIeXQtnjGCpa/CmQ4KuYu6XczDXS6X
  HFoSaP+GI6mi5QRbemXHOahSho/70BxXvHe7GNY2oEF04ZZnW5NlRYNHNKXVVpk+df3O/TdS
  iCgdo7/7To30BTZrB0/G0OMQDkWTysv19U5UpeBMY/ow5Vo5l2pZKTODv5MJcC4VA+j+04pz
  xYh6pwz8M86UxPVbwM1++BjU+4eRxQd2cf/nKuc0ubOQB3crFcvVTiTOP8dt2crrdOUIHRxD
  lDXxC6ozzda1re87M7EIUPRS4TB0AroIhGM6ArA2T5pBq8ytycfpSzLMCzCK8qiJ4/I8JFAN
  qP0Igta8GQVqihqMeE/89ClBMjVa4IH6xoWs7s5UA/K3up/ysQY2VQ5Wm3EHniH2EpX1DIFv
  wp55kvDmRS5NTkcqmMf9uHjOL5grI3BPw2M9EOoRT5qqwMU5Spibgj624Dt/xJKKYlM1gsn2
  ED2BI2EFTys4pDc0BVZpBO39yHxsdmmZJZLyyu9mbmqVN8/DopZ4UqZzPP36lNtRueWy80Qg
  zkrR4xBpZ/Vyj+IyDVrnw1LCBvK3ycPTKMwjuRgptGkumk9v2b4+f7AbsaQu2uBDw0RiwdTR
  9xqgup+egjdml5jVL09tQLC2D/BuwvDpiW3LQy4G5Wrq5IlvzHOC+Jn8+EjX3Nb9DQJbrwdT
  S3IsetYqUKMtjanwlFwb0bwBj9OANu9LdrTmvYxi0Ec7p9ncZfFgD83hu7HkJNDh+/Anyg5Y
}

Notice how, with this method, the trap edge stays as a perfect circle. The texturing is applied at the very last moment, after the trap shapes have already been determined. Here, you can use the "Texture Amount" parameter to do the same thing that we used "Post-scale" in Trap Transfer to do: to scale the effects of the texture.

Let's look at how to apply our pillowed texture using this method. For this texture, we need not just the trap shape but also the Trap Tiling transform, so instead of copying just the Point trap shape, copy the entire TrapShape Block that holds Trap Tiling and Point and Trap Transfer. Then paste the entire TrapShape Block into the "Trap Texture" slot in the TrapShapePlayground. You should get this:


Image:TrapShapePlayground PillowedTextureAsTexture.jpg


TrapShapePlayground+PillowedTextureAsTexture {
; www.fractalus.com
::zvN/0in2liVXvNOKU03Hp5/AyPtrWpGbvNNzHiXm2dHpRqar00HXpIiBnwWMYB42m/97FsdS
  aj/Ay8ULhz5w9eh7lrpUTKsExX+4HQIL3KY4kH1k6fujUzQPII73qVNSK6PQPwFC1LMK6R2r
  2GND9bEDy2+//eij/LcqdHeVeKaHjvdn1/vgEMtBn5AUoZUu1gTujUxZS0PUSm5rfeR2NLyT
  T/0X7+57v6wMr8TAq7lxblFkaLXJxJfjU8Ur1lgU1kCudPOLNFVxs7UUcVjwyrJGzH/QFpum
  L32SnJtMNOdBAksV6MsSlGAT8TXRel7mPDVyFMJpCCI/0SkUimeVTZVCC4r3jT+OTy08i/ul
  r3/rX3p0tCYZPlnYzX6Hs+e4vMxGtyOApree92Wh9uyZT2N0N5gkp8nZaQB7JAfPKjlotuAw
  AKUvuG2j148FpnP1GCXoas4MWOwlLNcKr9gjmINlANBXyIakmVzIWsUhMKBnivO/zZ38pl/5
  qlDGVLE+IxbDsfXTowhB7tKhSDbedBriuhdhYa1/t0Hev7+fs+f0b4W3pXzUkOLE/+Z7HfMI
  fG/Obbekg9tW5MLrzsmDf5aPMmgVYfnv5TK9TkMHz36ghimYV6Ax7cqTM0QIV7HQECXyFxl/
  CbewQ0xxJBKS3x3AR3mMHKazT86wRLUKA9flPI+6Twb3pZmdKBFne1yxFvNNCy5wJFqqKl0v
  7725fsfmkAYH6+/pEOu0BTpxw0XAt36oBSrNYes0dscqUPzMQ9ow5R18SbcLlpgAXfmFOB4K
  A/Rfca8cMWWdM8MPxeJW8xuGETtvewEpPu2KGqym73fQxlTWdzBK4ibdgPuqZpZzD/QpN34a
  nBFyRU4Q5wZsMdy8cjLf1j/wyGBh6IJBtCoZEKNDHM6AzAOR88AFvsRW4TVa7wIsVQBXVEh9
  DwjyBalPUPgsZ6CQVK6QZG3D/8tClhZmK1wRO0jRdYPsmxA+Fud3xLzChZfClbYRrfMGPoIy
  RpHYW4Cn22J3zMTEyb/ikzSI9lY+mQV8UyskDOj8A8ALzMAhNOTKMWn1lwZnWekL4/rTIo13
  4ELWX+ybhYUBiphiRFp/8mFiEz1o9YqAHEhvSxuH2N1wFaE5W4jg0XoOA2g6bZSbx4+8Wwdg
  2HXMdLkTKD4JQ5trDm/cXX3eUzmEuYX2xsIvMfYyRf1+Ahyxvo3HK0JRp1vSOXMtBMB96fJJ
  CrFhJ4O/9tTvw5X0CHezEju6h0axUkbd8oTlDvxjxIPebIQJiWSO9PWHeGwGrmJ3a3B+S+EO
  zhX+49pP9vUzdcwpkFsk51I00mTw/GT4SIR7MvAJDx5GrqdT23tiqxO6rlNyTi1/eY3xKJNC
  X3f9P7kXFTlSBhdQdEXSZvivONF5NAca3v0PO7mVrWlnBbPdPT6pCIVHQ3/Iq5LBo/fWrVQx
}

If your eyes are exceptionally keen you will be able to discern the pillowed texture here, but it is very subtle. That's because the default "Texture Amount" is 0.25, which is combining with the 0.5 we still have in the Trap Transfer to give an overall strength of 0.125. Change the "Texture Amount" to 1 and the pillowed texture will be more obvious. Note, though, that it still doesn't change the shape of the trap: it's perfectly round. Here's the outline of this UPR:


Generic Coloring (Gradient)
  Coloring Algorithm -> dmj5-OrbitTrapsDirect Gradient UF5 (UF5)
    Trap Iteration -> Trap Select
    Trap Position -> Trap Position
    Trap Shape -> Point
    Trap Transfer -> Trap Transfer
    [[Trap Mode]] -> Closest
    Trap Texture -> TrapShape Block
      Trap Position -> Trap Tiling
      Trap Shape -> Point
      Trap Transfer -> Trap Transfer
    Trap Color Mode -> Distance

Now we're ready to talk about method #1: using texture to distort the trap shape. This is a little bit different from simply adding the texture to the trap distance, because here we're using a texture to push parts of the trap shape around. (The differences are more obvious when other trap colorings are used.)

The key here is that we're going to use a Transform to distort the trap shape in some fashion. A Transform is the object version of a Transformation formula from earlier versions of UF. Many of the older uxf formulas have been converted to object format already. What is tricky about this is that the "Trap Position" parameter is actually a slot for a Transform, and the "Trap Position" object is really a Transform object. That means you can load any Transform into the "Trap Position" slot.

Of course, if you do that, you will not be able to have the "Trap Position" Transform in that slot, which makes positioning your new distorted trap shape more difficult. So instead of loading just one Transform into the "Trap Position" slot, we will use "Transform Merge". As you might expect, this is like "TrapShape Merge" except that it works for Transform objects. Then, we can put "Trap Position" in one of the slots and a texturizing Transform in another slot. We want to end up with this outline:

Generic Coloring (Gradient)
  Coloring Algorithm -> dmj5-OrbitTrapsDirect Gradient UF5 (UF5)
    Trap Iteration -> Trap Select
    Trap Position -> Transform Merge (common.ulb)
      Transform -> Distort (fBm and more) (dmj5.ulb)
        Distortion Transform -> Null Transform
        Distortion Texture -> fBm
          Noise Basis Function -> Noise
        Distortion Transfer -> Trap Transfer
      Transform -> Trap Position (common.ulb)
    Trap Shape -> Point
    Trap Transfer -> Trap Transfer
    Trap Mode -> Closest
    Trap Texture -> Flat Texture
    Trap Color Mode -> Distance


So to do this, we choose Transform Merge for the "Trap Position" slot. When we load this, we will see ten "Transform" slots, each with a "Null Transform" loaded. By default, Transform Merge shows us all the slots, so we can choose which ones we want to fill. We want to put the Distort Transform in the first slot, the Trap Position Transform in the second slot, and then we can uncheck "Show all slots" to hide the slots we're not using. When you've done this, you should have this result:


Image:TrapShapePlayground FBmTextureAsDistortion.jpg


TrapShapePlayground+FBmTextureAsDistortion {
; www.fractalus.com
::vtxuBgn21u1WPuJOU43rU/Pg4pd1KND4ECJTFv0ObrUlmuVqzjVKyBMJuFwIjzcZ/1v+CQcI
  XGw27TJG7zHHOf+Y/htJnCTZwi7e/788YYWBKx/RKs+H7g1IvvXAfdLlsvKz7v8y/Yp3joXY
  7pIv/A24lhbYEKDTq+TfvnxZsdJxgABO7Q4t7YiSecAQ0mkQxlTpoMMrJx/eYJGV59VSFq5D
  ruNcxtggglfo9yPcTfNxyK8f/7kwI9xUYt4Wm4/RY6vV+mvHpGmiZvmEGE4ViY7IZJl7LY4a
  YTz7fXJsuGXtVZOqihoJB3ybIcblwxyJUejhyqLhvgF1H6ljLQVwSe44HMYVGkmdz+8SfPu9
  0XT8/CqCRxpfWZrvw261tI9pC+tV3uiN31VY9D8fRFboE2ZM6mnWvVBs8R5kKbLKq8sGnhfC
  R5Iw0a4wW1wgUmIAcGEqXXTem/4DuN40q2AxFk9skQkglxVN4MkqbDFW1kzNrAXhgUPKqGBZ
  JVEvGSBOLZOYV4ilRzijObUNtQGJOOw+FKMj3Zg9JSBhyJv2gVabx2QcW5vikh37f4rr/H6G
  MT03t5aGdSIeYtdlPEkPx+Wf7tbJ3/WTEuFT4WvV7zXLbGqAlyG8sJTJlV4/WWe8D4YbNknK
  Py2Leo0c0xYUtsAsoQkcBF5vcyjX07QZ/RCSb33R2aVy8Ybdzvx1jv1FECv1/N4stvWr9sdU
  UzOSRWSwNRXGcVaEPnLxPlUWSqks/jdX9BRmt/IMfsdA0N4w9e0msvBRNws+/XKeeGrd1r5B
  wnRl18B5rIjzi+/HyHyZDfitXRNjxycNLHkGevaKP/pCz0pkBWP5A9A7NisGghIvvdOfjQoe
  9BFDNsX5EiYcU4PFAVYOUwqtcoszdOoKwAYyxvgySIb+FPV3ygCFVtlLjK4GZQJayopVQfQE
  Ja39t9FF9jm4bD26dnlYbQvhjhr//S4Mq71xA23hXCox96PG0KeE0VgW3IUYrP+iE0u56FV+
  5P+gvNg7MaqHu+/3RThWCYvWCJgiLmvx6gK//VEcDSkCIxVfyUVo9bi69dxNREk/pS/qxjvf
  eYZSY77pYbw+SArCVuytrbRnrznkn3gYGNo65RuWis6FUuJMKOKa585u2rbw/LKBExfl0oFW
  hNXySKkPzUoloY68bD8FGqekyPfTnRglaAgZxWiHJlBfC1kYNOd91UjzZ8488uW6ivloJG04
  x2a9tA5jEBatf2Ppp4FcsdS4O4abna8MqVzYyhknxSRwsswE7hxqcpjdHgtuT++qU5aQVoG0
  QsoHW6YE+r16iAFHHVkS6ZhOxrsOeB30MyXa7cKrBJ+yf9eCWs3g5sPnCbQyKLTA5FAaDVIR
  bjDlYD0GtQxl2peFoJyWpJKxBI2pyWiYjLUZD0kZ7CUVzQA00ZLR9eXqz2dc1B86KoGK2Wxf
  ANp2qoqjkaD00arUn9/hWbgm4V5dZrbEbfCuMXp2+yI7E52ANlrK4dme7Tgu2hCuPrf7KF3A
  3I5G4GN3AHJ6Gop6WxHWq6GoJ7WCo9o12xTi2t2IWAc6qW5K13AXuoVK461fb9E094Vrt8SW
  LAH4IF4AdJ4WLsE4Ih4Adl4qFR2Wl4Adp4W/GaAdB5tLYmbcOQrzZDUjXUu2OpAMenUAD3Ur
  2ka1C0xFLPJwsa/UAWufKAHsfKHlubMGqNZ04Nv4YAKJiZEm87p1BSGFnzswJMbm7OrpEmcb
  kTCsEA1U2m+M8b0zWZsV3dYTtc/4nYO9MjzpndUOt27+aSO9MrypnZZO9MHkTPTfHimCGakx
  cjJj5ukMmbFZM3SyYuDIj5OgMiMmMicJZEZFZEZJZE5AyIyBkxCjJjFukMWYFZswSyYhDIjF
  OgMiNmMidJZEbFZEbJZE7AyI2BkxSjJjlukMWaFZs0SyYpDIjlOgMWZMZsylkxKrIjVWSGrc
  AZsyBkRYg5n8vgLQHqV5ei0RYgdnAwAbPCgBu4MAGMNK5kD4k+eu8dCu6qnl5hHgp38Opf8k
  u+y3fyhPSUuW4QjJqM4ICMp1ncwhAIYUt/w28PeDqnoRTYhCn4OyPtNefw+rPqF0bi7g+gNK
  PcKwP2ng3ax1KJZnLz4B+l/UBpB1ctUDhxjtbUbb7vnTpxPjZ7Oc01HjldJUiipqnjLZHfU6
  DQfma5DWp+4Ru+Q3qPHpLNIznLgX9sarse0pk9NfsbTYvBHNSTO3ruSYRZkoD3hxZPffp+Gr
  dwhBXZzm6/+TGO+V33Lj44tDrSv2m12dtxG00a/RugJGl16ej0Yea4eGRllL7FR2zu43s0F+
  wk6+qkuHlD3XI6M19x/IRppkQ4hdO6e4qM0LJzDC8kOQSQ7V6KHuIOOGEypn2PWNdAqI9tu7
  TZDExb6/B4RXAdL=
}

The Distort Transform is very powerful and very flexible; it takes the place of my older "fBm Glass 1" and "fBm Distort" transformations. This is another thing we could talk about for a long time, but the quick summary is that for any given point, we produce a distortion strength (a distance to move) and a distortion angle (which direction to move). The default setup for Distort is to use a fixed angle (relative to the distortion center, as the mode is radial) and to use an fBm trap shape as the distortion strength. So, Distort will "push" or "pull" each point towards or away from the distortion center, with the actual amount of movement varying with the fBm texture.

The key here is that we're using the fBm trap shape to move points around, and because we're doing it to the points just before they're fed into the Trap Shape object, it has the effect of distorting the Trap Shape. With the default settings, our Trap Shape (a circle) looks pretty well mangled, but we can change that by tweaking the "Distortion Strength" parameter inside the Distort Transform. Play with this value so you can see how it affects the image, then restore it to 0.5.

Because Distort works with Trap Shape objects, we can drop in a totally different trap shape and get a different texturing effect. So, let's copy the entire TrapShape Block that holds our pillowed texture into the "Distortion Texture" slot:


Image:TrapShapePlayground PillowedTextureAsDistortion.jpg


TrapShapePlayground+PillowedTextureAsDistortion {
; www.fractalus.com
::LzeIUin21uVWvtNOQ43LQ/PIon2FLQiEtlPahepNbLQBS3A084CYQLRFzGZRBS6cs/6XeIJT
  5jEJS6HCipEnPOc+4Ma4VBFmxhlf6jfIIgj5lo0w7pw6ftBWjCurE+6DUyuq8g/K4OcZJ5ZU
  ew9oX47oog/AyCyxMOhyxkq/MUCxz4c+m05gogNI8Db4qfKQBRZpxyKkRR5YOLN8G4WMqK4H
  kKE7zLvOe21gooFfu5x3eV3bmrehAdFMKFNDWLby0wvAzeUrghBkaYGm/aacUUwWEfDJPd7u
  SOuGyYf8Dbh114qH0ijq4Iaa01iKCfoSqYFEqoyQ1r3CfBLffcQBuEVB3KsJ/iDryh08r2Vs
  NMQIP910wvjqQUc230yq6/1raQ6rlim1Uuy1fqtwqbF/HVumS4nQorea1DagVdljeZTR5LPp
  w54nQUBCcjKeYtYcIlLNAnAh6V1CammCuO64XtGiLJ74pxIgQWcFDnj0jdowKWhQsScFCSDo
  oaEknWRCYkSce6Uwy4ZLSmMP5kW1sSllovh97UYuYwA/rkSCVQeNGrsmiNm48t/ORZev52fs
  6forxc5AY2bJ0Rm4Dfbb59G5jkvR3e/aK0vVEpaxlq17V/iVqqhKRZ8D6bK/S1LCfPJ73BHa
  thCX5BWfZnyQRHiQ1qCwySpzFU6/KIPRxg9lDHIINDfHYt1OzDt2sHx1Dv2lEio2/N4k1v2o
  +8NUEbDpMPN6qkzDu2NS4zlGmR2ulUpY/7bf6tSP7wBI+QHAYKw+2ewisjhoWIW3v3K7PDVu
  6VCD4zot1ig8VkhJR3vjFhcWL+62rI2QkswQyDcDvR/JvwxCz4pkDke0G6Dk3Ky6AMk+9Nfz
  3KEqXtPjBG/VBhIjjC/XJQl2DFs6BBUupO7zKwCYKwvgyTJr/twV3RjCFV9gIHqorUGlkRjm
  RBzgIK0+0P3VW2FNJ0FsNHOrw2iRD9hr73K4sa4VfA7GwrA06R99BtSYB9Fo1MZa2HzSdZg/
  lSS2jhuAu3opO46+dLNF7VAXL7yOjqRF3zTHnO194yzlioTNljx6HA8uFIfANg7ftYANSbak
  cFPcZaFRSAiJcwfV4oRFRnFfqQMfG6FqdEY5w3RGYfhJnprwcJyk86hlNpVNj+jqT9B+GxLO
  xcakv8OCuiH61my7Oh9gef4b/ErqH4dTvS+wappx/+GixoHMHj67bmEfovbpLZ8QF6dL/wFD
  +6LaTUvqmig55xpXIsZZQhzc8FTxBXEFvYXVmal+0rq0lQ7JM+lzuLAXb49eYaTl/yY7hrZD
  ca2nMb5DCvoA2DxYUy2LciOrW3QbvvtrTl5gwFK4cJmhGSnDPYAjTRC6rOAXVn9+3KDlDO5d
  Kmj+zm4otUKNL2Lalz2LL9JbWfCQao6/BPBL3hC9y6UASX6oDooAwIUheSgechKAGRL0cpbr
  BAwY2XK8ceVFAGT3ShIzHrVBwYxK8Bq6PWAMSgXhavs4/2Xu1pcH9HXtHv2C6QxumtOwI7ct
  VV+0i1ubYFFqIYmc5gUA3P1cl59ny3H6lWR0NUtinSL/Ic920jOPyarl3U86G4Fz8lUUwQcX
  nC/RQ3svqXFnMPJZx0peXvZ4/DlCSmdt4P3AvelHmwgEGbXZ+D1GOq21ko7UHBYa+IdycXBk
  kxhPhY6oVujWzAPFaX7SyCgTvqy+I7bgPX6fNcd5f78Ho7w7gl6wVM9TG4AzUwdOxSgnSEHY
  mJuer4cNTcgZq4OPDNgZC5Nb7gfUOQjy5CUDPpcj9jGY9+RDOzy2RU9ERyyjCMnWZOgjbEBw
  D7zQP3drxQfUNsep77DwWi8LCjeeatgkTxFcHUC7+ydr0UCXdYcSjcEA9nsttP8I6ZnE2pWH
  yqVnqpR6TPxaf6J98pNm7rN+0Tcyneij+0T8gP9Ez9ZfMYYQGTtmMm6TyYqTkxUHJjpegMm6
  ByIxayIxnkRiTkRijkRiHIjEPQGzsmMm5TyYmTkxMHJjZegMm5ByYu1kxcfSGzdiMm7IZM3D
  kxcPQGLsmMW4TyYhTkxCHJjFegMW4ByYp1kxSfSGLdiMW6IZs0DkxSPQGxR2f+pjODdoXl7R
  SHxRudWSic9szF5jzGX04okmjJqdncqjOGovbLN8T3Ub1t78K5yJQasnpoRfKhs6c/Mutqfk
  7I/424dbO/MjcH0PYjyjHD8DtH8eLu2WS+p8MuV84vWSYI2b5aIFeoDjaqbXbOmK/MmvZ/FA
  aIS26QJLmp7HnTORU69Qfi3KCWpvCevdob9l68cBZ+WJ8NPdmapHsLZX1H62E2JQvINFCt6N
  MLahkD42Hn90jl6qsx1vA8Gb2U3t47w4Xt36Q5lECWl9WbWb7zGqRzo+9UBbEKvR9GowC3wd
  ci2LXNKisjf2b+5Zuent3tzbQFwdlyBTtXhSFKstEiwsLQPAXljeJdaUUgSBSjaeSb54ZznP
  HELonmr8rJAVkua3ehgBJiq+/4kC2YO=
}

This looks similar to the method #2 texturing with the pillowed texture, but it is in fact different. To show you how different, change the "Distortion Strength" to 1, then locate the main "Trap Shape" parameter that holds a Point object and replace it with a Spiral trap shape from dmj5.ulb. You should get this:


Image:TrapShapePlaygroundSpiral PillowedTextureAsDistortion.jpg


TrapShapePlaygroundSpiral+PillowedTextureAsDistortion {
; www.fractalus.com
::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
  KZG=
}

And here's the outline:

Generic Coloring (Gradient)
  Coloring Algorithm -> dmj5-OrbitTrapsDirect Gradient UF5 (UF5)
    Trap Iteration -> Trap Select
    Trap Position -> [[Transform Merge]]
      Transform -> Distort (fBm and more)
        Distortion Transform -> Null Transform
        Distortion Texture -> TrapShape Block
          Trap Position -> Trap Tiling
          [[Trap Shape]] -> Point
          Trap Transfer -> [[Trap Transfer]]
        Distortion Transfer -> [[Trap Transfer]]
      Transform -> Trap Position
    [[Trap Shape]] -> Point
    Trap Transfer -> [[Trap Transfer]]
    [[Trap Mode]] -> Closest
    Trap Texture -> Flat Texture
    Trap Color Mode -> Distance

Obviously I have only scratched the surface with describing various texturing methods. Because objects can be connected together in many ways, we will still be discovering new ways for years to come. The more things we as artists can choose, the more of ourselves is expressed in our artwork. But that, too, is a topic for another time.  :-)

Damien Jones



It's Ron's challenge, so I can't speak for him. But I can address a little the issue of being overwhelmed. You are absolutely correct that there are so many options and possibilities it can be hard to know what to do.

As I've indicated before, UF5 formulas are made of pieces, called "classes" or "objects" or "PlugIns" (the name is not really important unless you're a programmer). With UF4 you only needed to learn your favorite formulas really, really well. But with UF5 there are so many new options it's hard to know (a) what is available, and (b) how they fit together. Ron's challenges are trying to fix that.

Let me give a bit of background on Orbit Traps Direct UF5 in general that may be helpful. The essential concept is that you set up an area of interest (the "trap") and as the point iterates through the fractal equation (the "orbit") you watch how it goes in and out of the trap area.

There are actually several different "orbit trap" formulas (and this was true even before UF5). They all have slightly different capabilities. But at least with UF5, they can all draw from the same collection of objects to perform the various parts of the orbit trapping method.

The most obvious of these is the Trap Shape, which defines the area of interest. There are hundreds of these already. When you actually work with a Trap Shape, though, you realize it's not all that useful by itself. The Trap Shape does exactly one thing: it describes a shape, always centered at (0,0). It doesn't let you have more than one trap shape. And it reports the trap distance in a simple, linear fashion.

All of those other useful things were present in the older orbit traps formulas, but with UF5's orbit trap formulas they're structured differently. If you want multiple trap shapes, rather than require the orbit trap formula to know how to merge trap shapes and be written specifically to account for it, we wrote a "TrapShape Merge" wrapper. If fits into a Trap Shape slot, and itself has ten slots for more trap shapes. It's like plugging in an electrical outlet adapter that has more sockets on it so you can plug more things in than just one.

Along with that is a way to accommodate positioning traps and changing the linear output. These are handled in Trap Position and Trap Transfer, respectively. In my orbit traps formula, for the basic trap I already have these included in the main formula. But if you put a TrapShape Merge into the Trap Shape slot, you don't have separate positioning for each of your included traps--they're all stuck at (0,0) and that makes merging them... far less useful!

The solution is the TrapShape Block. This is another wrapper that goes in a Trap Shape slot, and combines a Transform (with Trap Position pre-selected), a Trap Shape, and a Transfer (with Null Transfer selected, but you can choose Trap Transfer to get the "normal" transfer function options). With this, you can put your trap shape into the Block's trap shape slot, and you can adjust its position without altering the positions of the other merged traps.

The key to all of this is that you have to understand how objects fit inside other objects. Here's the structure we're talking about:

Orbit Traps Gradient UF5
 Trap Position - affects the merged trap shape
 Trap Shape -> TrapShape Merge
   Slot 1 -> TrapShape Block
     Trap Position - for just the first trap shape
     Trap Shape -> choose something cool!
   Slot 2 -> [[TrapShape Block]]
     Trap Position - for just the second trap shape
     Trap Shape -> choose something cool!
 Trap Transfer - affects the merged trap shape
 Trap Texture - applied to the merged trap shape

When you're trying to understand how your objects are related, make good use of the triangles on the left side of the panel to collapse nested objects and hide their parameters. This will help you see the "big picture".

I *know* this is hard. There is a lot of stuff happening all at once. You don't have to learn it all at once (all the UF4 formulas still work) but it *is* worthwhile.

Damien Jones

***

Thanks Damien,

That was really excellent.

Unfortunately there really isn't an intermediate step between using a trap shape and merging trap shape, and merging trap shapes is the next logical step after using a single trap shape.

Please feel free to ask questions and I will try to answer them. If you have problems with a challenge and submit a challenge that doesn't meet the rules, I will answer back to the list, as I suspect others may have similar problems, and my answers will be instructive to everyone. It is also a very good idea to read the help file in UF5. As I had mentioned on the list before, do a search on "trap" in the help file and select the "Orbit Traps" entry. That entry gives a description of all the slots/plugin-s for Orbit Traps.

Here is a rough summary of the most important aspects of the rules for challenge #2:

  1. I recommend you start with the default Orbit Traps Gradient in dmj5.ulb. Use the challenge #2 sample as a guide as you make changes to the plug-ins.
  2. Instead of a trap shape use TrapShape Merge. Instead of a trap texture use TrapShape Block.
  3. When you replace the default Trap Shape with TrapShape Merge (which is in common.ulb) you should see parameters for merge mode, coloring source and texture source and a check box for show all slots. You will also see check boxes for Enable Trap Shape #1 and Enable Trap Shape #2 which are checked. Start by using the default values. This gives you the two trap shapes required by the rules. The default trap shapes are both "Point". Replace them with your choice. As the rules state you don't have to use Trap Position and Trap Transfer. You are only required to use the two trap shapes, which must be different.
  4. When you replace the default Trap Texture with TrapShape Block (in common.ulb) You will see the appearance of new slots for Trap Position, Trap Shape and Trap Transfer. The default Trap Shape is Point. The reason for using TrapShape Block in place of the default Trap Texture is the following: Simply putting a new Trap Shape plug-in into the texture slot can produce some nice textures as all of you have demonstrated in Challenge #1. Unfortunately there is no way to modify the texture size, position, rotation, etc or to change the characteristics of the output from the texture. You are stuck with only the options the plug-in writer put into the shape. Using TrapShape Block gives you much greater control over your texture. Thats why there is a requirement for the challenge to change Trap Position and/or Trap Transfer.

I hope this helps.

Ron Barnett


Hi Zoo,

That coloring always opens with a sort-of black image -- but if you look closely you'll see that it actually is a subtly colored image (for the default Mandelbrot set at least).

Inside Parallels, have you set your Windows screen settings to '32-bit color'?

Best regards, Frederik Slijkerman


Zooreka wrote: Frederik - as promised I had a play with The colourings again this morning after a nights sleep... > I have found that The problem (seemed to be with direct Orbit Traps in dmj 5. On opening you get hit with a black screen by default... However having played with some of the switches and changed one or two of the optipons I found it works rather nicely...... > Here are the params for just a texturing layer I added with the fornula.... >

CopyOfTest_03 {
::1q5v5in2di1WPuNKU43jU+PY53nEfJ+WX5nmqdlq60W1OPtalsI24EaxgXAPzk+rvAGnYnrM
  5pkc477jDnDc4QqZgSBA/h5zccEIBGm7+ItdnDt2RA5iCvQXnXRVit5xr8c2CRb2KyXl65gB
  7gMeuviYJDWhE8c3/lSZwfB+rklRLD88SdnPTjTLfJoVgokc3PrM5IFm2CKRid5ppOCGgwbB
  MIRkvDynPrB02iIb6ZKtCZ5eLC9SzWF6vKOOa5DeL8TSiSCDzyiicaAbI5BLSzSS8izmPrmy
  a6wAN/GwbIlABReO1IMkAakrzfIAkKAraRXdjrjcKY7yd/UHGBcVkaL4QYVucaSiW6tII0PI
  Sasl+qSpleyvvGgw0ORufQ68ZICHVB7DkqFTtEGhSgznJhc6Q8/nJG5MVN/MaRXJevjoM8wX
  ZrRinZgW+HRMYpw4Y1FlYAnv4liNQCkhKz998mYvkipMZ4TNwxcq0SNGx0hb+ZBVNvC182D+
  UZqL0DDxqRNePe9H+4Tfq4fU+EQQZfXGfpNuXm40FwtxpE9mIV+/e0MtLcDOmMdkfaUYUi/U
  ktjQK2yg8tUclcrY0ZgJzsyddcKGVpDv5rCSS9zkHE8OG9aAHOgJNLLNOK2bCgaEBg7RcWfv
  By2AboVy9Ol0mGKpP+DrBdYxjKePpQ4eVu3OBMGq2b0GsBdVvrcKp6LSqu4wqSe4Vgax7OX2
  Qjao4h8o5lxwqkH1WTFCazDdtnzl3n2mEH/SHG/8wIuXl3tjhjheY6sAcHHyeXEIS3+mE4bB
  tT31o3uoKz839FN7L28opCh7FFxizvGY6dBKDWD0U/+0iVXmdbxQhe/4LjquATLB93ENKG8Z
  jRXbYa7CfCD7SMT5Y1Ogzwb/S0WKtFDXyu0WC6bc9tEMgsR2bhtSzFMoocr1qz/F81rLuZ70
  4b9lJ9hfU8k8TIeNjKctQF7T/HIM4AWToC9iqEGR8OZyFAm4WpxBwj6nxO4Dt8s6aHD1uwvz
  drRMuw53uXFrs9n9Hv77X6y+RfPW7hfhk5PaoUx2/TJkrlSZfG9Ee2Vb6cTITWdTmfvTBsKx
  dEnRNsu4qFS75p7k5iNxMdmMN5eI30I0Zlneu4Z4biOG0i7TORG7zLnS0246Zmy3Zm5YFkdg
  0vkHHF+GkhRkvo3WSRcoJq4eXCf/xlxScobAfP/7TEq81jvA55J3H9W5bIRcBkUK9hFxZRx6
  4T0JNJebpqJ+5g187zP0PAwPIcVUcy1OXYU4WHMG6ip/peH3Y5Q7W6RdvK3rnnPG60p1CCq+
  FPDph9/6Xsy1VTVPK3Re9oprCHk8+y3y9Dd6fiifcSSSgfkxecmxeQin0qOkaYEHbGKJLJbV
  Woxegf65lS+6en9PDy0z/Y/iQNA92/3JEEJfc2fA0iv7AD==
} 
Personal tools