Diary Part III: Difficulties and Challenges

In this part, I would like to tell about some of the challenges and difficulties we faced during creating this asset pack. This diary won’t be complete without telling a bit about it. I hope you see them as milestones of a learning curve as I did.

Iterations

Thanks to Hack N Plan I tracked quite well how much time I spent on each task. It turned out, I spent way more time on the first phase than I planned. This was because I wanted to make sure everything will be set before I move on to finalizing the modular parts. The cycle was to model, export, build, and if there was a problem, move back to Blender and remodel that part. Making the stairs had more than 3 iteration cycles before I even get to highpoly modelling and normal baking. The elegantly curved form was not really good for vertex snapping. The railings had gaps, but I didn’t want to give up on separate railing parts, for the sake of reusablility. The rectangular based columns were too small, so I made another set of bigger columns.

Columns in various shapes and sizes help create variation in the environment

Seamless Parts

Creating the walls and floors and make them tile seamless was less of a challenge than I thought. However the small stairs (steps) needed better planning, because the individual bricks had to be seamless in every direction, and the floor pieces need to be seamless with the basic floor too. I had to reshape these meshes a few times until I was satisfied with the result.

An early view in Unity editor of the tileable steps with placeholder textures

Shader shenanigans

Making the leaded glass windows – and making it look like it is leaded glass was one of the most memorable challenges. After creating the model and textures (together with alpha masks for the lead parts) I dropped it into Unity. I got a friendly feedback on how the glass should refract light and create a distortion effect. First I used a built-in glass shader, but it only had base color and normal inputs, and I needed the metal parts to be non-transparent and metallic. We didn’t quite laid our hands on custom shader creation before, so we moved to Amplify Shaders to solve this. I am still new to this whole shader thing, but the result was much better than the first time. After this I had to move on with the rest of the package, and this whole glass shader issue was laid apart for more than a month. While assembling the Demo Scene, we got to it eventually again, and Adam offered his help with Amplify to solve the issue. Seems like a new eye can make all the difference when working on such a big project.

Cleaning up & Bloopers

When having a big pack with more than 400 prefabs, it can quickly grow out of hand with all the variations, parts, bits and pieces to stay organized. We went through multiple times on all of the folders, meshes and prefabs, so future users of the pack won’t have any trouble while building a level. This was the phase in which we found other issues too, such as inconsistent prefab naming unnecessary large textures, unused materials and duplicate meshes.

One of our favourite happy accident happened during the scripting of the doors. We made all drawers, doors, and cabinets interactive with these scripts, which use the pivot and axis of the object to rotate them accordingly. In this case, something got messed up and this door opened in a way we both were laughing in tears for a while:

So many prefabs to build from!

Coming Soon to Asset Store - Dark Fantasy Kit!

The last, but not least task with any Asset Store pack is to create nice presentation of the contents. With this pack, we built a few demo environments and highlighted the pack’s strong sides, showing its best within Unity. We refined the renders with the latest post process stack, and besides the screenshots, we will release videos and downloadable, playable demos too. Depending on the Asset Store’s review process, the pack will be available in the store within about 3 weeks.

Thank you for reading this blog post, and feel free to share your insights in the Unity Forum.

Diary Part II: Dark Fantasy Environment and Props pack

In this blogpost, I would like to share my personal experience, and give insight on my modelling and texturing workflow.

Phase I - Concepting and sketching

After all the planning was done, I started to work on the prototypes. I quickly sketched a few of every type of items in Blender, using only material colors and rough shapes, combined with lots of Mirroring and Array modifiers; I also used beveled Curves where it was needed to achieve complex curvy forms. I figured out scale, main forms of the models, and tried out modularity in Unity. I also created a few basic materials, such as stone, brick wall, wrought iron, and used some pre-made materials too.

Phase II: Base Assets Modeling and Texturing

This phase was, in my opinion, the most time-consuming task, and along the way I learned a lot about productivity, flexibility, and importance of feedback. I made some detours and backtracking and had to reconsider some conceptual flaws. As it is with most production workflows, gradual iteration led me to refine my skills and I have to admit it is still visible – at least, for me – in the assets quality. Here are some early images of the first „pre-alpha” passes in Unity, where I tested modularity:

