logo80lv
Articlesclick_arrow
Talentsclick_arrow
Events
Workshops
Aboutclick_arrow
profile_login
Log in
0
Save
Copy Link
Share

Creating Nostalgic Animated 3D Toy Train Scene with Maya & Substance 3D

Aadil Faruqui talked to us about the Train vs Robot project, discussing setting up a realistic composition, texturing wood, and animating the scene using Maya and Substance 3D Painter.

Introduction

Hi, my name is Aadil Faruqui, and I'm based in Mumbai, India. I'm currently a Lighting TD at DNEG, with over seven years in the VFX industry, and I'm still loving every moment of it. My passion ignited from behind-the-scenes glimpses of films like Iron Man, Transformers, 2012, Ra.One, and Real Steel. After high school, I pursued a degree in Animation and VFX, landing my first gig at Prana Studios, responsible for the episodes of Game of Thrones, Disney films, Transformers, and more.

Since then, I've worked on over 20+ movies, including Hollywood projects such as Furiosa, Venom 3, Aquaman 2, The 100, and For All Mankind. Since our last interview, I've deepened my focus on lighting at DNEG, which has pushed me toward more realistic CG renders. In my personal work, I experiment with DIY VFX using household props to achieve photorealism. 

This Train vs Robot project was my first full CG render, originally planned for live-action integration, but I challenged myself to make it stand alone in CG.

Reference Ideas

My inspiration stems from artists' love for recreating real-world mechanics in CG. It's meditative and satisfying for me. Personal projects like this keep me stress-free and motivated, especially through weekly challenges on my Discord server, CodeVFX, where I collaborate with like-minded creators. This idea sparked from a meme about a 'stuck in a loan loop' engineering project by Christian Schryber.

POV: Living Paycheck to paycheck looks like:

I wanted to recreate it as a fun CG loop with a robotic arm and wooden toy train. 

The goals included pushing realism in full CG, experimenting with rigging/animation, and evoking a nostalgic Indian middle-class home vibe with summer lighting like at granny's.

References: I pulled from the original video for the arm, toy train images (adding wooden rods for rigging), common Indian floor tiles, and kids' play area photos for scattered toys.

Modeling

For models, I focused on main assets (Robot Arm, Train, Tracks) and modeled them in Maya, using image planes for proportion. 

Tracks were modeled straight, duplicated them in a sequence and then bent it with a modifier to give the arc shape it has.

Rest of the assets were downloaded like LEGO, chair, Bucket, etc., from Sketchfab Red Brick console Asset was borrowed from a Friend Vinayak, who's a Modeling Artist. This helped me focus on the main assets and saved a significant amount of time.

Blockout, Assembling the Scene, Composition, & Scattering Details

Blockout Setup

I started with a rough blockout in Maya using simple primitives to establish scale, proportions, and the circular track layout. I placed basic proxies for the robotic arm, train, and tracks first, ensuring everything fit within the camera frame.

Scene Assembly

Once the main assets (robotic arm, train, and tracks) were modeled and rigged, I referenced them into a new master scene, which became my main render and lighting file. This non-destructive approach kept the original assets clean and allowed easy updates. I then built the environment around them.

Composition

With a static camera, I composed the shot to center the looping action while leading the viewer's eye around the circle using the scattered props. The mosaic floor tiles and warm lighting create a nostalgic summer-morning feel in a typical Indian middle-class home.

Scattering Details

