https://cgifurniture.com/ Awesome article!
This is techno-sorcery!
Unite India is here: https://unity.com/event/unite-india-2019
Bastian Pastoors talked about his approach to artistically modified virtual environments. Nice take on lighting, materials and mesh design.
In London, I have been supporting the great environment team at Sony London Studio on VRWorlds. Before that, I had the pleasure of being a part (and sometimes the sole member) of the 3d art team at Happy Tuesday – a self-funded indie studio in Berlin for about 4 years. Our main project there was Hero Defense.
When I was looking for a new private project I came across this photo of an empty and slightly run down bay room that I had saved a very long time ago and decided to create something based on this – a reverse image search turned up nothing, so unfortunately, I can’t credit the original source. As the space in the photo already had a certain uneasiness to it and I wanted to add an interesting hero prop as the focal point in the center while staying in the real world instead of going for sci-fi or fantasy, a dentist chair seemed like a good fit.
No one feels comfortable at the dentist’s really.
To take a more interesting angle on this scene that is mostly going for eeriness and uncomfortableness in its subject matter, I thought it would be fun to clash it with a cartoony, casual, almost cute treatment to the models. This juxtaposition became the main theme for the piece. Initially, I planned to also do the texturing in a more toony/hand-painted look, but after some experimentation I decided the realistic materials were a fitting continuation for the overall appeal of the scene.
The first step when creating anything is always to go out – or in my case more often than not to google – and collect reference. I like using Pureref to collect and arrange my reference images because it allows me to very easily arrange, scale and crop my images without the overhead that this kind of ref sheet creation would have in Photoshop.
With most objects, like the chair for example, I prefer to not just use one specific object to recreate, but select a few with a similar appeal and basis in time and culture etc. This way I can first of all reality-check my preconceived notions of what this object I am creating actually looks like and find what these different examples have in common. Finding and taking note of the most important features to recognize an object is especially important if you want to create a stylized representation. You want to highlight the more iconic bits and downplay areas that conflict with your interpretation of the object and the attitude you want its shape to convey. It is a bit like drawing a caricature of someone in the way that you push and pull on the shapes to highlight what is already there and hinted at in the original.
The process itself for me is purely 3d and very traditional in the approach. I start with a very rough low poly blockout of the main masses by laying in primitives or drawing out shapes with the Pen tool.
When I am happy with the basic shape, I turn to looking at the references and refining the model and adding more detail while making sure not to hurt the readability and flow of the main forms.
I often use sub-d meshes as my high polys to later bake from, they allow me to easily define my shapes with just a few edges and let the pc do the hard work of turning them into nicely flowing forms. Since the goal is not to create perfect sub-d meshes, but to get surfaces that will be baked down to lowpoly meshes later, it is fine to be a bit more relaxed about “clean” topology and intersections etc. Especially, if you consider the size some of the details will have in the texture and how few pixel will be displaying a pinching that you can spend hours getting rid of.
This very liberal approach to the highpoly unfortunately means that I don’t have my almost finished lowpoly ready like I would with some other workflows. But in this case with the style I was going for here, this was a tradeoff I was willing to make.
I use Farfarer’s Vertex Normal Toolkit in Modo in which I can very conveniently work with the face weighted normals workflow using its Area Weighting feature – beveling the hard edges and tweaking the vertex normals to sit perpendicular to the main face instead of being averaged between it and the bevel.
Since this was just a personal for fun project without a deadline and budget, I had the luxury of just seeing were the scene would take me after the initial basic reference and idea of the space and the main focal point.
I recreated the room layout based on my reference and added and arranged my hero props – the chair, the sink and the lamp. I did this first layout with my blockout meshes in Modo before I had even decided that I would eventually move the scene into UE4 for the rendering. After I had created the lowpoly meshes and textures and a rough style for these elements, I started setting it all up in Unreal with materials and a first lighting pass.
Then I started filling in the surrounding areas with secondary props like the wooden floorboards and the cupboards and just layered smaller elements to add this extra bit of detail. Similar to the creation of a single asset, when filling in the space in the environment it is, in my opinion, important to create a structured hierarchy of importance for objects and to not just dump details everywhere, but create a rhythm of empty resting places for the viewer’s eyes and busier areas to explore.
I have built my texturing pipeline for this project around DDD. I decided import my lowpoly mesh and normal and AO maps that I baked in Modo and let 3DO take care of the other maps to easily have them how DDD expects. Using Quixel‘s materials as a base I layered them and changed the masking until I got to a look that fit in with the style I was going for: right in middle between stylization and realism. This meant going into every single material, in some cases combining layers of different materials and a lot of fine tuning in the masks.
The adjustments were mostly about lowering the texture intensity and finding a good scale to have a lot less noise in the material and rather opting for bolder, larger shapes. I saved these tweaked materials as presets for easy reuse of other assets. This was especially helpful with grime and dust. Reapplying these presets to my various props gave them the appearance of having aged in the same surroundings and for the same time, unifying the scene.
The walls started with my base meshes that I created to block out the space. I had this plan to use reduced high poly meshes with tiling textures, so I took them into zBrush to give them a quick and dirty sculpting pass, just converting my meshes into dynamesh and digging into them with a combination of clay tubes and trim dynamic. I didn’t add too much detail and didn’t take too much care since this sculpt really was just a step to get an interestingly shaped low poly mesh without having to carefully model it myself.
When I was happy with the sculpts, I crunched them down to a reasonable vertex count with decimation master and some manual cleanup of areas that got too artifacted from the reduction. I now had my wall building blocks. I used the Area Weighting again in the Vertex Normal Toolkit to get cleaner shading without the lowpoly look of hard edges and the destroyed areas muddying up shading of the flat areas of the wall.
I then created a vertex color blended material in UE4 – blending between the painted plaster and the concrete/brick. With this material I was able to add enough variation in the wall’s appearance by not only painting in the destroyed areas but also blending some damage into the rest of the wall, so that – together with the props and lighting – I could just mirror the same meshes over to reuse them on both sides.
For the tiling materials themselves I created sculpts in zBrush: some very subtle plaster, rougher concrete and a brick that I then build a brick wall out of in Modo to combine with the concrete. I then baked these in Modo again and used ddo to create textures out of them. Additionally, I baked height maps as well that I combined and tweaked a bit to get a mask to drive the blend material.
The rubble bits had a similar a approach as the walls, only that I did not take the detour through zBrush, but only used Modo’s noise falloff to create a few shapes that I then poly-crunched again and textured with the same tiling material as the walls.
Soft Skin and the White Painted Wood
I think I have to give most of the credit for the nice soft shading to UE4. I added a lot of reflection spheres around the scene to get more specific reflections for the individual objects. I think that these together with the screen space reflections really help to get a nice level of realism into how surfaces interact with light and their surroundings.
Additionally, on the cupboard for example, I think that the face weighted normals workflow really helps with giving you nice soft bevels without the broken gradient over flat faces look.
I had a close look at what the arch-vis-guys are doing and how they are tweaking their lightmap render settings to get great bounce light results for interior lighting, similar to what you get from offline renders.
The light setup I built up isn’t really that complex then in the end. It is just one strong directional light that is spilling in through the windows supported by Lightmass Portals as well as an HDRI skylight from a Marmoset Pano Pack. On top of that there are only the two point lights at the light bulbs, adding an extra touch of warmth and highlighting to the main area of the scene.
Overall it is a very reality driven lighting setup without additional fill lights or bouncers. Just letting the light that comes through the windows bounce around gives me a very soft and natural result. Here I also found it important to adjust the exposure level – for my actually very dark environment – instead of adding more lights to the scene, taking advantage of the hdr rendering pipeline.
For the cleanness and detail in the lighting, it probably also helped that I created a rather small and contained scene and was able to crank up the lightmap resolution more and place more reflection spheres then you would be able to afford in the production of a whole game.
Of course, I also added color correction on top of that with a custom Color Lookup Table that I created by taking a few screenshots of my lit scene into Photoshop and tweaking the final look there with a few adjustment layers.
Unfortunately, I can’t really say how much production time went into this, because the work on my personal projects is often spread out over longer periods of time with me trying out a few things here and there and taking longer breaks as well. So I never really took note of how long things took in this.
From a technical point of view, I don’t see any reason why it should not be possible to do a bigger project or a whole game in this style. You would probably have to reduce the number of reflection spheres and lightmap resolution a bit, but that shouldn’t break the visual aesthetic.