The Procedural Asset Generator

A tool for procedurally generating common assets in games has been recently released as part of the research arcade project. This free-to-use tool is accessible through a web interface,  which can be accessed here.

What does the tool do?

The procedural asset generator is an interactive editor whose aim is to speed up the process of developing games. This is done largely through a procedural algorithm, which generates random 3D assets according to parameters specified by you.

With this tool, you can generate a number of different assets, and then easily download and import them directly into your game!

 

An example of some of the things you can make with the procedural asset generator. All of the objects in this scene were generated with this tool!

 

Currently, the tool is capable of generating a variety of low-poly environment assets, such as pine trees, rocks and bushy trees. In the future, we hope to expand this to encompass different other assets — textures, buildings, and perhaps even sound!

Motivation

The procedural asset generator was a tool born out of frustration. As games developers, we often have to redesign environment assets each time we start a new project. We could reuse them, however this probably isn’t the best idea if they’re from another game — you may run into all kinds of IP problems.

I always found the process of developing the same assets for each project tiresome and boring. This is accentuated by the fact that within your game, you don’t just want 1 rock. You want at least 5 rocks which you can place, so the environment doesn’t look too “regular”. Sitting at my desk, making slight variations of the same thing almost makes me lose motivation to develop the game before I’ve even started.

There’s also the fact that I’m pretty bad at 3D modelling. If I want to alter a tree to be slightly taller than the original, I would have little to no idea how to do it. This, combined with the previous reasons, led me to think there must be an easier way.

So I did a quick search to see if there were any similar tools out there.  There are tools like SpeedTree, however most of these are proprietary and often require a hefty installation. I just wanted an online app/widget which enables me to drag a few sliders, toggle a few buttons, and download 25 slightly different variations of the same thing for my game.

And so, the idea for the procedural asset generator was born. It was developed over the course of around a week, and released soon after.

 

How does it work?

The procedural asset generator works by using a method known as procedural mesh deformation. This process involves each vertex of a mesh being translated along its normal, by some magnitude which is randomly chosen. Some pseudo-code for this process can be found below.

 

//The "randomness" amount
randomness = 0.5;

for vertex in vertices:

    //Get the normal for this vertex or face
    normal = vertex.normal;

    //Find a random value between -1 and 1, multiply
    //by the "randomness"
    random_value = random(-1.0, 1.0) * randomness;

    //And set this vertex position to
    //vertex + (normal * deformation)
    vertex += normal * random_value;

 

If this sounds quite daunting, then you can think of this process as taking a 3D object, and squishing/stretching parts of it so it looks unique.  Then, by using different shapes to start with, we can build different types of assets.

For example, to build a rock, we can take a sphere and move the points which make up that sphere randomly, and suddenly we have a rock!

An example showing the mesh deformation process. Notice how a rock can easily be formed from a sphere just by moving the points in the sphere!

Rocks are fairly easy, but what about the trees? Well, the trees are done in pretty much the same way too. The “deciduous tree” is generated using the same process, but using different primitive shapes — a cylinder for the trunk, and a sphere for the bushy/leafy part.

The “pine tree” is a bit more tricky. The pine tree uses a series of stacked cylinders which decrease in scale. The trunk is just a simple cylinder.

A diagram showing how the different types of environment assets are generated by deforming primitive shapes.

 

How do I use it?

To get started, visit the procedural asset generator by clicking here, or navigating to the link found on the research arcade homepage. Once the asset generator is loaded up, select one of the items you wish to generate towards the bottom of the page.

Once you have done this, the editor should pop up, and you should see a rotating 3D object. Use the settings panel on the left-hand side to tweak the appearance of the object you wish to download, and simply just click the “download” button!

If you wish to mass download many objects, just click the download button a few times. Every time the download button is clicked, the “generate” button is also clicked. This is so you can easily download many variations of the same object!

We hope you have fun using our tool. Let us know what you think, and we’ll be happy to consider any suggestions!