장노출

Long exposure

셔터를 오래 열어 두어, 움직이는 빛이 한 프레임 안에 궤적(트레일)으로 겹쳐 쌓이는 촬영 기법.

다른 이름: Light trailsSlow shutter photography
···
js
const canvas=document.createElement('canvas');
document.body.appendChild(canvas);
const ctx=canvas.getContext('2d');
function resize(){
  canvas.width=innerWidth; canvas.height=innerHeight;
  ctx.fillStyle='#05050a';
  ctx.fillRect(0,0,canvas.width,canvas.height);
}
addEventListener('resize',resize); resize();
const N=14;
const particles=[];
for(let i=0;i<N;i++){
  const lane=i%2;
  particles.push({
    lane,
    y: lane===0 ? 0.32+Math.random()*0.08 : 0.6+Math.random()*0.08,
    x: Math.random(),
    speed: 0.0035+Math.random()*0.0035,
    color: lane===0 ? '255,255,255' : '255,70,70',
  });
}
function frame(){
  ctx.fillStyle='rgba(5,5,10,0.09)';
  ctx.fillRect(0,0,canvas.width,canvas.height);
  particles.forEach(p=>{
    const w=canvas.width,h=canvas.height;
    p.x += p.lane===0 ? p.speed : -p.speed;
    if(p.x>1.05) p.x=-0.05;
    if(p.x<-0.05) p.x=1.05;
    const px=p.x*w, py=p.y*h;
    const grad=ctx.createRadialGradient(px,py,0,px,py,10);
    grad.addColorStop(0,'rgba('+p.color+',0.9)');
    grad.addColorStop(1,'rgba('+p.color+',0)');
    ctx.fillStyle=grad;
    ctx.beginPath(); ctx.arc(px,py,10,0,Math.PI*2); ctx.fill();
    ctx.fillStyle='rgba('+p.color+',1)';
    ctx.beginPath(); ctx.arc(px,py,2.2,0,Math.PI*2); ctx.fill();
  });
  requestAnimationFrame(frame);
}
frame();

셔터 속도가 빠르면 그 순간의 빛만 한 장에 담기지만, 셔터를 몇 초에서 몇 분까지 열어 두면 그 사이 움직인 모든 빛이 한 프레임에 겹쳐 쌓입니다. 도로 위 차량의 헤드라이트·테일램프가 선으로 늘어지거나, 밤하늘의 별이 지구 자전을 따라 호를 그리는 사진이 대표적입니다.

빛이 아닌 정지된 물체는 노출 시간 내내 같은 자리에 있으므로 그대로 선명하게 남습니다 — 움직이는 것과 움직이지 않는 것의 대비가 장노출 사진의 핵심입니다. 어두운 곳에서 촬영해야 트레일이 다른 빛에 묻히지 않고, 장시간 노출 동안 흔들리지 않도록 삼각대가 필수입니다.

캔버스로 흉내 낼 때는 매 프레임 화면을 완전히 지우지 않고, 아주 옅은 반투명 사각형만 덧칠해 이전 프레임이 서서히 사라지게 합니다. 그 위에 움직이는 점을 계속 그리면 자연스럽게 꼬리가 남습니다.

언제 쓰나

야간 도시 풍경, 별 사진, 물 흐름을 부드럽게 표현할 때. 밝은 낮에는 ND 필터로 빛의 양을 줄여야 셔터를 오래 열 수 있습니다.