Intriguing features of NFT collection generation

NFT Generator features from Whimsy Sisters development team

Whimsy Sisters Project
6 min readMay 2, 2022

What is the main goal when working on a generative art collection?

Many do not ask this question and simply adjust the rarity of certain traits. Some developers take the task more seriously and try to avoid different trait intersections, but this is not enough! The main goal is to make PFP looks good not only in a full size but as a small avatar! Numerous devs do not pay enough attention to this.

0N1 Force for example. Some tokens have the same face and background color

We have been working on the Whimsy Sisters generation for 4 months, constantly improving and refining the generator and correcting combinations so that each sister looks beautiful both in miniatures and in full resolution.

It is difficult to make an avatar look good even in miniature, especially if you use ready-made open-source solutions for generative art. Since the beginning of the NFT boom in the summer of 2021, our team has started developing a collection generation tool. Since that time, our generator has gone through fire and water on a bunch of collections, and has transformed from a regular python script into a full-fledged software with many tools and all sorts of options to exclude and group traits.

Generator main window screenshot

If you’re wondering how the generator puts the trait pictures together, here’s a quick explanation:

For each token, the generator randomly selects traits layer by layer, taking into a consideration all possible conditions. Next, metadata is created for each token with the names of the selected layers. A render file is created, indicating in which order to put the layers on top of each other.

Assembled layer by layer picture

So what features are needed in the generator to create a collection that requires a lot of exceptions and conditions? For all the time of development, we have gathered the following list:

  • The most important feature is a convenient and real-time interaction with the generator table, where you can select multiple layers at a time and assign a group or a tag to them. As well as a preview of the selected layer and all sorts of conveniences when working with tables and hotkeys.
  • Exclusions require base tags that can be assigned to a specific group of files and excluded from other files using an anti-tag of the same name.
  • Euler’s groups. More complex work with groups is necessary for creating different types of characters, grouping all body parts under the same skin tone, grouping compound hair, etc.
  • The ability to assign the trait several times in a row. For example, in Whimsy Sisters, accessories are being assigned to a character 3 times, but this does not negate the fact that all three times there can be picked none! That also adds variety.
  • Keys and locks — allow you to set keys to some values, and locks to others. If, as the next token is being assembled, the generator does not find any necessary key, then it will not give a choice of items with the corresponding locks and the picture will be assembled without them. This is very convenient when the hair consists of a front and back layer! We put keys on all the front parts of the hair, and corresponding locks on the back. Thus, when constructing a token, they always go first, and only then the corresponding back pair of hairs is selected for them. This eliminates the possibility of two front hairs or two back hairs getting assigned from one set.
  • Ability to change the drawing order of a layer within the same folder. As with the hair example, we force the back of the hair to be rendered just above the background.
  • Ability to work with subfolders. It helps a lot with grouping all layers for both the artist and the developer.
  • Possibility of deep work with metadata at all stages of generation, assignment of trait names, and the ability to exclude some group of traits from metadata. For example, in Whimsy Sisters, we do not indicate the face shape, ears, and noses in the metadata, although we have a big variety!
  • Metadata viewer tool. It is extremely necessary to check what rarity is obtained at the stage before rendering all the pictures — this allows you to check the distribution of trait rarity in advance.
  • Ability to convert color profile! Julia draws on an iPad and uses the Display P3 color profile, which is not detected by all browsers, so we convert all images to sRGB when rendering pictures.
  • Ability to render in different resolutions and formats. It is very convenient for sending multiple file previews to each other during testing.
  • Ability to render on the GPU. Fast generation of high-resolution tokens greatly speeds up the testing process. We quickly look through the images, look for options that we don’t like, make adjustments in the generator and start again. By the end of the project, we had accumulated more than 20 pages of different exceptions of traits that don’t fit or look good together for one reason or another!

It seems that this is enough to build any collection, however, at Whimsy Sisters we were faced with the need to expand the functionality of the generator — an interesting problem arose at the stage of assembling red-haired Sisters.

At one of the assembly process steps, our generator decides which eyes to choose, and if it selects the eyes for red-haired girls, the further assembly process must follow strict layer selection rules that are suitable for red-haired girls only (red freckles, red hair, red eyebrows).

To do this, we introduced magnets into the generator — if at some step the generator comes across a layer with an assigned magnet, then at subsequent steps, if there is a layer with the same magnet among the selection, it will definitely be selected. In addition, it should be possible to build Sisters with just red hair, no freckles and no red eyebrows. We had to cheat and simply duplicate the red hair in the table and not assign magnets intended for red-haired Sisters to them.

Of course, all this could be done by Euler’s groups, but it would take more time and would certainly lead to problems that were not noticed the first time.

Randomly generated redhead sister

Also on this project, our team developed the manual assembly mode of the Sister, where the user can assemble the Sister step by step, layer by layer. This is one of the steps of the roadmap and we’re working on it in advance, but this can be a whole new article, which will be published soon!

technical preview of a manual generator for the website

Below you can see how the sisters looked after the first generation, where all exceptions were created by eye, and after the final adjustment of all exceptions, after many test generations.

Before
After

Subscribe to our social networks and to our founder and artist Julia!

Website: https://whimsysisters.com/
Twitter: https://twitter.com/Whimsy_Sisters
Discord: https://discord.gg/N2cN4V3pbm
Artist: https://www.instagram.com/liyadraws

Twitter Discord Artist

--

--

Whimsy Sisters Project

Whimsy Sisters is a pfp project, consisting of all things magical. It’s a collection of different characters from gentle fairies to vampires and witches.