logo80lv
Articlesclick_arrow
Research
Talentsclick_arrow
Events
Workshops
Aboutclick_arrow
profile_loginLogIn

Breakdown: Reimagining Joker's Clown Agency Office In 3D

Jihak Jung walked us through his interpretation of Ha-Ha's clown-hire office from Joker (2019) as a cinematic environment, focusing on texturing and lighting workflows to enhance storytelling through space and mood.

Introduction

Hello, my name is Jihak Jung, a 3D Environment Artist based in Korea. I started my career in the architecture field, working as both a site supervisor and a designer. After transitioning into architectural visualization, I was introduced to Unreal Engine and naturally became interested in game environment art, which I had always loved since childhood.

I studied game environment art at a private training academy and filled in the gaps through self-study. While I haven't worked on commercial game projects yet, I participated in the LEGOLAND Korea resort proposal video production, which was eventually selected as a finalist. This experience helped me understand how to deliver an immersive environment in a collaborative, fast-paced setting.

The HaHa Agency

My portfolio project, HaHa's Agency, was inspired by the film Joker (2019), particularly the office where Arthur Fleck works. I was drawn to its striking use of lighting and color, as well as the layered emotional atmosphere of the space.

Rather than focusing on visual beauty alone, I chose this theme because it allowed me to explore and demonstrate a broad range of environment art skills, from hard surface and organic modeling to vintage material expression and mood-driven storytelling.

It was a great opportunity to naturally incorporate multiple techniques such as prop creation, lighting setup, material variation, and scene composition. To build the scene, I collected a wide range of references from the film, including still frames and behind-the-scenes materials. Instead of recreating a specific shot, I interpreted the space with my own layout while staying true to the emotional tone of the original.

Blockout

For scene planning, I started with blockout modeling in 3ds Max based on collected film references. My background in architecture helped me approach the layout like a blueprint, building walls and laying out major elements such as floors, ceilings, and key props.

Each object was clearly named for easy organization, and I later brought these dummies into Unreal Engine for scene assembly.

Modeling

My modeling workflow began in 3ds Max, followed by sculpting in ZBrush for fine details, especially for areas difficult to express in Substance 3D Painter.  

I created low-poly models mainly in 3ds Max, and for objects that required more control, I used TopoGun. UVs were unwrapped in RizomUV, and for texturing, I primarily used Substance 3D Painter, supplemented with Substance 3D Designer and 3D Sampler where procedural support was needed.

The Character

The character was created using MetaHuman Creator, and the clothing was created after setting the pose using the Control Rig in the Cinematic Sequencer.

After posing, I baked the animation sequence and exported it.

To apply the baked pose, I placed the skeletal mesh located in Content > Metahuman > Common > Common into the scene, changed the Animation Mode in the Details panel to Use Animation Asset, and assigned the baked animation to Anim to Play.

This way, the mesh reflects the exact pose. Then, I selected the posed skeletal mesh and converted it to a static mesh using the Convert to Static Mesh option from the Actor menu.

I imported the static mesh into Marvelous Designer and created the clothing based on the fixed pose. The clothing was referenced from the Joker's worn-out, stretched, and dirty outfit. I then brought it into ZBrush to add detailed wrinkles and crumpled forms, and finally textured it in Substance 3D Painter.

To streamline the texturing process, I built a reusable library of Smart Materials. Instead of generic templates, I created customized Smart Materials tailored to various surface qualities, such as aged plastic with noise, polished plastic, stained metals, and different types of wood grain. This allowed me to maintain consistency while accelerating iteration during texturing.

Retopology

For retopology, I used either 3ds Max or TopoGun, depending on the object. If the model had more organic shapes, such as clothing, sofas, or dolls, I preferred using TopoGun for more precise control.

For UV unwrapping, I primarily worked in RizomUV. Rather than relying on automatic packing, I manually arranged the UVs to make more efficient use of the texture space. This required a bit more time, but it allowed me to optimize texel density and maintain consistency across assets.

Texturing

I begin by collecting as many references as possible for the object or theme. If it's something mechanical or assembled, I study how the parts fit together, often watching YouTube videos, and categorize references by material and component. Understanding how the object is used helps identify where natural wear and storytelling elements would appear.

I first apply a base color and gradually stack layers with slight variations in color and roughness. I always work with references at hand, relying solely on intuition can easily lead to bad habits.

Then I add storytelling details found in the references, such as torn sections patched with tape, rusted areas, or spots worn out by frequent hand contact. Lastly, I apply dust. I study where it naturally accumulates and where it may be wiped away by use, to achieve a believable lived-in feel.

I used Unreal Engine 5.5 to create and customize the character. The default MetaHuman model looked too clean and generic, especially the face and arms, so it didn't match the gritty mood of the Joker character. To fix this, I exported the facial mesh and sculpted wrinkles and facial muscle flow in ZBrush. I then baked the high-poly details onto the base mesh using Substance 3D Painter.

For the face, I imported the default MetaHuman textures and layered makeup and tear stains to express emotion.

For the arms and hands, I studied real-life references and hand-painted details like yellowed fingers from nicotine, veins, freckles, scars, and arm hair directly in Substance 3D Painter.

Since the default MetaHuman hairstyles didn't resemble the Joker's look, I used Blender's hair grooming system to create custom hair.

After finishing the groom, I imported it into Unreal Engine using the Alembic Groom Importer plug-in.

Here is the YouTube link I referred to when working on the hair:

Complex Textures

One example is the wooden armrest of a chair. I started with a soft wood base color and adjusted the tone and roughness to define the material. I rarely use a fixed method; instead, I refer to real-life examples to vary the feel.

