# Nebula by RVig

*Art Blocks Factory, project 210 · 154 outputs · public mint from 30 November 2021 · CC BY-NC-SA 4.0*

![Nebula #58: overlapping translucent loops in orange, red and pink on black, folding around a bright core](https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/210000058.png)
*Nebula #58, the token the artist has set as the project's featured output. Render: Art Blocks media proxy.*

## The work and its context

Nebula is project 210 on the Art Blocks contract `0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270`. The index records 154 invocations against a maximum of 154, the runtime label `js@na` (plain JavaScript, no library), a square aspect ratio, the licence `CC BY-NC-SA 4.0` and a price field of 0.15 ETH. It is tagged "animated", "interactive" and "space", and it belongs to the Art Blocks 500 [^S01]. RVig's project text opens with astronomy: a nebula is "a distinct body of interstellar clouds". It then turns to the artwork, a "complex, twisted and nebulous shape you can contemplate while rotating, or grab and spin" [^S01][^S02].

Each output is a single form built from hundreds of thin, translucent closed curves. They are stacked, twisted and mirrored, so that the lines read as a surface: a veil, a petal or a glowing cloud. On black grounds the curves add light to one another and burn white at the core. On white grounds they darken one another like layers of tinted film [^S01]. The form turns slowly on two axes, and the viewer can drag it, pause it or change its pixel resolution [^S01][^S02].

Nebula was released in the Factory category. Art Blocks introduced Factory in 2021 as a quicker path for artists while the Curated queue was overwhelmed. In the words of an August 2021 guide, it "still has an onboarding process with the Art Blocks team" but does not wait for the curation board [^S03]. Art Blocks later gathered its first 500 projects, from all categories, into "The Complete Collection 2020-2025: Art Blocks 500" [^S04][^S05].

## Conception and development

RVig is Richard Vigniel, born in Lyon and based in Geneva. He trained in computer science and engineering at INSA Lyon and McGill University in Montréal [^S06][^S07]. His site dates his digital art practice to 1999 and his exhibitions in Europe to 2003 [^S07]. Nft now's 2024 profile says he began building his own image-generation framework in 1999, able to combine filters, generators and transformations [^S06]. He describes his generative art as "always very lively, colourful, and organic", and says his inspiration has "spontaneously drawn from nature and flowers" [^S06].

Nebula was his second Art Blocks project. The first, Flowers (project 116, August 2021), made bouquets of generative flowers [^S08][^S06]. Nft now reports that Flowers minted 6,158 editions in one hour during the generative boom of 2021 [^S06]. RVig's own account of the sequence appears on the page for his later project Volute. There he writes that "'Nebula' led me into exploring animated and interactive generative art, while keeping the concept around drawing thousands of intersecting and over-layering curved shapes" [^S09]. The same page places Nebula in November 2021 and describes it as dynamic and interactive, written in plain JavaScript [^S09].

His project page gives the method in one line: "a set of points define a shape, the shape is rotated around two axis while size is getting smaller" [^S02]. The code bears that out closely, as the next section shows.

## How the work was constructed

The program is a single script of 4,748 bytes, SHA-256 `f56a27283e2744b59db7552046323ebdad1945f9091e9622750bfbec2ee6fe2b`. It was retrieved from the Art Blocks index and read in full. No code is reproduced here [^S01]. It draws on an HTML canvas with the browser's 2D context. There is no p5.js and no WebGL [^S01].

**Reading the hash.** The script splits the token hash into 64 single hex digits (values 0 to 15) and reads them in sequence. Each random choice takes one digit modulo the number of options [^S01]. Twenty values are drawn this way for the traits. Three more set the starting orientation and spin direction [^S01].

**The shape.** Complexity sets the number of control points, from 2 to 7, spaced evenly round a circle. Each point gets a radius, and Amplitude sets how far the radii may fall below the outer edge, from 5 per cent to 100 per cent of it [^S01]. The program then walks inwards from the edge to the centre in hundreds of small steps. At each step it shrinks the control shape, following a sine curve, and rotates it about two axes. The rotation about one axis grows towards the centre and the other grows towards the edge. Rotation X and Rotation Y set these twists at half a turn, one, one and a half or two full turns [^S01]. Each step is stored twice, once turned one way and once the other, which gives every Nebula its mirrored, doubled layers (code reading) [^S01].

**Line density** sets the step size and line width together. High density gives 1,500 steps (3,000 curves) with the thinnest lines, Medium 750 and Low 375 [^S01]. **Lines** chooses how the points are joined: Straight joins them with straight segments; Curved uses smooth Catmull-Rom-style Bézier curves; Curly uses a negative tension, so each curve overshoots its points and throws off small loops and cusps (code reading) [^S01].

**Colour.** Each curve is stroked at a third opacity. Its colour moves from the inner colour at the centre to the outer colour at the edge along an ease-in-out curve [^S01]. Colours are defined as points in the OKLab perceptual colour space and converted to screen colour in the script. Silver is the neutral case, with no chroma at all [^S01]. With Alternate lines, every other step is drawn lighter, which gives a fine striped sheen [^S01]. On black grounds the curves are combined with additive ("lighter") blending, and on white with multiply. Dark and Light grounds are black or white washed with 15 per cent of the inner colour [^S01].

The published traits follow the program exactly. A check of all 154 token hashes against the rules reproduced every Amplitude, Complexity, Lines, Line density, Background, Rotation, colour and Alternate lines value without a single mismatch [^S01]. The weights come from the modulo arithmetic on 16 possible digit values, as the table shows (own computation).

| Trait | Program weight (of 16 digit values) | Published count of 154 |
| --- | --- | --- |
| Amplitude: Very Low, Low, Medium, High, Very High | 2, 4, 6, 3, 1 | 21, 42, 62, 22, 7 |
| Complexity: 2, 3, 4, 5, 6, 7 | 2, 2, 3, 4, 3, 2 | 22, 20, 25, 32, 36, 19 |
| Lines: Curved, Straight, Curly | 6, 5, 5 | 66, 52, 36 |
| Line density: High, Medium, Low | 4, 8, 4 | 43, 67, 44 |
| Background: Black, Dark, White, Light | black ground 10, then a tint 1 in 4 | 68, 23, 43, 20 |
| Rotation X / Rotation Y: Low, Medium, High, Very High | 4 each | 37, 32, 41, 44 / 41, 34, 39, 40 |
| Inner and Outer Color: Silver, Orange, Dark Orange, Coral, Hot Pink, Pink | 2 each | Inner 19, 29, 18, 9, 22, 16; Outer 19, 18, 14, 21, 21, 22 |
| Inner and Outer Color: Viking, Malachite, Pistachio, Coral Red | 1 each | Inner 10, 5, 11, 15; Outer 12, 10, 7, 10 |
| Alternate lines: Yes | 4 | 43 |

**Viewing and printing.** The form spins continuously, one full turn every 30 seconds about one axis and every 40 seconds about the other. Dragging adds to it [^S01][^S02]. Keys 1 to 4 set the resolution to a third, a half, native or "Print". Print mode renders a canvas 6,000 pixels square and pauses the animation (code reading) [^S01]. That matches the artist's advice to print at 6000 by 6000 pixels (300 dpi) as PNG, preferably on Alu-Dibond or direct on metal [^S02]. The script also lowers its own resolution when frames are slow, and it pauses if a single frame takes more than half a second. The project text warns that the "animation stops if device too slow" [^S01].

## Quirks in the algorithm

A full read of the script, checked against all 154 published token records, turned up the following. Points resting on the code alone are marked as code readings.

1. **Complexity 8 is written but can never occur.** The table of control-point counts has 16 entries, ending in 8. The draw that indexes it can only return 0 to 14, so the last entry is never reached. No Nebula has Complexity 8, and the digit value 15 wraps round to give Complexity 2 instead [^S01].
2. **Every Nebula spins the same way.** The spin direction is meant to be plus or minus one, but it is drawn with a range of one, which always returns zero. All 154 outputs therefore rotate in the same direction, and the hash digit spent on the choice has no effect (code reading) [^S01].
3. **The radii reuse the trait digits.** Before building the shape, the program resets its position in the hash to the start. The control-point radii are then read from the same first digits that set Amplitude, Complexity and the other early traits (code reading) [^S01]. The shape's lobes are therefore not independent of its labels. In one case this cancels the amplitude outright. #41 has two control points whose digits are equal, so both radii sit at the edge and no amplitude is applied, although the token is labelled "Very Low" [^S01].
4. **Nine of the twenty trait draws are thrown away.** The script draws twenty values at the start but uses only eleven. Positions 2, 3, 6, 12, 14, 15, 16, 18 and 19 are never read [^S01]. Taken together with the unused spin digit, at most 16 of the hash's 64 hex digits affect the image. The rest, from digit 23 onwards, change nothing (code reading) [^S01].
5. **Half the drawing loop draws nothing.** The array that holds the curves is sized for twice the number actually built, and the drawing loop runs over all of it. The second half holds only zeros, so about half the stroke calls in each frame draw a zero-length path at the centre (code reading) [^S01].
6. **"npause" always pauses.** The undocumented URL option `npause` converts its text value to a true-or-false flag. Any non-empty value, including "0" or "false", counts as true (code reading) [^S01]. Two further options, `nrx` and `nry`, set the starting orientation. When the viewer releases the mouse, the script prints the hash and the current angles to the browser console. Together these let a collector record and reopen a favourite view (code reading) [^S01].
7. **Static renders show one frozen pose.** In a headless browser the script pauses itself. Thumbnails, including the Art Blocks media-proxy renders on this page, therefore show each token at its starting orientation, set by hash digits 20 and 22 (code reading) [^S01].
8. **Ruled surfaces from two points.** With Complexity 2 and Straight lines, each "curve" collapses into a single line segment drawn back and forth. The stacked segments form a ruled surface. Five tokens have this combination: #71, #101, #102, #123 and #128 [^S01].
9. **Leftovers.** The script sets an `antialias` property that the 2D canvas does not have, so it does nothing. Its OKLab conversion uses coefficients rounded to one or two decimal places. A final constant, never used, reads "artblocks.io & GenArtClub" as a thank-you (code reading) [^S01].

## The most coveted variants

No published collector guide, sale record or artist statement singles out particular Nebulas; searches for them found nothing. The notes below are drawn from the index data and the renders, not from collector lore [^S01].

**The artist's choice.** RVig has set #58 as the project's featured token (pictured at the top). It is a Curved, High-amplitude Complexity 4 in Dark Orange and Coral Red on black, with no rare trait. [^S01].

**Very High amplitude (7 of 154).** These are the deepest-lobed forms: #23, #66, #86, #87, #90, #126 and #153 [^S01]. #66 also has the highest combined trait rarity in the set by a simple information score (own computation). It is a Curly Complexity 3 with Alternate lines, running from Coral Red at the core to Malachite green at the edge, on a dark ground.

![Nebula #66: a hot white-green core inside faint red and green loops on a dark maroon ground](https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/210000066.png)
*Nebula #66, Very High amplitude with a Malachite outer colour. Render: Art Blocks media proxy.*

**Malachite cores (5 of 154).** Malachite is the rarest inner colour. It appears on #8, #27, #69, #96 and #147 [^S01]. #8 pairs it with a Viking blue-green edge on black, and so is the most fully green Nebula.

![Nebula #8: sea-green and teal veils on black](https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/210000008.png)
*Nebula #8, Malachite inside Viking. Render: Art Blocks media proxy.*

**Single-colour Nebulas (15 of 154).** When the inner and outer colours match, the form is one hue throughout [^S01]. Only #117 is Silver on both, a white-grey form on black with Alternate lines. It is the one Nebula without colour.

![Nebula #117: a white and grey tangle of looping curves on black](https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/210000117.png)
*Nebula #117, the only Silver-on-Silver output. Render: Art Blocks media proxy.*

**The ruled surfaces (5 of 154).** The Complexity 2 Straight outputs described in quirk 8 look least like the rest of the set. #71 is also single-colour, in Hot Pink on white [^S01].

![Nebula #71: a pink fan of straight lines crossing at the centre on white](https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/210000071.png)
*Nebula #71, a Complexity 2 Straight ruled surface. Render: Art Blocks media proxy.*

**AB5D's Nebula.** AB5D holds #82, a Curly Complexity 2 in Orange and Pink on black [^S01]. In its starting pose the two-point shape is seen almost edge-on. A bright orange-white bow-tie flares at the centre inside a wide, faint disc of lines, which is the most astronomical-looking image in the set.

![Nebula #82: a bright orange-white bow-tie flare at the centre of a faint dark disc of fine lines on black](https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/210000082.png)
*Nebula #82, held by AB5D. Render: Art Blocks media proxy.*

**The flat lens.** #41 is the output whose amplitude is cancelled (quirk 3). Its starting pose shows a pinched, four-lobed form on a pale orange ground [^S01].

![Nebula #41: a pale, pinched four-lobed form in orange and grey on a light peach ground](https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/210000041.png)
*Nebula #41, where equal radii leave no amplitude. Render: Art Blocks media proxy.*

## Notable collectors

At retrieval the 154 tokens were held by 112 addresses. Ninety-two of them held a single Nebula, and the largest holder had eight [^S01]. The three largest wallets carry no public profile name in the index [^S01]. Among the named Art Blocks profiles, TokenJuggler and ss888 hold four each, and gpunk holds three [^S01]. The Art Blocks project page shows gpunk's #122 as an example output [^S10]. ss888 holds #27 and #153, which head the OpenSea collection page's price list, although that page does not make clear whether the figures are sales or listings [^S11][^S01]. The artist's address still holds #0 and #146 [^S01]. No museum, fund or DAO holding was found.

## The mint

Invocation 0 was minted on 12 November 2021 at 18:52:34 UTC, to the artist's address, where it remains [^S01]. The index records activation on 24 November and a public start at 17:00 UTC on 30 November. The first public mint, #1, followed three seconds later [^S01]. The sale was fixed price with no limiter, at a price field of 0.15 ETH [^S01].

Demand was strong at first and then faded. Thirty-four tokens were minted in the first ten minutes, 52 in the first hour and 59 in the first day. By the end of the first week there were 81, and 91 after a month [^S01]. Only 28 more followed between January and April 2022. The final 35 were minted between 13 and 18 May 2022, twenty of them on the last day. #153 completed the edition at 17:37:21 UTC on 18 May [^S01]. The earlier AB5D essay gave the completion date as 22 May; the index gives 18 May [^S12][^S01].

At retrieval the index gave a lowest listing of 0.44 ETH, while the Art Blocks marketplace page showed five listings from 0.0959 ETH when read [^S01][^S10]. The royalty field is 5 per cent [^S01].

## Copyright and licensing

The index records `CC BY-NC-SA 4.0`, linked to the Creative Commons deed [^S01]. On that licence the images may be shared and adapted with attribution, for non-commercial purposes, and adaptations must carry the same licence. Commercial use needs the artist's permission [^S01]. RVig's page nonetheless invites holders to make their own prints through print-on-demand services, and gives the settings [^S02]. The script carries no separate code licence, and it loads no third-party library [^S01]. All images here are Art Blocks media-proxy renders, linked rather than re-hosted.

## Significance and limitations

In under five kilobytes, with no library, Nebula produces a rotating three-dimensional form, live and at print resolution. It marks the point where RVig moved from the static Flowers into animation and interaction, a direction continued in the static and dynamic outputs of his next project, Dualité [^S09]. Its traits follow the code exactly. Its oddities are small, and the reused radius digits make the set more tightly bound than its labels suggest.

This draft is thin on the market: no sale history, exhibition, collector commentary or artist interview about Nebula was found.

Unresolved research questions:

1. What are Nebula's highest recorded sales? The OpenSea page's figures for #153 and #27 could not be confirmed as sales from the automated extraction, and its total volume figure looks unreliable.
2. Why do the index (0.44 ETH) and the Art Blocks marketplace page (0.0959 ETH) disagree on the floor? Was 0.15 ETH the launch price, or a later setting?
3. The earlier AB5D essay says Nebula began as an attempt at three-dimensional orchids growing out of Flowers, and moved from p5.js to plain JavaScript. The second point matches the Volute page, but no source for the orchid story was found. Is it from an X post or an interview?
4. Is invocation 0, minted on 12 November 2021 and still in the artist's wallet, an artist proof? And what drove the burst of 35 mints in May 2022?
5. Has any Nebula been exhibited or printed by the artist? RVig's X account (@rvig_art) and YouTube channel could not be read and are leads.

## Bibliography

### Primary: the work and the artist

[^S01]: Art Blocks public GraphQL index, `projects_metadata` for project 210 (including the full program, tags, featured token and royalty) and `tokens_metadata` for all 154 tokens, with public profile names from `users`. Retrieved 20 September 2026 via https://artblocks-mainnet.hasura.app/v1/graphql. Trait checks, weights and counts are the author's own computation from these records.
[^S02]: RVig, "Nebula, by RVig on Art Blocks Factory". https://rvig.art/Nebula.html
[^S07]: RVig, artist website, biography, projects and exhibitions. https://rvig.art/ (also at https://www.richard-vigniel.com/)
[^S08]: RVig, "Flowers", project page. https://rvig.art/Flowers.html
[^S09]: RVig, "Volute", project page, with notes on Flowers, Nebula and Dualité. https://rvig.art/Volute.html
[^S10]: Art Blocks, "Nebula by RVig", project and marketplace pages. https://www.artblocks.io/project/210 and https://www.artblocks.io/marketplace/collections/nebula-by-rvig

### Video and audio

No video or podcast about Nebula was found. RVig's own channels are listed under further reading; their contents could not be retrieved.

### Criticism, collecting and market

[^S06]: Matt Medved, "Next Up: RVig Fuses Florals & Poetry in Award-Winning Generative Art", nft now, 23 August 2024. https://nftnow.com/next-up/next-up-rvig-fuses-florals-and-poetry-in-award-winning-generative-art/
[^S03]: Druid, "A Brief Guide to Curated, Playground, and Factory Projects on Art Blocks", The Link (Medium), 26 August 2021. https://medium.com/the-link-art-blocks/a-brief-guide-to-curated-playground-and-factory-projects-on-art-blocks-f17283852350
[^S04]: Art Blocks, "Introducing Art Blocks 500". https://www.artblocks.io/articles/art-blocks-500-complete-collection
[^S05]: Art Blocks, "AB[500]". https://www.artblocks.io/discover/ab-500
[^S11]: OpenSea, "Nebula by RVig" collection page, read 21 September 2026 (automated extraction). https://opensea.io/collection/nebula-by-rvig
[^S12]: AB5D, "Nebula by RVig", previous essay. https://ab5d.xyz/series/nebula-by-rvig/

### Further reading

- RVig Generative Art, YouTube channel. https://www.youtube.com/channel/UCAJOtij7BRJeXl04a6xmHXA
- RVig on X, @rvig_art. https://x.com/rvig_art
- RVig on Instagram and TikTok, @rvig.art. https://www.instagram.com/rvig.art/ and https://www.tiktok.com/@rvig.art
- RVig on Sedition. https://www.seditionart.com/rvig
