Generative avatars for Parity staff as unique NFTs that evolve with their careers.
See the temporary live demo on the separate GitHub Pages site.
This is hosted from a public repository, which contains no obvious references to the project specifics and only the compiled code of this project; this can be done from this repository as follows (but ensure there's no sensitive information in any .env in the root folder first!):
yarn dist:fresh && rm -rf path/to/wip-project-demo-1/* && cp -R dist/* path/to/wip-project-demo-1/All the main inputs are passed in as query-string parameters (e.g: demo.com?key-0=value-0&key-1=value-1).
id: ThestringID of the avatar distinguishes its assets in the bucket/folder. Default isid.seed: A random seedinteger, for deterministic random number generation.pause-on-blur: Flagbooleanto pause rendering when the page is blurred. Default istrue.shadows: Thenumberlevel of quality of shadows,0to4. Default is4.
pause: Flagbooleanto start the app in a paused state. Default isfalse.animate: Flagbooleanto animate or update instantly. Default istrue.
-
screenshots: Flagbooleanto capture screenshots automatically. Default isfalse. -
screenshot-at-0,screenshot-at-1,screenshot-at-2,screenshot-at-3: Cameranumberpositions to capture screenshots from, up to 4 denotedscreenshot-at-0toscreenshot-at-3.3
numbervalues per position, 1 per-axis, likescreenshot-at-0=0&screenshot-at-0=1&screenshot-at-0=2.To disable a position and screenshot, pass any non-
numbervalue. Default is 4 valid camera positions. -
upload: Flagbooleanto upload screenshots toS3, or local download otherwise.Requires a
.envfile at the project root with valid values for:AWS_BUCKET_NAMEAWS_REGIONAWS_ACCESS_SECRETAWS_ACCESS_KEY_IDAWS_PATHAWS_URL
Default is
false.
fxaa: Flagbooleanto use the anti-aliasing post-process. Default istrue.ssao: Flagbooleanto use the screen-space-ambient-occlusion post-process. Default istrue.dof: Flagbooleanto use the depth-of-field post-process. Default istrue.bloom: Flagbooleanto use the emissive-bloom post-process. Default istrue.fog: Flagbooleanto use the fog post-process. Default istrue.fog-color: The fog CSS colorstring, like#09f(may needURL-encoding). Default is#1e1e1e.
-
distort-orient: Distorted body flagbooleanto calculate surface normals. Default istrue. -
distort-cell: Distorted body flagbooleanornumbervalue to use cell-noise, and if so which type.Given as
false(uses classic noise); or anumber(cell-noise type):0: nearest cell.1: next-nearest cell.- Any other
number: Voronoi cell (1-0, true boundary).
Default is
2, for Voronoi cell-noise. -
distort-noise: Distorted body noise inputnumberscaling values per-axis. 3 values, likedistort-noise=0&distort-noise=1&distort-noise=2. Default is4,4,4forx,y,zscales. -
distort-speed: Distorted body noise inputnumbervelocity values, per-axis. 3 values, likedistort-speed=0&distort-speed=1&distort-speed=2. -
distort-jitter: Distorted body cell-noisenumberjitter amount. No jitter at0gives a linear grid; full jitter at1gives organic cells. Default is1. -
distort-surface: Distorted body distortionnumberamounts. 4 values, likedistort-surface=0&distort-surface=1&distort-surface=2&distort-surface=3.Each entry denotes a different setting:
- Amount the initial surface expands (
+) or shrinks (-). - Amount to distort the surface normal.
- Amount the distorted surface expands (
+) or shrinks (-). - Threshold to make the distorted surface transparent (
+) or opaque (-).
- Amount the initial surface expands (
-
distort-metal: Distorted body metallicnumbervalue for physically-based-rendering. -
distort-rough: Distorted body roughnessnumbervalue for physically-based-rendering. -
distort-gaps: Distorted body thresholdnumberto give the distorted surface transparent gaps. -
distort-cull: Distorted bodystringvalue of which polygon faces to cull (hide), any of:none/None: cull (hide) no faces, show all.front/Front: cull (hide) front-faces.back/Back: cull (hide) back-faces.both/Both/front-and-back/FrontAndBack: cull (hide) all faces.
Default is
front. -
distort: Distorted body flagbooleanto render the distorted body. Default istrue.
-
volume-ramp: Volumenumbertaper ramp values, 4 values as 2 pairs:- Values
0-1: start-end ramp of distance from the volume surface. - Values
2-3: start-end ramp of equivalent scaling of shapes in volume.
If animating, the ramp distance from the volume surface will animate in from
0to the end value.Default is
0-0.03(ramp distance from the volume surface) and0.15-1(equivalent scaling of shapes in volume). - Values
-
volume-clamp: Distancenumbervalue to move shapes lying outside the volume back towards the volume, relative to how far they lie outside it. Controls how the shapes are clamped within the volume. Default is1.5. -
shape-color: Shape CSS colorstringrange, like#09f(may needURL-encoding). The 2 colors that are mixed between by the shape's color-noise field, and applied to each shape. 2 values, likeshape-color=red&shape-color=blue. Default is#d17521and#0d1ec7. -
shape-color-noise: Shape color noise inputnumberscaling values per-axis.4 values, like
shape-color-noise=0&shape-color-noise=1&shape-color-noise=2&shape-color-noise=3.Default is
5,5,5forx,y,zscales; and0.0003time-scale. -
shape-metal: Shape metallicnumbervalue for physically-based-rendering. -
shape-rough: Shape roughnessnumbervalue for physically-based-rendering. -
shape-scale: Shape scalenumbervalue range, a start-end scale range the shapes vary over according to their position relative to the volume. 2 values, likeshape-scale=0&shape-scale=1. Default is0.02start scale,0.05end scale. -
shape: Shape geometrystringnames to use when generating shapes. Any number of values, likeshape=cube-f&shape=cone-gand any others. Default iscube-f,tetrahedron-f.
scatter: Scatternumberof shape instances randomly before growing the L-system. Default is600.scatter-offsets: Scatter flagbooleanto use offset instances. Default istrue.scatter-rotates: Scatter flagbooleanto use rotate instances. Leave disabled to better see shapes align to the volume surface. Default isfalse.scatter-scales: Scatter flagbooleanto use scale instances. Default istrue.
-
scatter-grow: Flagbooleanto grow an L-system at each scattered point, or use it as a single separate processes otherwise.Caution! Can be costly at high settings or inputs, and is combinatorially explosive with scatter and grow amounts.
Default is
true.
-
grow-steps: Grow L-systemnumberof steps to iterate. Default is2. -
grow-offsets: Grow L-system flagbooleanto use offset instances. Default istrue. -
grow-rotates: Grow L-system flagbooleanto use rotate instances. Leave disabled to better see shapes align to the volume surface. Default isfalse. -
grow-scales: Grow L-system flagbooleanto use scale instances. Default istrue. -
grow-offset: Grow L-systemnumberoffset position to start growing from.3
numbervalues, 1 per-axis, likegrow-offset=0&grow-offset=1&grow-offset=2.Ignored if
scatter-growistrue, as scattered instances are used instead. Default is-0.01,0.2,0(in the middle of the bust's head). -
grow-rotate: Grow L-systemnumberrotation to start growing from.4
numbervalues, as a quaternion rotation, likegrow-rotate=0&grow-rotate=1&grow-rotate=2&grow-rotate=3.Ignored if
scatter-growistrue, as scattered instances are used instead. Default is ay-axis rotation (rotated to face out from the bust's head). -
grow-scale: Grow L-systemnumberscale to start growing from. 1numbervalue, uniform across all axes, likegrow-scale=1. Ignored ifscatter-growistrue, as scattered instances are used instead. Default is halfway between theshape-scalerange. -
grow-length: Grow L-systemnumberlength to advance offset at each growth step. Default is0.03. -
grow-angle: Grow L-systemnumberangle to rotate by at each growth step. This value is multiplied bypito convert it to an angle. Default is0.25, giving a 45 degree angle. -
grow-length-rate: Grow L-systemnumberlength rate to change thegrow-lengthby rules. The rate of change, used to either multiply or divide the step amount. Default is1.2, giving a 20% increase or decrease any time a rule uses it. -
grow-scale-rate: Grow L-systemnumberscale rate to change thegrow-scaleby rules. The rate of change, used to either multiply or divide the step amount. Default is1.2, giving a 20% increase or decrease any time a rule uses it. -
grow-angle-rate: Grow L-systemnumberangle rate to change thegrow-angleby rules. Default is1.2, giving a 20% increase or decrease any time a rule uses it. -
Full L-system grow-rules: L-system grow axiom and rules. Original set, based on the Houdini syntax:
FHGfhJKMT+-&^\/|*~"!;_?@[]<>. URL aliases, substitutions for URL-encodings:FHGfhJKMT -$^\/|*~"!;_.@[]<>.Each rule is a character that's mapped to an instruction, and can be replaced by new character by iterating the L-system growth:
F: Move forward, creating geometry.H: Move forward half the length, creating geometry.G: Move forward but don't record a vertex.f: Move forward, no geometry created.h: Move forward a half length, no geometry created.J: Copy geometry from leafJat the turtle's position.K: Copy geometry from leafKat the turtle's position.M: Copy geometry from leafMat the turtle's position.T: Apply tropism vector (gravity).+(URL alias): Turn right by angle.-: Turn left by angle.&(URL alias$): Pitch down by angle.^: Pitch up by angle.\\: Roll clockwise by angle./: Roll counter-clockwise by angle.|: Turn back.*: Roll over.~: Pitch/roll/turn random amount up to angle.": Multiply current length by step size scale.!: Multiply current width by thickness scale.;: Multiply current angle by angle scale._: Divide current length by step size scale.?(URL alias.): Divide current width by thickness scale.@: Divide current angle by angle scale.[: Push turtle state (start a branch).]: Pop turtle state (end a branch).<: Check left context.>: Check right context.
See:
-
grow-axiom: Grow L-systemstringaxiom rule, to start the L-system growth to be replaced according to thegrow-rules. Default is^^A.See: Full L-system grow-rules for their meaning.
-
grow-rule: Grow L-systemstringproduction rules, to iterate the L-system growth by replacing thegrow-axiom, with the term/s on the left of a->(or=) replaced by the term/s to the right. Any number of values, likegrow-rule=A->FA&grow-rule=F->AFand any others. Default isA->M[F"![^A&&A]-A++A], growing a simple concentric form.See: Full L-system grow-rules for their meaning.
-
eye-scale: Eyenumberscale, uniform across all axes. Default is0.03. -
eye-intense: Eyenumberintensity of light emitted. Default is0.2. -
eye-alpha: Eyenumberalpha transparency. Default is0.6. -
eye-color: Eye CSS colorstring, like#09f(may needURL-encoding). Color of the eye shape and the light it emits. Default is#fff(white). -
eye-emit: Eyenumberemissive color, scaleseye-color. Default is2. -
eye-l,eye-r: Eyenumberpositions, up to 2 denotedeye-landeye-r.3
numbervalues per position, 1 per-axis, likeeye-l=0&eye-l=1&eye-l=2andeye-r=3&eye-r=4&eye-r=5.To disable an eye, pass any non-
numbervalue. Default is 2 valid eye positions.
-
lit-at-0,lit-at-1,lit-at-2,lit-at-3: Lightsnumberpositions, up to 4 denotedlit-at-0tolit-at-3.3
numbervalues per position, 1 per-axis, likelit-at-0=0&lit-at-0=1&lit-at-0=2.To disable a light, pass any non-
numbervalue. Default is 4 valid light positions. -
lit-color-0,lit-color-1,lit-color-2,lit-color-3: Lights CSS colorstringvalues, like#09f(may needURL-encoding), up to 4 denotedlit-color-0tolit-color-3, likelit-color-0=red&lit-color-1=blue&lit-color-2=green&lit-color-3=white. To disable a light, pass a value resulting in black. Default is 4 light colors.