The Making Of the Chilly Bits NFT Generative Art Project (Part 1 of 2)

This two-part post covers the process we went through to make the 3D Art associated with the Chilly Bits NFTs, which were rendered inside the Unity 3D game engine. The assets used to create the Chilly Bits were modeled on our own using Blender or downloaded from copyright-free asset websites such as CGTrader.

We had some previous experience with the engine since having released our game “Idle Chess Story” in 2019. So when we wanted to create our own NFT collection, we knew that Unity would be a great choice for handling the rendering and the attribute randomization.

The C# code for the Unity project is freely available on GitHub. The second part of the post will cover some of the main functionalities. In this first post, let’s take a behind-the-scenes look at how our Unity project looks like. 

We used Blender to model and sculpt the static base of the Chilly Bits. We used a modular approach, where the body, belly and visor of the Chilly Bits always remain the same and they are mix-and-matched with random combinations of eyebrows, eyeballs, hats and accessories to create unique characters.

Wireframe view of a basic Chilly Bit in Blender

Wireframe view of a basic Chilly Bit in Blender

Shaded view of the same basic Chilly Bit in Blender

Shaded view of the same basic Chilly Bit in Blender

Chilly Bit with only the static components visible.

Chilly Bit with only the static components visible.

Chilly Bit with multiple components visible. The more attribute variations we add to the base model, the possible permutations of all Chilly Bits increases.

Chilly Bit with multiple components visible. The more attribute variations we add to the base model, the possible permutations of all Chilly Bits increases.

Once the 3D character and all of its subcomponents were designed, it was time to import them into Unity and start structuring the scene.

The Unity project has three main components:

  • 1. The Scene Hierarchy

The scene hierarchy is how all the objects that live in the scene are stored and organized.

The scene hierarchy is how all the objects that live in the scene are stored and organized.

  • 2. The Scene Display

The scene display shows what the scene’s main camera sees combined with the UI canvas. The “randomize” button generates a never seen before Chilly Bit and the “render button takes a snapshot of the camera and stores it as an image file.

The scene display shows what the scene’s main camera sees combined with the UI canvas. The “randomize” button generates a never seen before Chilly Bit and the “render button takes a snapshot of the camera and stores it as an image file.

  • 3. The Project Assets

In the project assets live all our models, materials, scripts, and prefabs. Basically all the data required to run the project.

In the project assets live all our models, materials, scripts, and prefabs. Basically all the data required to run the project.

Here is how the scene is laid out from a side view:

In this image you can see the Chilly Bit, the floor, the wall, and the camera.

In this image you can see the Chilly Bit, the floor, the wall, and the camera.

The Chilly Bit is lit by a front light, a back light, and a spotlight. There is also a directional light acting as the sun. Tweaking with the settings of all these objects—such as the luminosity of the lights—greatly affects the looks of the images you render.

Notice how small the floor and wall are? and how the Chilly Bits seem to lack a lower body? Well, that is an old industry trick in computer generated graphics, if something is not to be captured on camera then it does not need to be present in the scene.

Here you can see a free-cam view of the scene from another angle

Here you can see a free-cam view of the scene from another angle


A Chilly Bit always keeps track of his activated attributes. But how does it change them randomly?

img9.PNG
img10.PNG

Here is a quick overview of how attribute randomization is achieved in Unity.

It all starts with the object hierarchy of the main character.

img7.PNG

The Chilly Bit character is built of many subcomponents (belly, body, visor, hats, weapons, beaks, accessories, eyebrows, eyeballs, and cards). We randomize these subcomponents to create a huge variety of Chilly Bits, of which there can never exist two of the same.

Here is an example of the beak subcomponents of the Chilly Bit object, in which the “large” beak is activated while all the other beaks are deactivated.

There are several beaks, organized in different rarity categories (common, uncommon, rare, epic, and legendary) Only one beak may ever be activated at once. Whenever we want to activate a random beak for our character, we pick one from this list. Common beaks are much more likely to be picked than rare beaks, and legendary beaks only appear a fraction of the times. Check part two for an exact breakdown of the odds for each rarity.

For a live view of the project you can watch this short video I made of me going through our Unity project. 

So, we have the Unity project with all of our attributes in place, laid out in their correct positions. Now, we needed a way to randomly activate the attributes according to their rarities and to keep track of them. We wrote two handy C# scripts to do this for us which will be explained in detail in the second part of this blog post. Stay tuned!

Are you interested in making your own 3D generative art project like ours? Here are two videos to get you started in modelling (Blender) and working with 3D Engines (Unity). Some programming knowledge is required to get started.

Blender Beginner Tutorial - Part 1 - YouTube

How to make a Video Game in Unity - Part 1 - YouTube


Good luck on your journey and feel free to ask us any questions on how to get started in the world of 3D graphic design!

Stay chilly.

Previous
Previous

How can I buy a Chilly Bit?

Next
Next

Welcome to the home of the Chilly Bits NFTs