Experimental UI Design Course

Day 15 of 30

Day 15: 3D Web Introduction

Study (10 min): Explore Bruno Simon's portfolio and Three.js showcase
Practice (20 min): Create your first rotating 3D object with Three.js
Tools: Three.js CDN, basic geometry, ambient lighting

The Third Dimension

3D on the web transforms flat interfaces into spatial experiences. Bruno Simon's portfolio, where you drive a tiny car through a 3D world, demonstrates how dimensional design creates memorable interactions. Three.js makes this accessible to web designers, bringing game-like experiences to browsers. Start simple - even a rotating cube can feel magical when it responds to mouse movement.

Setting Up Your First Scene

Three.js requires three components: a scene (your 3D world), a camera (the viewer's perspective), and a renderer (what draws everything). Think of it like theater - you need a stage, an audience viewpoint, and lights to see anything. Start with basic geometric shapes before attempting complex models. A spinning cube teaches fundamental concepts better than importing elaborate 3D assets.

Basic Three.js Setup:

// Scene, Camera, Renderer trinity
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight);
const renderer = new THREE.WebGLRenderer();

// Add a simple cube
const geometry = new THREE.BoxGeometry();
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);

// Animation loop
function animate() {
  requestAnimationFrame(animate);
  cube.rotation.x += 0.01;
  cube.rotation.y += 0.01;
  renderer.render(scene, camera);
}
animate();

Interaction and Response

3D elements should respond to user input meaningfully. Map mouse position to camera movement, creating parallax effects. Use scroll position to rotate objects or move through scenes. Small interactions - hovering to spin faster, clicking to change colors - make 3D feel alive. The goal isn't photorealism but creating engaging spatial interfaces that enhance user experience.

Performance Considerations

3D demands computational resources. Start with low-poly aesthetics - they're both trendy and performant. Limit the number of objects and polygons. Use efficient lighting (ambient over multiple dynamic lights). Test on various devices, especially mobile. Remember that not everyone has a powerful GPU. Graceful degradation ensures your site remains functional even if 3D features fail.

Key Takeaways