Marta Niemczynska, 3D Designer at Corporation Pop, writes about the process of recreating our studio as a 3D virtual environment in Unity 5…
Creating a realistic environment in 3D is always a challenge. There are many factors that affect the ‘realism’ of a given scene – lighting, texturing, mesh detail and scale are all equally important. However trying to recreate realism in a game engine is a whole different territory and presents many technical challenges due to performance limitations, such as the amount of geometry or texture sizes, further complicated by the fact that light and shaders don’t work the same way as they do in physically correct render engines like VRay, Octane or Arnold.
I decided to recreate Corporation Pop’s studio in Unity 5 as a side project and a great opportunity to test new features of Unity. The first phase of the project is to create the experience for desktop and browsers but the final version will be working with VR headsets. This will require further optimisation of both geometry and textures so for now I have focused mainly on recreating the studio as closely as possible, using my spare time in between our commercial projects.
The first step was recreating the plans of the studio which I could then transform into 3d walls. I used a mobile app, MagicPlan, which lets you draw plans simply by using your phone camera and placing corner points as you walk around the building. After calibrating, the app automatically measures the distances between the points and creates vector plans which can be imported into Cinema 4d, and extruded into walls.
Then comes the process of creating windows, doors, staircases, roof and figuring out how the geometry in the building works and taking a lof ot reference pictures to help during that process. I never before realised that the supporting beams I can see above my head every day have different sizes and are actually going through the walls to the other room and are placed in this exact position reflecting the shape of the roof. You start noticing more and more things like this and asking questions – where does this wall go? how do these part connect? – because you need to know that in order to recreate it in 3d space and feel realistic.
After I had the walls geometry in place and a roof above my head it was time to test it in Unity and add textures. I did some of the texturing using Allegorithmic Substance Designer. It was a new experience but I managed to create the most important textures – brick walls and wooden floor – which were used pretty much across all of the building and needed to be realistic, detailed and seamless. Personally I believe textures are probably the most important part in game engine based environments. Since we are limited by the amount of polygons we can use, we can’t use geometry to create detail, only good texturing can fool the eye and create detail where there is none. That’s where Substance Designer and Painter shine and allow very fast creation of complex texturing that will work well across various game engines.
That’s how the brick and wood textures look like in Substance Designer
I had a big empty space done, so it was time to start filling it up with objects. You don’t realise how many objects are in the room until you have to model them. One by one I started recreating the most important props. Some of them, like a tripod lamp, were fairly simple to make and texture since they consisted of primitive shapes.
Lamp model in Cinema 4d (left) and in Unity (right).
Some of the props used in the scene
Others, like our orange chesterfield sofas, took way longer since they are a very important part of the reception area and required much more detail. I decided to create a high poly version of one of them and use it to bake a detailed normal map which would then be used on a low poly version. I textured the sofa in Substance Painter which, simply put, lets you ‘paint’ the object using its built in materials and textures. It has a layer system just like Photoshop which comes in handy when dealing with complex surfaces made of materials with different properties. After I was done with texturing, I could easily export all the texture channels and use them in Unity.
Render of a high poly sofa in Cinema 4d
Low poly sofa textured in Substance Painter
The list of elements to create was long but I focused on creating only the most important ones to fill the empty space. After many tweaks to the materials in Unity, multiple light setups and a very long and frustrating journey of finding the right lightmapping settings, here’s what I ended up with.
And here’s the video recorded realtime inside Unity: https://vimeo.com/136915833
The project is still a work in progress and there is much more work to be done but it looks promising so far. The biggest challenge will be optimising the scene after adding even more props and second floor geometry. Baking lightmaps turned out to cause a lot of artifacts and keeping it under control is tricky but it is definitely worth the effort. There is nothing more satisfying than having a stroll in the environment created by you. I’ll post more updates when I add the second floor and fill the rooms with more objects.