11 September 2021

Fire Hydrants Photogrammetry – Prop Breakdown – Nikita Hrushevskyi

1

Hello there! My name is Nikita Hrushevskyi (https://www.artstation.com/offtime) and I’m currently working as a Model Artist at Ubisoft Toronto.
I’m not a professional scan artist so I definitely can’t say that my workflow is the best way to go but I can share my overall process with you. I’m taking my last “Fire Hydrants Photogrammetry” project (https://www.artstation.com/artwork/0nG0Ne) as an example.

 

If you want to really lvl up your scanning skills, check out these awesome guys and their’s guides:
(Grzegorz Baran) https://www.artstation.com/artwork/K0PYG and (Sébastien Van Elverdinghe) https://www.artstation.com/artwork/q2WWR

1

What goals did you have in mind when making the prop (what did you want to achieve)

Details and textures are the most interesting parts of photogrammetry for me. You can always try to guess the history of an object, you can see and analyze how it was changing through the times, etc.
That always helps you as an artist, especially if you’re working on your own hand-crafted textures and materials.
So my main goal with this type of project is not to model but rather catch the details, history and interesting spots of an object.

What software did you use?

For all of my current scans, I’m using Reality Capture as the main photogrammetry software. I’m creating then my low poly, UV’s and LOD’s in 3ds Max. Baking is done in Marmoset Toolbag as well as the final presentation. Additional tweaks and textures are done in Photoshop by hand. Also, I can use Lightroom for photos calibration and additionally but not mandatory Substance Designer for quick AO cancellation.

References/Inspiration

So my main source of references and inspiration was actually Toronto city. It has a lot of cool street props and assets to scan and I wanted to give it a shot. I’m always trying to find something interesting when walking so I can then return to these spots and scan some stuff.

Planning

It’s not a secret that the weather is always the most difficult subject in scanning. You literally don’t have any influence on it and you always need to think ahead about it. You can’t scan in direct sun, you also can’t do this when it’s too dark or rainy outside. So you definitely need to wait and I’d say even hunt for good weather conditions. Ideally, you need to avoid any shadow information for the best and accurate results in your albedo map.

It’s not always possible but choose wisely what to scan and how you’ll be dealing with later texture tweaks in case if something is in shadows etc. So I’d say that a bright but cloudy day is probably your best friend.

In this case, the lighting would be consistent across the area and you’ll have less pain to deal with later. Also if you can, bring a color checker. In my case, I was calibrating all the whites and colors with my eye but I definitely don’t recommend doing so. Even if I think that my albedo map is accurate for a first glimpse – most likely it is not. We can’t calibrate it on 100% with just our eyes. So if you need 100% PBR values – use a color checker, if not – you can try to bring some artistic touch to it with your eyes.

Shooting\Capturing Images

My setup for those scans was pretty simple. I’ve used my Canon EOS 70D + EF 20mm f/2.8 USM Lens and just my hands. Tripod or monopod will definitely help you with more sharp and stabilized images. But this time I didn’t use it at all. Since I was capturing not very reflective surfaces there was no need for me to use polarizing filters. But it’s a good idea to have one with you on the capturing stage.
I was lucky enough to catch few cloudy days near my place so I went to do some shooting.

2

Camera Settings & info

I think there is no point to talk about my specific camera settings because they’re different for each scenario. But keep in mind that there are few rules and some good practices to count in:

– Every shot should cover at least 40-45% from a previous one.

– Shoot carefully and slowly, no rush here. Choose few main angles and go in every direction or even 360 around your object if possible.

– The more images you shoot the better results you can get. Don’t hesitate to capture a lot of images even for small objects. Sometimes some photos can be noisy or blurred and the next one could possibly be better and cover the previous one. It’s like a “fuel” for photogrammetry software. The more fuel – the better results it can deliver for you.

– Switch from auto to manual mode so you can have control over all settings.

– Share the same settings setup across all your images (for one particular capture).

– Ideally use a lens with no zoom. Some additional work would be needed after as every image could have different zoom/perspective distortion.

– Use autofocus. I can’t imagine any type of scenario when you’ll need to have it set to manual with photogrammetry.

– Use low ISO. You should avoid high ISO values as they can quickly turn your images into a noisy mess. We don’t need any noise in our textures.

– Image stabilization on auto mode. That’s a good practice especially in my case when I haven’t used any tripod or monopod.

– Aperture or F-Stop. According to (Grzegorz Baran) https://www.artstation.com/artwork/K0PYG guide it is a good practice to have it between 8-16. In my case, 8-12 worked best for me. It depends on your lens.

– No overexposed or underexposed images.

– Try to play with settings. There is no defined way to follow. Remember that we are artists and we need to go through many trials and errors before we achieve our desired results.

 

The image below: Example of camera angles and 40-45% cover of each previous image.

3

Preparing images for reconstruction

After I’ve got all the shots and angles I’m ready to get back home and start preparing them for later reconstruction inside Reality Capture. A good practice is to remove the camera lens distortion effect and some color correction. I’m using Lightroom for this but it can be done in other software of your choice as well.

The image below: In Lightroom, it is choosing my camera lens correction profile by default.

4

I’m copying my correction settings from one image and pasting them to all. Since all my images were in RAW format, which is not suitable for Reality Capture, I’ll need to export everything in JPG now. After it’s done we can continue our process in Reality Capture.

The image below: Lens correction gif on and off example

5

Reconstruction and High Poly creation

Now it’s time to start a reconstruction process. There are a bunch of in-depth tutorials on the web which cover pretty much everything you need to know about Reality Capture. But I’ll cover my basic process here.
1. First things first I’m importing all my corrected JPG images into RC. I’ll just click the “Align Images” button and it does everything for me. This step means that all of the camera angles are aligning at their own angles just how they were in real life. You can now see quickly generated and rough “points cloud”. It gives you a preview of how it will look.

6

Second step involves the actual reconstruction process. But first I always trying to set rotation and reconstruction regions as I need. Just for the sake of easy work in the future with this asset. Always try out some settings and test them with “Preview” mode.

7

Third step, after everything is set up correctly press the “Normal Detail” or “High Detail” buttons. Usually “Normal Detail” mode already gives you pretty great results and sometimes there is no need to wait another 2-3 hours for the “High Detail” process since there might be no big difference between them. For my hydrants, I wanted the max detail possible so I’ve chosen the “High Detail” option but I’ve also tested them on a “Normal Detail” before.

8

Fourth step, then I’m happy with my reconstructed results I can now proceed to the next stage of texturing. This process is done pretty much automatically. You just need to choose the best settings and press on “Texture” button.

9

The fifth step, after texturing stage is complete we can say that the whole reconstruction process is actually done. Now I’m just exporting it as FBX with vertex colors ON. Since the color information is stored directly in each vertex and not in pixels on the texture map I always use the vertex colors option and it gets me the best quality and sharp details.

The final last step is very optional and everyone is doing it in a different way. Someone is using ZBrush for it or other tools. I prefer doing it inside RC. I’m talking about an additional “simplified” model. I’m taking my high res model and processing it through “Simplify Tool”. This process gives me another model but this time it’s very reduced in terms of triangles count. I’m reducing from over 50mil to 450k tris just so I can bring it to 3ds Max and work without any freezes and crashes. This is needed for my next step which is creating a low poly asset.

10

Creating low poly

I’ve could go with simplify tool in RC or bring this asset into ZBrush to decimate and remesh but I wanted to have more control over the geo and create my low poly from scratch with less amount of tris. This process is not complicated and is pretty much straightforward since the hydrant is based on few cylinders and some rectangles.

11

And here is my final clean low poly. 2412 tris which is pretty low for today’s standards. I can now proceed to UV’s and baking.

12

UV’s and baking

There is nothing complicated about this topic, just a basic UV and baking process. I prefer doing everything manually, even the packing process. For sure it’s possible to pack those UV’s even better but since I was doing this for myself I think it’s pretty good at this stage. So I have only 2 recommendations here. Remember to fill out as much space as you can because we count on every pixel for our textures. Also, don’t forget about texel density. It must be the same across the whole asset.

13

Now it’s time for some baking! I’ve used Marmoset Toolbag for this part since it gives me more visibility on how the process is going and I can quickly tweak things on the fly. I’ve imported my high poly and low poly. Organized everything into bake folders and choose “normal, albedo, ao” as my target map outputs. Baking using a cage is pretty simple. You can adjust and even paint the cage and check if there are any “blank spots” on the baked asset. In my case, everything baked out pretty smoothly so there were no workarounds done here.

14

Baked out asset directly in Marmoset Toolbag. As you can see the results are pretty much identical and it’s awesome. But there is still some work to be done with textures.

15

Texturing and polishing the asset look

Sometimes it’s really hard to catch every little corner of your object and this can bring some “ugly” spots. But luckily it’s a pretty easy fix that can be done inside Photoshop with a simple clone stamp and other tools. For sure it’s one more additional manual step but if I want my asset to look good I can’t leave it as is. This also is possible to fix inside Substance Painter as well but I personally prefer Photoshop for such things.

16

After I repeat this procedure for each map it’s ready for final tweaks and roughness map creation.

My albedo map needed some additional adjustments. In some spots, it was too dark because of a natural ambient occlusion. I’ve brought it into Substance Designer and processed it through a simple AO cancellation node. Nothing special here. Just be careful and try not to “wash out” your albedo map.
Now it’s time to create the final map, roughness. I’ve used Photoshop here as well. This particular hydrant wasn’t really glossy but rather matte painted. Rust spots obviously can’t be glossy as well. The only slightly glossy parts were painted with black paint. Some manual work with many retakes and I call it’s done.

19

Creating LOD’s

This step was also optional but I wanted to go a classic way and create a fully game-ready asset. I’ve decided to not use Simplygon here or any other auto-generating tool because I wanted to have full control over the asset silhouette and each LOD’s geo. For sure it wasn’t done in few clicks but in general, it didn’t take me too long. I’ve tried to reduce at least 40-50% on each LOD and I’m pretty happy with these results:

20

Presentation and final rendering

There are many tutorials out there about different approaches for rendering final assets. I always try to experiment and not stick with only one setup. I’ve tested few different angles with different lighting and here are my results. I’ve also added some grass and asphalt decal from Megascans library just to add a bit more life to my renders.

21

Conclusion

This was great practice for me as a personal project. I’ll definitely try to do some more in the future. Even such small assets could be taught you something new and bring you some fun while creating them!
Thank you for taking some time and read through this article. Hope this would be helpful for someone. In case of any questions feel free to drop me a message on my Artstation!

 

Thanks to Nikita for allowing us to have such an in-depth look at his process. If you liked this prop breakdown and want to see more like it from other inspiring artist’s make sure to follow us on:

https://www.artstation.com/gamesartist

https://www.instagram.com/gamesartistuk/