PTENES
MODULE 3.3

🏍️ Motorcycle Commercial (Three.js)

Cinematic showcase: the camera orbits as studio lights reveal the metallic reflection on the bodywork. Nothing else on the list creates convincing 3D scenes — Three.js is the clear choice for a premium visual product.

6
Sections
~45
min
Three.js
Lib
4K
Target render
1

🎥 Scenario: the commercial that looks real

A motorcycle manufacturer needs a premium digital ad. Zero budget for a real studio, but the product has to look like it just rolled out of a luxury dealership. Three.js with PBR materials delivers that level of quality — without a physical camera.

3D object — live demonstration
metalness: 0.9
roughness: 0.1
PBR material

✓ Three.js is ideal when…

Physical products need realistic visualization
Camera orbits around a 3D object
Studio lighting with metallic reflections

✗ Three.js isn't the best choice when…

Text and UI storytelling (→ GSAP)
Data infographics (→ D3)
App micro-animations (→ Lottie)
WebGL
GPU rendering
PBR
physical materials
Scene
object graph
Camera
3D perspective
2

💡 Studio lighting: three-point lighting

Three-point lighting is the product photography standard that turns any mesh into a desirable object. Key light reveals the shape. Fill light softens the shadows. Rim light separates the product from the dark background.

KEY LIGHT intensity 1.5 🏍️ 3D mesh FILL LIGHT intensity 0.6 RIM LIGHT behind the object subtle reflective plane — FogExp2 darkens the edges

💡 Rim light is the secret

The rim light is what separates the dark object from the dark background. Without it, the motorcycle blends into the #0a0a0a background. Position it directly behind, set intensity to 0.3–0.5, and use the brand color to add personality.

Key 1.5
main shape
Fill 0.6
soft shadows
Rim 0.4
background separation
Ambient 0.1
minimum setup
3

🪞 PBR material: the dealership shine

PBR (Physically Based Rendering) means the material responds to light like a real material. With metalness=0.9 e roughness=0.1, the motorcycle’s paint reflects the environment like premium automotive lacquer.

PBR material — configuration
const material = new THREE.MeshStandardMaterial({
  color: 0x1a0050,        // roxo escuro da marca
  metalness: 0.9,         // quase metal puro
  roughness: 0.1,         // superfície polida
  envMap: cubeRenderTarget.texture, // reflexo ambiente
  envMapIntensity: 1.2,
});

✓ Settings that work

metalness 0.85–0.95 + roughness 0.05–0.15
cubemap envMap for realistic environment reflections
clearcoat=0.8 for a varnished finish over the lacquer

✗ Common material mistakes

MeshBasicMaterial — no response to light
roughness=0 — a perfect reflection looks like plastic
No envMap — flat surface with no depth
metalness
0=plastic 1=metal
roughness
0=mirror 1=matte
envMap
realistic reflection
clearcoat
automotive clear coat
4

🌀 Camera Orbit: the cinematic arc

The camera moves along an arc around the object via Math.sin e Math.cos of the current frame. The movement is slow and deliberate — 0.3–0.5 rotations per second — like a high-end cinema camera tracking the object.

camera orbit — live demo
camera
camX = sin(frame/fps * speed) * radius
camZ = cos(frame/fps * speed) * radius
speed = 0.4 rad/s
radius = 4 units

💡 Speed defines the character

Slow camera (0.2–0.4 rad/s) = premium, confident, sophisticated brand. Fast camera (1+ rad/s) = energy, sports, youth. For a luxury motorcycle commercial, slow speed is always the right choice.

Math.sin/cos
perfect arc
0.4 rad/s
premium pacing
lookAt(0,0,0)
focus on the object
Partial arc
30s = ~180°
5

💬 The Complete Prompt

This is the exact prompt you give Claude Code (with the Remotion skill active). Each prompt requirement maps to an element in the Three.js scene — Claude generates the complete composition with React Three Fiber integrated.

prompt — copy and use
Build a cinematic motorcycle showcase.
Requirements:
Studio lighting,
Rotating camera orbit,
Slow dramatic movement,
Metallic reflections,
Dark background.
Render as a commercial-style product presentation.

💡 "Studio lighting" and "Metallic reflections"

These two words activate Claude’s Three.js knowledge to configure the three-point lighting system and the PBR MeshStandardMaterial. Without them, Claude may use flat lighting and a basic material — an amateur result.

"cinematic"
dramatic tone
"studio"
3-point lighting
"metallic"
PBR material
"commercial"
quality standard
6

🏆 4K rendering and Premium Deliverable

Once the composition is approved in preview, the 4K render with antialiasing generates the final MP4. The quality is indistinguishable from professional automotive marketing—and it took hours, not days.

Build order: from scene to commercial

1

Scene and camera

Create the Three.js scene inside a useEffect in Remotion. Perspective camera with fov=45, initial position at (4, 2, 4).

2

Mesh and PBR material

Load the motorcycle GLTF with GLTFLoader. Apply MeshStandardMaterial with metalness/roughness. Validate it in a static state before animating.

3

Lighting system

Add the three lights. Adjust their intensities until the motorcycle looks like it’s “on a showroom floor.” Confirm that the rim light separates it from the background.

4

Connect the camera to the frame

Camera.position.x = sin(frame/fps * 0.4) * 4. Render the frame in Three.js AFTER updating the camera — deterministic.

4K render
3840×2160
Antialias
without jagged edges
Instagram
9:16 story
YouTube
16:9 landscape

📋 Module 3.3 Summary

← Population Shift Next: Banking Onboarding →