Tutorial
Heading
Feb 18, 2022

Turning a 2D image into 3D using Blender

In this guide, we will explain how to translate an animated 2D logo into 3D, using projection mapping as the main technique

The mission

In this guide, we will explain how to translate an animated 2D logo into 3D, using projection mapping as the main technique for texturing the 3D model to achieve the most accurate result possible.

Afterward, we will animate the 3D logo using a very simple rig, which will simplify the process of animating our logo.

2D animated logo from Metaverse Builder

Resources

  • Blender 2.9 or newer
  • An animated 2D logo to create in 3D

Importing our 2D image as reference

The first step of this guide is to begin modeling our logo in 3D. To do so, we will use our 2D logo as a background image to assist us in building the shapes and accurately matching the logo's design.

The simplest way to import our 2D logo as a background image is by using the addon Import Images as Planes. Once the addon is activated, we can directly import our images as planes into our Blender scene.

Activating the Import Images as Planes Addon.

Importing the 2D logo as a plane into our scene

Once we have imported our image, we can now access the Object Data Properties panel to center it and adjust some other attributes such as opacity, size, etc. These are the settings we used for this particular image:

Object Data Properties panel and settings
2D logo placed in our scene

Keep in mind that if you want yo use symmetry in one or more axes, you should do before centering your image.

Modeling our logo in 3D

Now we are ready to start modeling our logo. In this case, we won't go into detail about how we modeled this particular logo since it consists of simple primitives and some instances of beveling for our top and bottom pieces.

This is the result of our model attempting to match the background image:

3D logo matching the image in orthographic view

Most logos will appear satisfactory at this point in the modeling phase. However, in this case, since the 2D version was designed in an orthographic view, we discovered that it doesn't appear as pleasing in perspective view.

If you encounter this issue, all you have to do is adjust the model's rotations and scales to find a balance between orthographic and perspective views until you are satisfied with the result.

After some tweaking, this is the final result of our 3D model in perspective and orthographic view:

Final result of the logo in perspective view
Final result of the logo in orthographic view

Texturing using projection mapping

Now that we have our 3D model, we will begin texturing it using the projection mapping technique. This means we will project the 2D image directly onto our 3D model, ensuring optimal precision and results.

The first step is setting our viewport to Front Orthographic view. This ensures that when we project our 3D model into the UV map, it does so accurately. Now, we will enter Edit Mode and select the entire mesh.

Projecting the 3D mesh into our UV map

Now we can use the tool Project from View to begin tweaking the UVs of our 3D model and start the texturing phase.

Keep in mind that anything not selected prior to using the Project from View tool won't be projected onto our UV map. However, you can do this at any point during the texturing phase in case you forgot part of the mesh.

This is how it looks like after we projected our mesh onto the UV map:

UV map with the 2D logo

As you can see, it maintains the same shape and rotation from our viewport. Now, all we have to do is manually adjust our UVs to match the 2D image.

But before we begin this process, we will create a new material using the image as the base color so we can directly see what we are doing in our 3D model as we progress.

All we have to do now is select each part and edit it individually until it matches the 2D image. Here is an example of the top piece of our mesh when it's matching the background image.

Matching the 2D image in the UV Editor

All we did was scale the UVs for that piece in the Y-axis and manually move some vertices.

Our 3D model now closely resembles the 2D version, particularly in the front view. However, due to some overlapping faces in the UVs, adjustments are required. To fix this, we have to manually edit those faces and position them in the UV map where they align properly with the desired appearance.

Before tweaking overlapped faces
After tweaking overlapped faces

It might not appear aesthetically pleasing in the UV map, but the result in our 3D model matches exactly  what we desire. This is a common occurrence when using this method.

This is the final result achieved using the projection mapping technique. As you can see, it closely resembles the 2D version:

Final UVs result
Final texture result

Rigging & skinning

In this phase, we will focus on creating a simple rig for our model that will enable us to produce a looped animation.

Animated 2D logo

As you can observe in the 2D animation, our rig will need to perform different actions such as movement and rotation in the Z-axis, and also scaling the inner elements to 0 (pyramids and spheres) to hide them when the top and bottom pieces close togheter.

