Caterpillar 16CM43 – Visualisation at the limit

Just a few MB away from the .fbx size limit, we were supposed to visualise a 2O,OOO horsepower engine. But how do you get such a huge thing into the pipeline?

Archive notice: This article was originally published on December 1, 2018. Links and embedded videos are preserved as part of the historical record.
Caterpillar commissioned New Communication with a pilot project to visualise various engines with the greatest possible level of detail. The engine / pilot project was the 16CM43, a 16-cylinder marine diesel engine and generator with the impressive dimensions of 12 metres long and 5 metres high and an output of around 20,000 HP. It is used, for example, to generate electricity in third world countries where there is no well-developed power grid. This means that these generators function like power stations there. As such a gene set (generator set) was recently delivered to Mali by Caterpillar, the first task was to create cut-out images for a press release in photorealistic quality.
As the core requirement included the preservation of all structural details, we had to come up with a workflow in advance to cope with the huge amount of data. To ensure that the data could also be used to create a sectional view, all parts had to be preserved. We relied on a mix of intelligent data management, useful software tools and, of course, our expertise.

The workplace

Due to safety regulations, data preparation had to be carried out on site at the customer’s premises – a workstation was created by the customer for this purpose. A hardware and software concept was developed with the customer in advance to enable this work to be carried out away from the agency.

Pre-production and software / hardware pipeline

The data set that was then delivered by Caterpillar was truly impressive. In terms of the complexity and quality of the data, we had never dealt with anything like it before – it was exported production data from the CAD programme Creo (a software used in large-scale industry to create machines or machine components), which contained all the structural details – from the smallest screw to the largest gear wheel, everything was included.
The software concept therefore included the Rhinoceros 3D programme as the first step, which was also the first hurdle. Rhino is a software programme (also) for industrial design that is excellent at handling very large files.

Rhino at work

The viewport display in Rhino was so slow that you could only open the file, but not navigate within it. After a 10 hour overnight export, a 3.7 Gbyte .fbx file was successfully written. It is interesting to note that the size limit for .fbx is currently 4 Gbyte.

Rhino at work

I was very worried about whether it would even be possible to open such amounts of data in Cinema 4D, and I was about to call the Maxon hotline and ask whether this was possible, but then the file was open after a short wait.
Unfortunately, the Cinema viewport was also unable to display the model. The enormous amount of objects was certainly one reason for this.

The wireframe: just under 4 GB

The object manager in Cinema 4D displayed continuous numbering from 0 to 300,000. The scrollbar had reached the smallest possible size. Many of the objects were sub-objects of individual components, so that radii, for example, were also exported individually.
And here is a first tip on what you can actually always do at this point:
delete all UV tags. The file is then many times smaller.

Sorting

These more than 300,000 objects had to be organised as well as possible. Of course, the most important thing was to organise and name the parts correctly and completely. I opted for a simple but effective workflow here and always selected a certain number of objects (5,000 is the maximum limit for objects to be selected in Cinema 4D) and copied them into a new document.
Here I could then organise and merge the parts – at the same time, this step also served to check the data. This also showed that the data was of exceptional quality: not a single part was broken or had holes. Anyone who deals with CAD data knows that this is very rarely the case.

Octane can switch back and forth between render modes in the Live Viewer. You should always keep an eye on the RAM consumption and temperature of the cards

The very friendly team from Caterpillar was always on hand with help and advice – thanks again at this point! In this way, we were able to ensure that everything was correct.

Software

At the time of production, the 19 release of Cinema 4D was still relatively new and I was able to test the improved polygon reducer in a production environment for the first time. This works exceptionally well even with complex CAD data. In this way, I was able to control the ever-growing model well.

Two models of highly complex parts (such as the intercooler) were then always stored as Xref: a high-poly version for close-ups and a mid-poly version for the long shot. I then thinned out the low-poly version even further by hand and deleted many polygons in the interior, which also saved a lot of memory.
I also worked extensively with Mograph clones, instances, render instances and arrays: basically everything that Cinema 4D has to offer for swapping, organising and managing. Arrays, for example, were very useful in places where a lot of nuts and bolts were arranged in a circle. I used Mograph Clones to duplicate almost all the engine components arranged in a row.

I then quickly added a few weld seams to the pipe system. You can do this very easily and quickly with a ring object – you then convert the ring object and can activate the “Crease” function using “Set point value”. You shouldn’t overdo it here, and of course you could also work with a displacement map, the result looks identical when viewed from a long shot