I layered multiple wood tones gradually to build richness. Then, I applied a smooth, coated wood material to most of the surface, except for areas where hands frequently touch, which I left slightly worn. Even the smooth wood received small tone changes and subtle scratches to enhance realism.

For the final pass, I added dust and brightened some edge areas using an overlay layer to suggest faded, dulled, and worn-out wood.

1 of 4

Composition

I assembled the scene gradually, finishing props one by one. I initially applied placeholder textures to the walls, floors, and ceilings to block in the mood and later replaced them with the final materials after finishing individual assets.

For composition and camera angles, I closely studied the cinematography of Joker (2019). I tried to reflect the film's atmosphere and visual rhythm, using some of the same framing principles to guide the viewer's attention and create narrative tension.

While the overall layout followed the movie as a reference, I added extra layers of realism based on real-world examples. For instance, when setting up the makeup station, I referred to actual photos I had taken of messy, lived-in workspaces from professional makeup artists. This helped bring an authentic and grounded feeling to the scene.

Lighting & Rendering

The lighting setup and post-production were supported by my mentor, Sangwook Lee. He is an artist who has taught many other outstanding artists.

For the lighting setup, I collected lighting references from a site called ShotDeck. ShotDeck is a visual reference site that archives high-resolution stills from movies, music videos, and commercials.

It is a platform used as a reference by professionals involved in visual storytelling, such as directors, DPs, art directors, and concept artists. It's very useful for gathering references because you can search scenes by color tone, composition, lighting, lens info, emotional tone, etc. All the lights were set to Movable, and I enabled the Cast Translucent Shadows option.

I used a Directional Light to express the light coming in from the outside window, and activated Volumetric Fog in the ExponentialHeightFog to express god rays.

For the fluorescent lights, I used a Rect Light and a Point Light together. Rect Light gave directional lighting, and Point Light was used to express diffused light. If the Emissive intensity is too high in the material, a lot of noise occurs, so it’s better to keep the emissive value low.

In the video, I dimmed the surrounding lights a bit to emphasize the Joker sitting in front of the makeup table. I separately rendered the background with a lot of natural light to focus on the light coming through the windows.

The rendering approach used was Path Tracing. Path Tracing is Unreal Engine's high-quality offline renderer. It simulates the actual movement of light rays to reproduce accurate global illumination, soft shadows, and realistic reflection and refraction. It's mainly used for portfolios, cinematics, and product rendering.

In the Post Process settings, I set the Path Tracing values as shown in the image below.

  • Max Bounces: The default is 32, but I set it to 16 because there was no significant difference;
  • Samples Per Pixel: I increased this for the final image to express more image detail;
  • Max Path Intensity: I lowered the value because setting it too high caused firefly artifacts;
  • Reference Depth Of Field: If this is unchecked, the camera cannot focus on transparent glass materials, so I kept it checked;
  • Denoiser: You must first activate the OptiX Denoise Plugin, then turn this on.

Also, because of the MetaHuman's hair physics system, Path Tracing rendering does not work unless you enter the console command: r.HairStrands.PathTracing.InvalidationThreshold -1

Video Output Settings

First, activate the following plug-ins:

  • Movie Render Queue;
  • Movie Render Queue Additional Render Passes;
  • OCIO (OpenColorIO).
1 of 2

For details on OCIO and EXR, I referred to William Faucher's video:

Right-click inside the Engine Content folder, go to Miscellaneous, and create an OpenColorIO Configuration. Click the created OCIO and set the values as shown in the image below.

After activating the Movie Render Queue plugins, the Movie Render Queue window will launch when rendering from the cinematic sequencer. In the settings window, I chose EXR as the format. EXR is the industry standard and provides the best rendering quality and bit depth. Do not use JPG or PNG.

Then, in the Color Output section, I inserted the OCIO I had prepared and set the configuration as shown in the image.

Since I rendered with Path Tracing, I also added the Path Tracer option in the render settings.

When I imported the rendered EXR files into DaVinci Resolve, the screen appeared very dark, this is a natural phenomenon. In the Edit tab, from the right Library panel, I brought in ACES Transform and connected it to the original video node. Then I changed:

  • Input Transform to sRGB (Linear) to CSC;
  • Output Transform to sRGB.

Conclusion

I prepared this portfolio over the course of two years while working full-time. I mainly worked on it after hours during the weekdays and focused more intensively on weekends and holidays. For the final five months, I left my job to dedicate myself entirely to the project and complete it properly.

The most challenging part of production was definitely texturing. Coming from an architectural visualization background, I initially created materials that were too clean and sterile. They lacked storytelling and realism. Realizing this, I had to completely rethink how I approached textures and spent a lot of time studying references and practicing new techniques. It was difficult, but also the most rewarding phase of the entire process.

Through this project, I used a wide range of 3D tools and tackled many types of materials. Most importantly, I developed the confidence to start anything without hesitation, even if it's something I've never tried before. I learned that taking that first step matters the most.

For aspiring environment artists, I recommend observing the world around you with more curiosity. Actively collect references, not just images from the internet, but also by taking your own photos. Touch materials, observe how surfaces react to light, and pay attention to wear, roughness, or human traces. These small details will elevate your work and ground it in reality.

Lastly, I would like to express my sincere gratitude to the team at 80 Level for giving me the opportunity to share the process behind my portfolio project.

Jihak Jung, 3D Environment Artist

Interview conducted by Gloria Levine

Join discussion

Comments 0

    You might also like

    We need your consent

    We use cookies on this website to make your browsing experience better. By using the site you agree to our use of cookies.Learn more