Texturing with Orbit Traps Direct (UF5)
From Ultrafractal Wiki
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:
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:
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:
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.)
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:
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:
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:
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:
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:
TrapShapePlayground+FBmTextureAsDistortion {
; www.fractalus.com
::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
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:
TrapShapePlayground+PillowedTextureAsDistortion {
; www.fractalus.com
::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
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:
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. :-)
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.
***
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:
- 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.
- Instead of a trap shape use TrapShape Merge. Instead of a trap texture use TrapShape Block.
- 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.
- 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==
}