Additionally, we will require a parent bone for both of the spheres to achieve the orbiting effect.

It's crucial to have a clear understanding of what the animation will entail before placing the bones, as this will influence their functionality.

Rigging

First bone of the armature

The initial step is to create the armature, which will always consist of at least one bone. This first bone will spawn at the 3D cursor, pointing upwards.

In the armature, the wider part of the bone represents the base, while the narrower part influences the mesh, scaling and rotating it towards the base.

Now, all we need to do is go into Edit Mode and add the rest of the bones for each element:

  • One bone for each pyramid, with the base of the bones matching the base of the pyramids.
  • One bone for each sphere; the base placement is not as relevant, but it should be positioned somewhere inside de spheres.
  • A bone for the top piece, with the base positioned somewhere inside the piece.

All bones in place

After preparing the armature, we suggest renaming the bones to something easily identifiable. We will see the reason for this further on.

Next, add the "Armature" modifier to our logo and select the armature we just created to link it with our mesh.

Skinning

The only thing left is the skinning of the armature, where we assign a weight to each vertex, indicating which bone will affect them and to what extent.

To achieve this, we need to create one Vertex Group within the mesh for each bone of the armature. Every Vertex Group's name must match the name of the corresponding bone that influences it. This is why we strongly recommend renaming the bones to something easily identifiable.

Vertex groups matching bone's names.

Now, we will assign a weight of 1 to all the vertices in the element that the bone should affect (for example, the sphere). If we switch to pose mode and move the bone associated with that sphere, we will observe that it moves, rotates and scales the sphere properly.  Repeat this process for each bone/vertex group combination.

Parent bone for the spheres

The last bone we need to add will serve as a parent for both of the spheres' bones. This will enable us to animate the "orbiting" effect. To do so, we will select both of the child bones and move the 3D cursor to the selection (”Shift + S”), then press “Alt + A” to create a new bone at the 3D cursor location.

This ensures that the parent bone is positioned in the middle of the spheres' bones, allowing them to orbit properly.

To parent the bones, select both of the child bones and then select the parent bone last. Press “Ctrl + P” and choose “Parent with Offset”.

Animation

Now that the rig is fully functional for the needs of our animation, it's time to add some keyframes and make the magic happen!

Let's start by creating an “Action” that will store all of the animation's information. We can access the “Action Editor” by switching to the animation layout in the upper part of the viewport.

Animation layout

Now that you can see the Action Editor below, and there’s a button labeled "New Action", create a new action and name it according to your animation.

Now, we can finally begin animating. With the armature selected, enter Pose Mode and start adding keyframes using the shortcut "i". This will enable you to add a keyframe to the selected bone at the current active frame, and you can also choose the type of keyframe (scale, rotation, location,etc).

Switching to Dope Sheet

Before you start adding keyframes, we recommend switching the Action Editor to the Dope Sheet, as it will make the proccess more comfortable.

For our animation, we require the following movements:

  • Opening of the top and bottom pieces, as well as closing at the end of the loop.
  • Scaling of the pyramids and spheres to hide them when the logo is closed.
  • Orbiting of the parent bone for the spheres to rotate on the Z-axis (looped several times).

Action Editor with all the keyframes

Make sure that if you are creating a loop, the first and last frames of your animation are the same in terms of keyframes or how your logo looks. This will ensure that the transition between loops is seamless and smooth.

Conclusion

There are different methods and techniques for creating a 2D logo in 3D and animating it, but using Blender as described here is among the best and most accurate ways. The effectiveness of the method may vary depending on the complexity of your logo or animation, but this approach should cover almost all posibilities.

You can always combine multiple methods, customize them to your preferences, and develop a unique workflow, even incorporating different software tools simultaneously. Our goal was to share one of the most versatile workflows for this type of work.

See you in the metaverse! 👁

Final result
Blender
Hugo Serichol
Environment Artist

If you are looking for me, you can find me following the sun

Tutorial
How to import Decentraland SkyboxEditor into Unity
Tutorial
Doing a MANA transaction in a Decentraland scene
Tutorial
Canvas (2D UI) Manager in Decentraland