Testing walls, and stair tiles modularity in Unity

The modelling workflow

I usually use Box modelling, which means I create a model from basic shapes (boxes, cylinders, spheres etc.) and refine and detail them until I get the form I want. I also like to use beveled Curves to build elegantly curved, or organic models. I often use Cloth simulation in case of draping fabrics. One of my favorites was creating the pillows, which I took from a tutorial, basically inflated the highpoly mesh with a force field. The female sculpture modelling started with a Makehuman basemesh, decimated, her hair was formed of beveled custom Curves, and her dress with Cloth simulation.

Modeling stylized hair with a custom beveled Bezier Curve

Texturing

When I have both the high poly and low poly meshes, I create the UV layouts. If the model has smaller parts, like drawers, I move those away from the main mesh so they won’t interfere with each other when baking maps. I do the normal map, curvature, ambient occlusion (etc) bakes in Blender or in Substance. I also make a color coded version of the mesh, and create a color ID to be used in Substance.

I check face normals, and correct them with Autosmooth or Weight Normals tool if needed. I export the mesh (or meshes, if they share an atlas). If the mesh is complex, such as the ornamented fences, I also prepare a simple form to be used as a LOD later. Then I move on to an image editing software to create masks and ornament alphas if needed.

Below you can see that I created details for this wardrobe from individual Arrayed mesh shapes. After normal map baking, the result was nearly the same as if I used hand-painted alphas to generate the detail normals in Substance. Making the highpoly details can be more time consuming than painting the alphas, and normal map baking settings can be different for each separate part I do,  and the resulting normal maps sometimes need manual correction, which I think is a bad practice. To be honest, I encountered this same problem multiple times while baking very small details, until I gave up and decided to paint alphas and generate normals procedurally at the later models.   Of course, these furniture models are not for architectural visualization projects, which would need a higher level of detail.

Creating Materials

Creating textures from scratch digitally is a very rewarding task, even if you do not excel in traditional art. Luckily Substance Designer is the perfect tool for this. I constantly try out new node setups, watch highly skilled material artist’s tutorials and techniques. In some cases I take the easier path and simply use a modded version of the built-in materials, or turn to an online material library. While using a material as a reference, you can get a lot of information out of the previews, and there are also options to generate a seamless texture from a single colored picture.

I followed a well-traveled path of PBR material authoring, creating Base color (=Albedo), Normal, Roughness, and Metallic maps in Substance. I also experimented with Height maps, both within Substance and Unity, but I found that Unity’s built-in Tessellation shader is not very good when it comes to buildings, and it is more optimized to be used with Terrain. So I ditched the idea and worked more on the base material. If I can move forward with my (currently limited) Shader knowledge, I will try to find a better solution for wall surface variations. Until then, normal maps and cornerstones will do the trick hopefully.

Creating Variation

With Substance it is very easy to create more variations to a material in a non-destructive way. With the covered crates, I made three graphs for this material – one for the wooden parts, one for the fabric, and one where I merged those two and had the variation options exposed. Now I can adjust the base color, detail color, and any other setting I exposed in my main graph. This keeps the work organized: instead of a huge tangled graph I have compact, customizable sub-graphs.

I also created a custom node which helped me merge the Roughness (inverted Smoothness), Metallic and Ambient Occlusion maps into one RGB image, as Unity’s Standard shader uses it. I really like the idea to use the channels of an RGB image instead having 2-3 grayscale images.

In the next post, I would like to tell you about what challenges and difficulties I faced, and how I solved them while creating this pack.

About the Author

Dotti Hegedüs

Dotti is co-founder and 3D Artist in Runemark Studio since 2015. She specializes in environment and props modelling in various styles.

170+ Free PBR Materials

Recently encountered with Struffel Production on Patreon. He is creating PBR materials. The best part is that you can download these for free from his website. There are an insane amount of PBR mats: 170+ and its growing.

All of the materials on the website are under the CC0 License. This means you can use them in whatever project you want to use (even redistribute with your model), and you don’t have to give credit to the author.

The website and the work are funded through Patreon