Creatures › Transformer
Transformer
Tubes, cubes, cones, balls and rings, scattered in waves and copied into all eight corners of space, each copy a slightly stretched mirror image of the next. Inspired by Transformer, a DancerDNA creature.
16 genes · 12 variants
Its family
Each one is the same program with different genes. In the app, Morph glides from one to the next, and Breed starts from them.












Genes
The values that change when Transformer mutates, breeds and morphs.
| Gene | What it does | Range | Value |
|---|---|---|---|
mirror_x | how the left half is made from the right: -1 is an exact mirror image | (-1.1, 0.9, 0.9) to (-0.9, 1.1, 1.1) | (-0.9654, 1.076, 1.073) |
mirror_y | the lower quarter from the upper | (0.9, -1.1, 0.9) to (1.1, -0.9, 1.1) | (1.058, -1.061, 1.011) |
mirror_z | the back eighth from the front | (0.9, 0.9, -1.1) to (1.1, 1.1, -0.9) | (1.006, 0.9291, -1.085) |
reach | how far the shapes wander: across, up and forward | (3, 3, 3) to (20, 20, 20) | (4.991, 11.64, 19.04) |
reach_waves | how many waves they wander in, from the first shape to the last | (0, 0, 0) to (0.7958, 0.7958, 0.7958) | (0.5784, 0.7485, 0.4928) |
reach_start | where the waves start | (0, 0, 0) to (1, 1, 1) | (0.5995, 0.3055, 0.9678) |
size | how big the shapes grow | (1, 1, 1) to (8, 8, 8) | (1.855, 4.302, 7.492) |
size_waves | (0, 0, 0) to (0.7958, 0.7958, 0.7958) | (0.556, 0.4642, 0.7644) | |
size_start | (0, 0, 0) to (1, 1, 1) | (0.8292, 0.1354, 0.7251) | |
turn | how far the shapes turn: up, sideways and round | (-343.8, -343.8, -343.8) to (343.8, 343.8, 343.8) | (315.7, -137.7, 163.3) |
turn_waves | (0, 0, 0) to (0.7958, 0.7958, 0.7958) | (0.5032, 0.4259, 0.1233) | |
turn_start | (0, 0, 0) to (1, 1, 1) | (0.145, 0.6595, 0.1057) | |
gloss | how strong the highlights are | 0 to 1 | 0.4599 |
focus | how tight the highlights are | 0 to 1 | 0.1187 |
centre | the colour of shapes near the middle | hues 0° + 252° | hsv(238.9, 1, 1, 1) |
edge | the colour of the farthest shapes | hues 0° + 252° | hsv(56.6, 0.64, 0.3, 1) |
The code
creature Transformer
// Tubes, cubes, cones, balls and rings, scattered in waves and copied into all eight corners of
// space, each copy a slightly stretched mirror image of the next.
// Inspired by Transformer, a DancerDNA creature.
gene mirror_x = (-0.9654, 1.076, 1.073) in (-1.1, 0.9, 0.9)..(-0.9, 1.1, 1.1) // how the left half is made from the right: -1 is an exact mirror image
gene mirror_y = (1.058, -1.061, 1.011) in (0.9, -1.1, 0.9)..(1.1, -0.9, 1.1) // the lower quarter from the upper
gene mirror_z = (1.006, 0.9291, -1.085) in (0.9, 0.9, -1.1)..(1.1, 1.1, -0.9) // the back eighth from the front
gene reach = (4.991, 11.64, 19.04) in (3, 3, 3)..(20, 20, 20) // how far the shapes wander: across, up and forward
gene reach_waves = (0.5784, 0.7485, 0.4928) in (0, 0, 0)..(0.7958, 0.7958, 0.7958) // how many waves they wander in, from the first shape to the last
gene reach_start = (0.5995, 0.3055, 0.9678) in (0, 0, 0)..(1, 1, 1) // where the waves start
gene size = (1.855, 4.302, 7.492) in (1, 1, 1)..(8, 8, 8) // how big the shapes grow
gene size_waves = (0.556, 0.4642, 0.7644) in (0, 0, 0)..(0.7958, 0.7958, 0.7958)
gene size_start = (0.8292, 0.1354, 0.7251) in (0, 0, 0)..(1, 1, 1)
gene turn = (315.7, -137.7, 163.3) in (-343.8, -343.8, -343.8)..(343.8, 343.8, 343.8) // how far the shapes turn: up, sideways and round
gene turn_waves = (0.5032, 0.4259, 0.1233) in (0, 0, 0)..(0.7958, 0.7958, 0.7958)
gene turn_start = (0.145, 0.6595, 0.1057) in (0, 0, 0)..(1, 1, 1)
gene gloss = 0.4599 in 0..1 // how strong the highlights are
gene focus = 0.1187 in 0..1 // how tight the highlights are
gene centre = hsv(238.9, 1, 1) in hsv(0, 1, 1)..hsv(252, 1, 1) // the colour of shapes near the middle
gene edge = hsv(56.6, 0.64, 0.3) in hsv(0, 0, 0)..hsv(252, 1, 0.5) // the colour of the farthest shapes
let skin = spectrum(centre, edge)
halves
part halves {
branch {
quarters
grow mirror_x
quarters
}
}
part quarters {
branch {
eighths
grow mirror_y
eighths
}
}
part eighths {
branch {
shapes
grow mirror_z
shapes
}
}
part shapes {
shine gloss
sharpness focus
let farthest = length(reach)
repeat 10 as k {
branch {
let along = k / 9
shape k % 5
let place = (reach.x * wave(reach_waves.x * (along - reach_start.x)), reach.y * wave(reach_waves.y * (along - reach_start.y)), reach.z * wave(reach_waves.z * (along - reach_start.z)))
move place
grow (0.1 + size.x * (1 + wave(size_waves.x * (along - size_start.x))), 0.1 + size.y * (1 + wave(size_waves.y * (along - size_start.y))), 0.1 + size.z * (1 + wave(size_waves.z * (along - size_start.z))))
pitch turn.x * wave(turn_waves.x * (along - turn_start.x))
yaw turn.y * wave(turn_waves.y * (along - turn_start.y))
roll turn.z * wave(turn_waves.z * (along - turn_start.z))
colour skin(length(place) / farthest)
lay
}
}
}
variant member_2 {
mirror_x = (-1.06, 0.9671, 1.084)
mirror_y = (1.1, -0.9745, 0.9777)
mirror_z = (1.013, 0.913, -0.9129)
reach = (4.025, 15.83, 18.68)
reach_waves = (0.7818, 0.2807, 0.4275)
reach_start = (0.07705, 0.3785, 0.9331)
size = (6.876, 1.011, 1.365)
size_waves = (0.6611, 0.2257, 0.1127)
size_start = (0.1241, 0.3186, 0.1496)
turn = (324.9, -149.6, 184.7)
turn_waves = (0.1668, 0.05536, 0.5407)
turn_start = (0.01349, 0.4675, 0.5868)
gloss = 0.5637
focus = 0.1768
centre = hsv(10, 1, 1)
edge = hsv(109.8, 0.37, 0.02)
}
variant member_3 {
mirror_x = (-0.9373, 1.044, 1.008)
mirror_y = (0.9419, -0.984, 0.9964)
mirror_z = (1.013, 0.913, -0.9129)
reach = (18.37, 10.93, 16.83)
reach_waves = (0.7818, 0.4295, 0.6803)
reach_start = (0.2068, 0.2129, 0.9331)
size = (5.746, 1.011, 6.167)
size_waves = (0.3424, 0.5866, 0.7126)
size_start = (0.5269, 0.2152, 0.1496)
turn = (-146.9, -341.2, 324.1)
turn_waves = (0.1895, 0.5734, 0.2598)
turn_start = (0.6295, 0.4012, 0.2795)
gloss = 0.3502
focus = 0.1155
centre = hsv(196, 1, 1)
edge = hsv(47, 0.85, 0.41)
}
variant member_4 {
mirror_x = (-1.047, 1.029, 0.9231)
mirror_y = (1.048, -0.9481, 0.9494)
mirror_z = (1.025, 1.016, -1.007)
reach = (16.43, 8.257, 9.228)
reach_waves = (0.7818, 0.4313, 0.7088)
reach_start = (0.1874, 0.6913, 0.4858)
size = (6.313, 1.011, 7.477)
size_waves = (0.6172, 0.5657, 0.6571)
size_start = (0.7918, 0.9021, 0.7712)
turn = (124.4, 269.5, -182.8)
turn_waves = (0.7268, 0.08601, 0.4895)
turn_start = (0.9133, 0.8689, 0.893)
gloss = 0.08317
focus = 0.2864
centre = hsv(106.7, 1, 1)
edge = hsv(143.6, 0.69, 0.02)
}
variant member_5 {
mirror_x = (-0.9291, 1.017, 1.038)
mirror_y = (1.063, -0.9561, 0.9594)
mirror_z = (1.002, 1.069, -0.9437)
reach = (10.5, 18.96, 10.28)
reach_waves = (0.7173, 0.7297, 0.2097)
reach_start = (0.8442, 0.08285, 0.9803)
size = (2.708, 3.845, 1.151)
size_waves = (0.2968, 0.619, 0.7384)
size_start = (0.9469, 0.2041, 0.6565)
turn = (-339, -94.13, -4.362)
turn_waves = (0.7268, 0.743, 0.2628)
turn_start = (0.1985, 0.7353, 0.07249)
gloss = 0.274
focus = 0.1092
centre = hsv(68.3, 1, 1)
edge = hsv(207.9, 0.41, 0.12)
}
variant member_6 {
mirror_x = (-1.052, 1.004, 0.9425)
mirror_y = (1.026, -1.038, 1.004)
mirror_z = (1.083, 0.9781, -0.9648)
reach = (16.64, 19.89, 10.28)
reach_waves = (0.3952, 0.1807, 0.06855)
reach_start = (0.06055, 0.04899, 0.5075)
size = (4.08, 3.845, 3.357)
size_waves = (0.3831, 0.619, 0.5222)
size_start = (0.8008, 0.6039, 0.7527)
turn = (-219.9, -183.6, -4.362)
turn_waves = (0.7268, 0.08093, 0.04366)
turn_start = (0.4766, 0.8133, 0.07249)
gloss = 0.8038
focus = 0.1373
centre = hsv(29.8, 1, 1)
edge = hsv(143.6, 0.69, 0.02)
}
variant member_7 {
mirror_x = (-0.9246, 1.011, 0.9714)
mirror_y = (1.026, -1.038, 1.004)
mirror_z = (1.037, 1.098, -0.9385)
reach = (16.64, 15.34, 18.77)
reach_waves = (0.09293, 0.6435, 0.3298)
reach_start = (0.6673, 0.2066, 0.9903)
size = (2.192, 4.867, 7.477)
size_waves = (0.3109, 0.1811, 0.1919)
size_start = (0.9634, 0.9415, 0.7527)
turn = (-316.8, 269.5, 296.3)
turn_waves = (0.0966, 0.1139, 0.07768)
turn_start = (0.9666, 0.6862, 0.07249)
gloss = 0.999
focus = 0.1555
centre = hsv(110, 1, 1)
edge = hsv(143.6, 0.69, 0.02)
}
variant member_8 {
mirror_x = (-0.9095, 1.011, 1.094)
mirror_y = (1.026, -1.038, 1.004)
mirror_z = (1.002, 1.069, -0.9437)
reach = (16.3, 19.89, 10.28)
reach_waves = (0.3952, 0.3343, 0.7537)
reach_start = (0.6314, 0.8465, 0.679)
size = (2.972, 3.845, 7.477)
size_waves = (0.2281, 0.619, 0.4828)
size_start = (0.679, 0.05621, 0.7527)
turn = (-41.39, 269.5, -4.362)
turn_waves = (0.7268, 0.06998, 0.7638)
turn_start = (0.9666, 0.377, 0.07249)
gloss = 0.7963
focus = 0.144
centre = hsv(214.9, 1, 1)
edge = hsv(225.8, 0.41, 0.2)
}
variant member_9 {
mirror_x = (-0.9413, 1.08, 1.075)
mirror_y = (0.9097, -1.054, 1.019)
mirror_z = (0.9761, 0.9896, -0.9724)
reach = (19.85, 14.98, 19.95)
reach_waves = (0.1938, 0.3314, 0.7036)
reach_start = (0.8911, 0.9183, 0.1837)
size = (5.03, 6.723, 2.976)
size_waves = (0.5795, 0.7332, 0.6247)
size_start = (0.7882, 0.3163, 0.8494)
turn = (-338.4, 113.6, 86.89)
turn_waves = (0.2204, 0.06403, 0.313)
turn_start = (0.2123, 0.4689, 0.1855)
gloss = 0.5721
focus = 0.834
centre = hsv(11.4, 1, 1)
edge = hsv(8.9, 0.31, 0.32)
}
variant member_10 {
mirror_x = (-1.062, 1.001, 0.9411)
reach = (14.98, 14.31, 5.856)
reach_waves = (0.1102, 0.1865, 0.5766)
reach_start = (0.9617, 0.2026, 0.5352)
size = (5.08, 1.543, 3.873)
size_waves = (0.4502, 0.6127, 0.4629)
size_start = (0.618, 0.3652, 0.808)
turn = (-173.1, -137.7, 145.2)
turn_waves = (0.7171, 0.3895, 0.6106)
turn_start = (0.4704, 0.4458, 0.9969)
gloss = 0.8652
focus = 0.7228
centre = hsv(47.4, 1, 1)
edge = hsv(189.6, 0.41, 0.02)
}
variant member_11 {
mirror_x = (-0.9413, 1.08, 1.075)
mirror_y = (1.061, -1.024, 0.9389)
mirror_z = (0.9362, 0.9342, -1.039)
reach = (19.85, 3.001, 18.66)
reach_waves = (0.1904, 0.4032, 0.3616)
reach_start = (0.9916, 0.07116, 0.03809)
size = (2.844, 2.675, 2.745)
size_waves = (0.2702, 0.1133, 0.2891)
size_start = (0.07638, 0.1702, 0.5224)
turn = (-338.4, -130.5, 86.89)
turn_waves = (0.2679, 0.2536, 0.06887)
turn_start = (0.909, 0.07045, 0.1855)
gloss = 0.02105
focus = 0.7658
centre = hsv(116.2, 1, 1)
edge = hsv(42.7, 0.15, 0.25)
}
variant member_12 {
mirror_x = (-1.084, 0.9818, 0.9569)
mirror_y = (1.037, -1.025, 0.9851)
mirror_z = (0.9334, 0.9378, -0.9445)
reach = (17.88, 18.2, 12.18)
reach_waves = (0.06961, 0.3664, 0.7608)
reach_start = (0.4042, 0.4254, 0.5262)
size = (7.368, 2.488, 6.649)
size_waves = (0.311, 0.6345, 0.2357)
size_start = (0.2111, 0.7011, 0.8735)
turn = (-111.3, -176, 86.89)
turn_waves = (0.1928, 0.7837, 0.3386)
turn_start = (0.4741, 0.5516, 0.5962)
gloss = 0.8493
focus = 0.569
centre = hsv(2, 1, 1)
edge = hsv(188.3, 0.31, 0.12)
}
variant member_13 {
mirror_x = (-0.9291, 1.017, 1.038)
mirror_y = (0.9082, -1.003, 1.004)
mirror_z = (1.027, 1.089, -1.037)
reach = (13.95, 8.257, 14.34)
reach_waves = (0.7818, 0.5895, 0.6817)
reach_start = (0.2068, 0.304, 0.279)
size = (4.494, 1.011, 7.72)
size_waves = (0.09837, 0.7605, 0.1247)
size_start = (0.7691, 0.9021, 0.124)
turn = (31.18, 27.53, 151.2)
turn_waves = (0.09903, 0.02196, 0.4895)
turn_start = (0.03072, 0.1364, 0.2159)
gloss = 0.298
focus = 0.1155
centre = hsv(156.8, 1, 1)
edge = hsv(76, 0.41, 0.35)
}