I wanted to see if I could turn a 2D hand painted fairy door into a 3D model using a method I discovered how to do last month.
This method requires some basic knowledge of using 2D graphics programs, 3D programs such as Blender and 3D Coat and knowing a little about UV mapping. I’m not going to go into the technical details of doing all this but information about it is freely available on the internet. Most of the programs in this article are available for free, but 3D Coat is a paid software. The amateur licence would be fine for this. I own the professional version of the software. There may be ways to do the step in 3D Coat with Blender or other software by using height map displacement methods to make a 3D mesh.
First I designed my fairy door by looking at some examples for inspiration and then making some sketches. This stage can take longer for some things, but for the purposes of this project I wanted to get it done within a day and I had a clear idea in my mind of what I wanted so I only did 2 variation ideas and just chose one of them.
After I had chosen the design to work on I developed a clean line drawing using Clip Studio Paint.
I made my image 2048 by 2048 pixels big. This is a 2K texture size. After the line drawing was completed I coloured it in and painted details and textures.
Painting in basic ambient occlusion for edge shadows and lightning where areas are supposed to be raised is a good idea for the next step. You can use any digital painting/art software or even draw it traditionally of course. I used Krita for the final Illustration but I didn’t record the process. Here is the final image.
The main requirement was to have a simple closed outline around the design so that I could easily separate it from the background on a transparent layer.
I then exported the image as a PNG with a clean outline and a transparent background. This is the diffuse texture image for the 3D model. This was then loaded into a program called Laigter which generates normal maps for dynamic lighting effects in game engines. I exported the normal map image. You can also generate other texture map types with this program if you like. At the time of writing this Laigter does not yet generate height or depth maps for 2D images but it is in the works. If I did it again I would probably try to get the door handle a bit more raised.
Next I used a program called Awesome Bump to generate a height map from the normal map I exported from Laigter for my image.
This height map was then cleaned up by making the background around the clean outline of the image solid black using Affinity Photo. Again any graphics editing software would be fine for doing this. I exported it as a jpeg.
It is also useful to make a silhouette image for your fairy door (solid black shape with a transparent background) and export it as a PNG file.
I resized the diffuse texture map, normal texture map, height texture map and the silhouette image to 1024 by 1024 PX. I found that if I tried to do the next step with the 2K texture it took far too long on my computer and the resulting 3D mesh was huge. 1024 px or possibly smaller is fine for this.
I found from my previous experiments that the easiest way to make a 3D model with this method was to load the height map and silhouette image into a program called 3D Coat using its import image to 3D mesh tool.
The resulting mesh was then exported as an OBJ. file and checked for non-manifold errors in Blender. There is an add-on that comes with Blender for fixing non-manifold errors in 3D meshes called 3D Print Toolbox.
After doing that I exported the mesh as an OBJ. from Blender and used a program called Instant Meshes to retopologize the mesh quickly which is useful for reducing the polygon count so that UV mapping is possible and rendering times are faster. If you don’t do this your mesh will look like this and be pretty useless for UV mapping:
The imported mesh was rotated on the X axis by 90 degrees so that the fairy door is standing up and resized before I applied the scale and rotation (CTRL A- rotation and scale).
I did a project from view UV map on the model having the viewport in the front orthogonal view by pressing the number 1 on the numpad first. I’m not going to go into the technical details of doing this but then I assigned the image textures to the 3D model with the node editor. For some reason I had to set the normal map to world space to reduce artifacts on the model. There may be a reason for this I didn’t check for, if I figure it out I will update this article.
Using the normal map texture creates the illusion of more surface detail on the low resolution mesh. If you use the multi-resolution modifier and subdivide it a few times in Blender as well this will also smooth out your mesh on the rendered image.
Things I could have done would have been to use the retopologized mesh as a base mesh for further sculpting but for the purposes of this article I will end it here. I could also have drawn the different elements of the door such as the hinges, handle, planks, stones etc… seperately and made them into 3D objects to get a more 3D look. As to why you would even want to do all this I will leave that to your own imagination but I have a few ideas 😉
Thanks for reading!