180도 법칙

The 180-degree rule

두 피사체를 잇는 가상의 축(라인) 한쪽에 카메라를 계속 두어, 편집이 바뀌어도 좌우 위치가 뒤집히지 않게 지키는 연속성 규칙.

다른 이름: 라인 규칙Line of actionCrossing the line
···
html
<div class="stage">
  <div class="top">
    <div class="axis"></div>
    <div class="char ca">A</div>
    <div class="char cb">B</div>
    <div class="cam" id="cam"></div>
    <span class="warn" id="warn">LINE CROSSED</span>
  </div>
  <div class="frames">
    <div class="frame"><i class="p left" id="f1l">A</i><i class="p right" id="f1r">B</i></div>
    <div class="frame" id="f2"><i class="p left" id="f2l">A</i><i class="p right" id="f2r">B</i></div>
  </div>
</div>
css
.stage{position:absolute;inset:0;display:flex;gap:4%;padding:4%;box-sizing:border-box}
.top{position:relative;flex:1.3;background:color-mix(in oklab,var(--accent) 6%,var(--surface));
  border-radius:8px;border:1px solid var(--line)}
.axis{position:absolute;left:20%;right:20%;top:50%;height:1px;
  background:repeating-linear-gradient(90deg,var(--muted) 0 6px,transparent 6px 11px)}
.char{position:absolute;top:50%;width:13%;aspect-ratio:1;border-radius:50%;transform:translate(-50%,-50%);
  display:grid;place-items:center;font:800 11px system-ui,sans-serif;color:#fff}
.ca{left:20%;background:var(--accent)}
.cb{left:80%;background:var(--accent-2)}
.cam{position:absolute;width:6%;aspect-ratio:1;border-radius:2px;background:var(--fg);transform:translate(-50%,-50%)}
.warn{position:absolute;left:50%;top:3%;transform:translateX(-50%);font:800 10px ui-monospace,monospace;
  color:#ff4d5e;opacity:0;transition:opacity .3s;letter-spacing:.05em}
.warn.show{opacity:1}
.frames{flex:1;display:flex;flex-direction:column;gap:6%}
.frame{position:relative;flex:1;border-radius:6px;border:2px solid var(--line);background:var(--surface);
  transition:border-color .3s}
.frame.bad{border-color:#ff4d5e}
#f1l{left:12%}
#f1r{left:64%}
.p{position:absolute;top:50%;width:20%;aspect-ratio:1;border-radius:50%;transform:translateY(-50%);
  transition:left .5s ease;display:grid;place-items:center;color:#fff;font:800 10px system-ui,sans-serif}
.p.left{background:var(--accent)}
.p.right{background:var(--accent-2)}
js
const cam=document.getElementById('cam');
const f2=document.getElementById('f2');
const f2l=document.getElementById('f2l'), f2r=document.getElementById('f2r');
const warn=document.getElementById('warn');
function frame(t){
  const cycle=6000;
  const phase=(t%cycle)/cycle;
  const crossed=phase>0.72 && phase<0.92;
  const side=crossed?-1:1;
  const ang=phase*Math.PI*2*2.4;
  const localAngle=Math.PI*0.22+(Math.sin(ang)*0.5+0.5)*Math.PI*0.56;
  const x=50+Math.cos(localAngle)*17;
  const y=50+side*Math.sin(localAngle)*15;
  cam.style.left=x+'%';
  cam.style.top=y+'%';
  const orderNormal=side>0;
  f2l.style.left=orderNormal?'12%':'64%';
  f2r.style.left=orderNormal?'64%':'12%';
  f2.classList.toggle('bad',!orderNormal);
  warn.classList.toggle('show',!orderNormal);
  requestAnimationFrame(frame);
}
requestAnimationFrame(frame);

두 사람이 대화하는 장면을 찍을 때, 둘을 잇는 가상의 선을 '액션의 축(line of action)'이라 부릅니다. 카메라가 이 선의 한쪽에서만 촬영하면, 편집에서 어떤 샷을 이어 붙여도 A는 항상 화면 왼쪽에, B는 항상 화면 오른쪽에 남습니다.

만약 카메라가 촬영 중간에 선을 넘어가면(라인을 크로스하면), 다음 컷에서 A와 B의 좌우가 갑자기 뒤바뀝니다. 두 샷을 이어 붙이면 마치 순간이동한 것처럼 위치 감각이 깨져서 관객이 혼란스러워합니다.

멀티캠 촬영이나 장면 전환에서 라인을 넘어야 할 때는, 그 사이에 축 위에서 찍은 중립적인 샷(정면 샷)이나 카메라가 실제로 이동하는 트래킹 샷을 넣어 자연스럽게 '재설정'합니다.

언제 쓰나

대화·인터뷰 장면을 여러 컷으로 편집할 때 항상 지켜야 합니다. 일부러 넘어서 혼란을 연출 의도로 쓸 수도 있지만 드뭅니다.