Chinese Tourist Boat

Prop Breakdown

Haining Cao


Haining Cao

Environment Artist


Hey everyone, I'm Haining Cao, an Environment Artist based in Los Angeles.
I've been working in the CG industry for about four years now.


Most of my previous projects have been on a larger scale, so I wanted to challenge myself by focusing on smaller details.
Plus, I’ve always wanted to incorporate more of my own culture into my work, which is why I chose to work on this boat.


  • Autodesk Maya for blocking in, UV mapping, and final assembly.
  • Zbrush for high poly sculpting.
  • Substance Painter for Texturing.
  • Marmoset Toolbag for Rendering.

References and Inspiration

The idea for this project actually came from some tourist boats I saw while working on a class project.

I thought they’d make a cool main feature on their own.


My reference board was a mix of personal photos and other artists’ work for inspiration. My primary reference is the photo in the top left corner.

But as I was modeling, I kept looking for other photos from different angles to fill up some of the empty spaces on the boat.



I started off with basic blocking in Maya, using a human model as a size reference to keep things realistic.


Then I moved to Zbrush for the detailed sculpting, focusing mainly on one side of the boat for efficiency.


I primarily utilized brushes like TrimSmoothBorder and MalletFast to create realistic edge-wear effects. Additionally, I incorporated a wood alpha pack sourced from Artstation to add intricate surface and end details.

To expedite the process and maintain consistency, I opted for tiling materials for the top of the boat and the floorboards, focusing mainly on integrating macro-level details.

UV and Baking

After sculpting, I decimated the parts and brought them back into Maya for modeling the low poly.

Then I used Quad Draw in Maya to create the low poly by drawing over the decimated high poly model.

After a couple of rounds of testing for the appropriate texture size, I decided to split the model into three UDIMs and grouped them accordingly in Maya.

Then I duplicated the UVed parts to finish rebuilding the rest of the boat to streamline the texturing process. I grouped them as render and duplicated the group as a placeholder group for texturing.

The next step was to assign a different material for each UDIM and the placeholder group for bringing into Substance Painter for baking and texturing.

Finally, I returned to Zbrush to merge and rename all high-poly components according to their low-poly counterparts.

Additionally, I applied polypaint based on poly groups to generate an ID map for baking purposes.


Baking within Substance Painter proved to be straightforward, largely utilizing default settings. The only adjustment I made was switching the match option from “Always” to “By Mesh Name” to prevent normal bleeding.

I particularly appreciated the enhancements made to Substance Painter’s baking tools, facilitating a seamless transition from baking directly into the texturing phase.


To ensure material consistency, my initial focus was on crafting the wood texture for the boat’s side.

Beginning with the foundational textures of the default Wood Walnut and Rotten Wood sourced from Adobe 3D assets, I employed various fill layers with custom masks.

Throughout this process, I aimed to keep the number of paint layers to a minimum, thereby maintaining coherence across the materials.


Once I liked the way it looked, I created a smart material for this wood to share across the materials. For the wood above the body, I used more Wood Walnut for a more polished, saturated look.


Then I went on to texture other smaller parts and added dirt to unify the whole asset.



With the texturing complete, I conducted some test renders in Marmoset, appreciating its real-time ray tracing capabilities, particularly in shadow rendering.

Employing the ACES tone mapping method enhanced the sharpness of shadows and highlights, contributing to the overall visual quality of the renders.


After completing the initial phase, I shared screenshots with my friends and former instructor for feedback.

I owe a special thanks to my friends and Jon Arellano from Gnomon for their ongoing support and valuable insights.

Their feedback highlighted that the boat appeared somewhat sparse, prompting me to enhance its visual appeal by incorporating additional decorations.
Utilizing a single tiling texture for all ropes and introducing new assets on a separate UDIM, I addressed this feedback to enrich the overall composition.