Caution: You have to be careful here, because Octane does not render clones that are already in a cloner and are stored as render instances. Corona and V-Ray, for example, can do this.
There were so many screws in the turbocharger cladding that I combined them into a single geometry. Cinema 4D is not very good at working with lots of objects, so this is another way.

I then quickly added a few weld seams to the pipe system. You can do this very easily and quickly with a ring object – you then convert the ring object and can activate the “crease” function using “Set point value”. You shouldn’t overdo it here, and of course you could also work with a displacement map, the result looks identical when viewed from a long shot

The file got better and better in the course of production, so that at the end of the preliminary work even a relatively small viewport map was able to display the engine complete with all components.

Renderings

Of course, not only the viewport display was optimised, but also the render pipeline. Rendering was to be carried out using the latest version 3.08 of Otoys Octane Render, and on the hardware side, the customer provided a Dell workstation with plenty of power.

[caption id="attachment_71360" align="alignnone" width="1600"] The render parameters in the Octane settings have an immediate effect on the Live Viewer

The fact is that you are always bound to the VRAM limit of the graphics card when using a GPU renderer. The eye of the needle, if you like, the 11 Gbyte that the customer’s 1080Ti brought with it, is of course a statement, but I constantly checked the size of the project, because without the organisational measures taken, it would otherwise not have been possible to realise the project with Octane and we would have had to switch to a CPU renderer, which we wanted to avoid at all costs.

Caterpillar orange in proof

The first tests with the complete geometry in the Live Viewer were really very impressive. It took a while to load the scene into RAM, but then you really had real-time feedback and you could check directly in the rendering whether everything was in the right place.

Back to practice

At this point, it was back to the actual task at hand: the task was to create cut-out images for the press release that could also be transferred to other engines in terms of perspective.

Inconspicuous, but important: the paint sample

First of all, however, a material specification was drawn up so that it was clear which material belonged to which component: steel, stainless steel, aluminium, cast steel, cast aluminium, rubber, plastic, copper, sheet metal and, of course, the specific Caterpillar colour, which was later adjusted by a proof printer at the agency. Perspectives were then defined in consultation with the very friendly Caterpillar team. These perspectives then formed the starting point for the rest of the production. Once the camera position and material list had been determined, the actual images were produced.

Texturing / rendering

For the lighting setup, I decided in favour of manual illumination with area lights and a large studio background, because with large area lights you get nice gradients on the surfaces, and some areas can be brightened up by using small area lights.

A shader was created for some geometry parts to imitate heat discolouration. This effect can be achieved wonderfully with the Dirt / Inverse AO by simply combining the AO with a colour gradient

A great function is the deactivation of “Visible on specular” in the light settings. This allows you to really emphasise specific areas without creating annoying flashes. The option of using HDRI Light Studio, which is often used in the agency for other projects, was also considered beforehand. However, as a 360-degree animation was also to be created from the clipping images, this option was cancelled because the light setups from Light Studio cannot be used for animations.

A screenshot of the node tree

The materials that were created were all relatively basic. However, I always try to work with correct IOR values, especially when it comes to metals. In the Octane version, which is the current one, you can achieve very nice looks. At the time of production, this update was not yet available, so I used Raphael Rau’s Ubershader, with which a very similar result can be achieved.

Ambient Occlusion, Reflection, Diffuse and a colour mask

Path Tracing was used for rendering. It would certainly have been possible to use Direct Light, but the speed of Octane means that the Path Tracer can always be used. If hot pixels or fireflies form in the rendering, you can counteract this with GI Clamp. The images were then all output in approx. 9,000 x 4,000 pixels with a few multipasses.

Post-production

Colour correction was a very important part of post-production. The team from Friedrichsort near Kiel sent us a paint sample, which we used to adjust the colours on the screen using the agency proof printer so that they came as close as possible to the paint sample.

How strongly you use the passes is a matter of personal taste and feeling, but here too: less is more. A simple ambient occlusion was rendered for the shadows. The standard Cinema 4D renderer was used for this, as the occlusion map looks a little better there

Selective colour corrections were then carried out in Photoshop using black and white and colour masks. For post-processing, it is definitely recommended to work with Multipasses, as you can get a lot out of the image without having to re-render it.

Lessons learnt

Unfortunately, Octane cannot render instances under certain circumstances, which CPU renderers such as V-Ray and Corona can do – this unfortunately made the organisation of the model a little more complicated, as these instances had to be bypassed in some places.

Conclusion

I was always amazed at how much you can optimise a highly complex CAD model without losing quality. It takes time, but it pays off in the end. And so to summarise: don’t be afraid of huge CAD data, anything is possible!