3D Artists Narcis Calin and Emil Rasmussen shared a breakdown of their Undead Asylum CGI Cinematic, showed us their workflow, and explained the rendering process in V-Ray.
In case you missed it
You may find these articles interesting
Hello, we are two 3D Artists from Spain and Denmark Narcis Calin and Emil Rasmussen. We are happy to break down the last project we've been working on together. It is a CGI cinematic fanart of one of the most iconic games: Dark Souls, specifically the tutorial area of it. We spent more than 4 months working on this.
Starting the Project
We first needed to gather many reference images both from the game and from real life. For the references, the conceptboard.com website was used.
After that, we started blocking out the scene by using basic shapes such as planes, cubes, and cylinders. When the blocking was finished, a base lighting was made to get an idea of the composition and general look of the scene, then a previz animation was made from the viewport.
Then the next step was creating a KitBash so we could dress the scene. First, we made low poly bricks, pillars, arches, etc and we unwrapped them before sculpting. Right after that, we started grouping the low poly assets by type and size. When we had everything laid out we started sculpting the assets and exporting a high-poly mesh and a low-poly decimated mesh. The main workflow for these assets was:
- Blocking base shape
When all the assets were ready, we started adding them to the scene, replacing the placeholders.
Then we separated the scene by walls and begun to make the UDIMS of each wall since all the models were already unwrapped. RizomUV was used for the UDIMS.
The next step was texturing. All the texturing was done inside Substance Painter. The first thing to do was making flexible Smart Materials so we could just apply them later on in the models and start tweaking values. The main Smart Materials were the brick wall, stone, concrete, moss, soil, snow, and floor tiles. Those smart materials were made with the intention to be flexible and easy to tweak for the individual 3D models. A way to make the texturing look less procedural is to paint leaks and unique decals manually or by using decals.
After the texturing was done, the dressing phase started. We rendered 3 different frames of each camera and starting adding auto-feedback. Again, conceptboard was used.
This was one of the longest stages because it was the part where we started polishing the scene and trying to make the scene the best as possible before the deadline. The foliage and small debris were scattered using Forest Pack. Stuff like big bricks that have fallen off the walls was simulated so they could be placed in a more natural and easy way. Big piles of scanned debris were placed manually to give more realism to the scene.
For some shots where the camera was really close to an asset, we had to replace those assets with higher poly so they could look fine. Some parts of the scene needed some extra texture detail and we added V-Ray dirt so the different pieces could blend better in between them.
The final stage was post-processing. All the post work was done in After Effects. We rendered out different render elements such as Z-Depth, Cryptomatte, Atmosphere, Specular, etc. Z-Depth was used for a mist effect while Cryptomatte was useful to mask certain elements of the cinematic. An atmosphere pass was rendered in GPU so we could get some God Rays for the interior shots and it was comped into the video. After that, we made color grading. The feeling we wanted to give with the color grading was like if you were in a dying world, so cold and desaturated tones were used.
The final step was making sound design. Some noticeable details are the sound of the bonfire, which was from the original game. In the exterior shots, you can hear a stronger wind than the one in the interior. We tried to give emotions of loneliness by using a low cold wind for the interior shots.
In order to render the project on our humble machines, we had to do a ton of optimizations. First, we had to reduce the memory usage, fortunately, V-Ray offers many options to do so. We made sure to convert every texture into multi-tile EXR's and loaded them with a V-Ray bitmap.
This way they will work as mipmaps inside V-Ray, and V-Ray can choose what texture resolution is needed for any given object. Objects that are far away, off-screen, or just small won't need 8k texture so V-Ray will just pick a much lower resolution for those objects and save us some memory.
Another thing we did was converting most of the geo to V-Ray proxies. Proxies can be loaded/unloaded as the renderbuckets need them, saving some memory, furthermore for large objects V-ray can export the proxies in a voxelgrid, and thereby only partially loading some of the large objects instead of the whole thing when buckets need it.
We also needed to manage our render times. We lowered our render times by limiting the amount of reflection and refraction bounces as low as possible without any noticeable quality loss. We also used Neat denoiser to clean the renders, and with V-ray's blue noise sampling, we were able to lower the samples quite a lot while having only a subtle noise level.
Neat Denoiser took care of this subtle noise with no problems.
We used PhoenixFD to simulate the bonfire and torches. When it comes to simulation, I feel like it's a lot of trial and error and testing parameters until you get the look you desire, of course, it helps to have an understanding of what the parameters actually do.
For the bonfire, I unwrapped the emitter object and painted an emitter map for it. It's key for the natural distribution of the fire, I also animated a noise on top of the emitter map to make it a bit more dynamic.
After I finished the simulation, it still looked a bit too chaotic for my taste, so I used resimulation with the velocity channel to retime the fire and make it a bit slower and calmer. For fire shading, I used a preset by Hammer Chen and tweaked it a bit to my liking.
You may find these articles interesting