To make it feel lived-in, I created a quick list of common household props: a plastic chair, a laundry basket, the classic Indian mop, and the iconic Brick Game console (every 90s kid's dream!). Most background props like the chair, basket, and mop were assets from Sketchfab and LEGOs reused from my previous projects (the LEGO is a fun easter egg from an older personal piece). The Red Brick Game is every kid's dream to own one. I scattered them manually at first for control, then experimented with variations, moving items around until the scene felt naturally cluttered without distracting from the main action. The walls were loosely based on my own room for authenticity, and the floor tiles were a must-have texture I downloaded, then tweaked in lookdev (adjusting diffuse, roughness, and subtle displacement noise) to match real Indian homes.

Texturing

As a lighting artist first and foremost, texturing isn't my primary domain, but I approached it with a clear goal: keep the toys and tracks looking relatively new and clean, like cherished childhood items, while adding just enough subtle wear to feel authentic. I did all the texturing in Substance 3D Painter and then refined the final look through extensive lookdev in Arnold.

For the wooden train and tracks, the heart of the project, I closely followed wooden material tutorials by Javed Rajabzade. I used Substance 3D Painter’s inbuilt textures for the base albedo material, added subtle grain details via normal maps, and kept roughness fairly uniform but with slight variations to catch light naturally. 

The only intentional wear I added was tire scuffs on the tracks and faint grip marks from the robotic arm where it lifts each piece. These small contact points helped sell the interaction without making the toys look old or battered.

The floor tiles were crucial for the Indian household vibe. I sourced a perfect mosaic tiled texture pattern online, then made minor lookdev adjustments: tweaked the diffuse for warmth, adjusted roughness to get those satisfying glossy reflections under sunlight, and added subtle procedural noise in the displacement channel to break up the repetitive smoothness and avoid a too-perfect CG look.

Other props were kept simple since they were background elements:

  • The robotic arm was straightforward. I just matched the metallic/plastic look from the reference video using basic PBR materials.
  • For the mop (pocha), I cheated cleverly: downloaded a simple fallen cloth asset from Sketchfab, applied a mop texture on top, and layered in some fabric pattern. Since it was defocused in the background, it read perfectly without extra modeling effort.
  • For the LEGO bricks, I redid the textures from scratch: flat base colors with light grunge, noise in the specular and normal maps for subtle breakups, and a touch of edge wear to make them feel handled but not dirty.

Honestly, this project didn't feature any truly complex surfaces, nothing like skin, organic creatures, or intricate metals. My focus as a lighting TD meant I leaned heavily on lookdev after exporting from Substance 3D Painter to get the materials singing under the lights. The real magic happened when the textures interacted with the warm sunlight and shadows; that's where the realism came alive for me.

Animation

The animation was one of the most rewarding parts of the project; the seamless loop of the robotic arm rearranging tracks while the train keeps moving endlessly has a meditative, satisfying quality.

I worked in Maya, animating at 24 FPS for a smooth, toy-like feel. The loop is built around just four unique track pieces out of eight total: the arm continuously picks one up, moves it to the opposite side, rotates it 180° (relative to itself), places it down, and repeats, creating the illusion of perpetual motion.

Robotic Arm Rig & Animation 

I rigged the arm with a standard constraint for precise control. Key features:

  • A custom claw controller for open/close actions to grab and release tracks.
  • The flexible wires were rigged with simple bones parented to the claw, allowing natural jiggle using subtle keyed offsets.
  • To handle track pickup cleanly, I added a small curve at the claw's mouth and parent-constrained the tracks to it during the grab. This made keying the lift, 180° flip, and placement much easier and more stable. The arm's main movements were keyframed, linear translation across the circle, overlapped with rotations for mechanical fluidity.

Quick Breakdown of Arm Movement in Stages (to understand the motion)

Train Animation

The train itself was straightforward but clever. I grouped the engine and cars, placed the pivot at the exact center of the circular track, and animated a constant rotational speed around the Y-axis. For the wheels, I did a bit of quick math: calculated the track circumference and wheel diameter to drive an expression linking forward distance to wheel rotation, which ensured perfect no-slip timing.

The small connecting rods between wheels were rigged like pistons (inspired by real steam locomotives), using simple Point and Aim constraints and expressions for that extra satisfying mechanical detail as the train chugged along.

Short Video on Train Rod Rigging and Animation:

Overall, planning the loop required studying the original reference video frame-by-frame to nail the timing and spacing. The combination of precise rigging tricks and a touch of math made even this simple toy setup feel alive and believable.

Lighting

My lighting goal was to capture a warm, early-morning summer indoor scene, like sunlight streaming into a house in summer. I wanted a cozy yet contrasting look: soft overall shadows, warm tones, prominent specular highlights and breakups on the glossy floor tiles, subtle hotspots, and gentle but defined shadows to add depth.

I used Arnold as my renderer in Autodesk Maya. The base lighting came from the Artist Workshop HDRI from Poly Haven, which provided natural ambient light and soft global shadows. For the key light, I added a large area light positioned to mimic sunlight coming through a window on the left. This created long, directional shadows and nice contrast across the circular track. To balance it, I placed a softer fill light on the screen-right side to gently lift the hard shadow areas without washing out the warmth.

Since the camera is completely static, I optimized my rendering approach for maximum compositing control by splitting into efficient layers:

  • Environment: Rendered as a single frame (background props and floor).
  • Main Assets: Train, tracks, and robotic arm together as a sequenced layer.
  • Shadow & AO Pass: Main assets casting on the environment (sequence).
  • Reflection Pass: Main assets' reflections on the environment (sequence).

Key AOVs included:

  • Individual light passes (for precise adjustments)
  • Specular Direct/Indirect and Albedo Direct/Indirect
  • Cryptomatte (for masking)
  • STMap (for distortion effects like track marks)
  • Position, Vector, and Z-Depth (for advanced comp tweaks like depth-based fog or motion blur if needed)

This layered setup saved render time while giving me full flexibility in Nuke to fine-tune contrast, warmth, and interactions.

Render times (in Arnold):

  • Train Beauty pass: 2–3 minutes per frame × 360 frames ≈ 15 hours
  • Environment: 45 minutes (single frame) ≈ 1 hour
  • Train Shadow pass: ≈ 9 hours

Train Reflection pass: ≈ 15 hours. Total rendering alone took around 40 hours!

Composition & Post-Production

I planned to achieve the majority of my final look in compositing (using Nuke), which gave me the flexibility to iterate quickly and push realism without re-rendering everything. With the static camera and layered renders (environment as a still, main assets as a sequence, plus dedicated shadow, reflection, and interaction passes), I had full control over integration.

The comp started straightforward: merging the environment still with the sequenced main assets (train, tracks, robotic arm). I then focused on precise interactions to sell the realism. Shadows were especially crucial for me, as they can make or break the believability of any CG scene. Using the dedicated passes, I carefully added cast shadows, contact occlusion, reflections, and subtle bounce light so the toys felt truly grounded in the space.

For ground details, I used the STMap pass to add tire and track marks, plus some dust buildup in the corners. For the walls, I photographed my own room and subtly composited elements over the CG walls to bring in real texture and imperfection. One of my favorite tweaks was changing the train's tire color: it was originally red in the render, but it fought the warm, nostalgic palette. Using Cryptomatte, I easily isolated and shifted it to cyan, which instantly made it pop against the floor while fitting the childhood toy vibe.

Color grading was key to the sunny summer-morning feel. I warmed up the mids and highlights, boosted contrast slightly, and ensured the specular highlights on the tiles caught that golden light.

Post-Process checklist (applied selectively based on the scene):

  • Sharpen (subtle, to enhance detail without looking artificial)
  • Glow on highlight areas (soft bloom on floor hotspots)
  • Vignette (gentle darkening at edges to focus the eye)
  • Film noise/grain (light, for that analog home-video nostalgia)
  • Lens flare (very subtle, from the implied window source)
  • Chromatic aberration (minimal, on edges)
  • Floating dust particles (in the foreground for depth and atmosphere)

One thing I'd do differently next time: I rendered a vector pass to add motion blur in post, but it never felt quite right. In hindsight, rendering motion blur directly in CG (Arnold) would have integrated more naturally with the loop's movement.

Overall, compositing was where the scene truly came alive; those small, iterative tweaks turned a clean CG render into something that feels lived-in and nostalgic.

Conclusion

What began as a one-week challenge on my CodeVFX Discord server quickly turned into a month-long personal project; my obsession with detail simply wouldn't let me rush it! In the first week, I managed to complete the modeling and core animation, submitting a playblast for the challenge deadline. But I knew the quality I wanted to achieve deserved more time, so I extended it to refine every aspect.

The main challenges were the animation R&D getting the robotic arm's precise pick-and-rotate loop to feel mechanical yet satisfying and pushing full-CG realism to a level where it could pass for real footage. These kept me excited throughout; I went through countless iterations and micro-decisions, especially in lighting, texturing, and compositing. Once the scene was locked, I shared it with friends for feedback and incorporated their suggestions to make it even more believable.

Lessons learned: Plan for quality over speed in personal work; deadlines are flexible when passion drives you. Layered renders and iterative feedback are invaluable for realism. Also, getting external eyes on your work reveals blind spots you can't see alone.

Advice to beginning artists: Never rush to publish an incomplete piece just to meet a self-imposed deadline; it'll represent you in your portfolio for years. Take those extra days (or weeks) to polish it until it truly shines. Personal projects are your playground: treat them like meditation, experiment freely, seek community feedback, and always prioritize the quality that makes you proud.

Aadil Faruqui, Lighting Artist

Interview conducted by Gloria Levine

Ready to grow your game’s revenue?
Talk to us

Comments

0

arrow
Type your comment here
Leave Comment
Ready to grow your game’s revenue?
Talk to us

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