Wooden Cabinet
Introduction
Hello, my name is Cui Xiaoyu. I'm a Senior Level Artist from China, currently working at Tencent.
I have been working in 3D for 9 years, and I'm very happy to share my workflow with everyone this time.
Goals
My goal is to become more proficient in the use of photogrammetry technology and to create realistic props. When I saw this cabinet on the street, I noticed its material looked very natural, with obvious traces of wear and life, so I decided to scan it.
Software
- RealityCapture
- 3ds Max
- ZBrush
- Unreal Engine 5
Camera
- Canon 700D
Preparation
To get better scan data, I highly recommend using a high-resolution camera capable of taking pictures in .raw format.
This helps preserve the most information from the original picture, which is convenient for post-processing later. These pictures show what the cabinet originally looked like on the street.
Generating with RealityCapture
Import all the processed photos into RealityCapture.
By aligning the images and calculating the model, you can generate the following result:
Processing in ZBrush
When I export the high-poly model from RealityCapture, I often find that there are some noise issues and unclear structures in the model.
To address this, I import the model into ZBrush and polish it to make it look clearer and more complete.
Lowpoly
If your project uses Unreal Engine 5, you can directly generate models, UVs, and textures in RealityCapture and export these models into the engine.
Nanite can easily support millions of polygons. However, in this case, I used a traditional production process. I created the low-poly model in 3ds Max and manually retopologized it to get the low-poly version of the cabinet.
The reason for this approach was to better showcase the details I wanted to express. It also made it easier to unwrap the UVs later.
UVs & Baking
I unwrapped the UVs in 3ds Max and baked the normal map and AO map.
For the diffuse map, I baked the high-poly model with textures from RealityCapture.
Once this was done, I achieved the following result:
Rendering
For the final rendering, I chose an existing lighting environment from the Unreal Engine Starter Content called Advanced_Lighting.
I didn’t add any extra lighting, as it was sufficient to achieve the effect I wanted.