블로그 / 5분 분량 · 2026-05-24
트리거 패턴 — Gemini Omni VFX 프롬프트의 "When [action], [transformation]" 문법
Gemini Omni 화제의 데모(거울 물결, 비눗방울 조각, 나비가 벌로 변하는 장면)에 숨은 문법을 풀어 봅니다. 트리거 기반 VFX 프롬프트를 짜는 법과 결과를 고정하는 법을 정리했습니다.
I/O 2026에서 가장 화제가 된 Gemini Omni 데모들, 그러니까 팔이 거울로 변하는 장면, 비눗방울이 유리 조각상이 되는 장면, 나비가 벌로 바뀌는 장면에는 공통된 프롬프트 구조가 있습니다. DeepMind 공식 가이드는 이를 “트리거 패턴”이라고 부릅니다. Omni에서 클립 도중의 변신을 원하는 대로 제어하는 가장 깔끔한 방법입니다.
구조
[Base scene]. When [specific trigger action], [specific transformation]. Keep [list] identical.
세 부분으로 이뤄집니다.
- 기본 장면 — 클립이 시작할 때의 상태
- 트리거 — 변신이 일어나는 순간을 알리는 구체적인 동작
- 변신 + 고정 — 무엇이 바뀌고 무엇이 그대로인지
트리거가 문장의 기준점입니다. 트리거가 없으면 Omni는 10초 클립의 어느 시점에 변화를 일으켜야 할지 모릅니다. 그러면 클립 내내 느릿느릿 변하거나, 첫 1초 안에 변신이 몰려 버립니다.
예시로 보기
예시 1 — 거울 물결 (DeepMind 공식 데모)
A woman reaches toward a mirror in a Victorian parlor.
When her fingertips touch the glass, make the mirror ripple like liquid
and her arm turn to reflective mirror material.
Keep the parlor, her face, and the warm lighting identical.
잘 통하는 이유:
- 기본 장면이 구체적입니다(빅토리아풍 응접실, 여성, 거울)
- 트리거가 막연한 “잠시 후”가 아니라 분명한 신체 접촉 순간입니다
- 변신에 서로 맞물린 변화가 두 가지 있습니다(물결 + 팔의 재질)
- 고정 문구가 이름을 붙인 요소 세 가지를 지킵니다
예시 2 — 비눗방울 조각상 변신
A glass bubble floats slowly above a wooden table.
When the bubble reaches the top of the frame, transform it into a small
porcelain sculpture of a bird mid-flight.
Keep the wooden table, the soft window light, and the slow upward motion identical.
잘 통하는 이유:
- 트리거로 신체 접촉 대신 화면 속 위치(화면 위쪽)를 씁니다
- 변신 대상이 막연한 형태 변화가 아니라 이름이 분명한 사물(도자기 새)입니다
- 고정 문구가 움직임까지 지킵니다. 새로 변한 뒤에도 계속 위로 떠올라야 합니다
예시 3 — 나비 → 벌 (Google 출시 데모 변형)
A monarch butterfly hovers near a sunflower in a sunny meadow.
When the butterfly lands on the sunflower's center, transform it into a worker bee
collecting pollen.
Keep the sunflower, the meadow background, and the warm golden lighting identical.
잘 통하는 이유:
- 트리거가 내려앉는 순간이라 분명하고, 한 프레임으로 딱 떨어집니다
- 변신 후에도 크기와 행동의 목적이 이어집니다(“collecting pollen”이 동작을 이어 줌)
- 고정 문구가 배경을 붙잡아 두어 시선이 변신에만 모입니다
Omni가 잘 처리하는 트리거 유형
| 트리거 유형 | 표현 예시 | 안정성 |
|---|---|---|
| 신체 접촉 | ”When her fingertips touch the glass” | 🟢 높음 |
| 화면 속 위치 | ”When the bubble reaches the top of frame” | 🟢 높음 |
| 특정 동작이 끝나는 순간 | ”When she finishes pouring the water” | 🟢 높음 |
| 카메라가 피사체에 닿는 순간 | ”When the camera reaches her face” | 🟡 보통 |
| 초 단위 시간 지정 | ”At the 5-second mark” | 🟡 보통(덜 자연스러움) |
| 막연한 타이밍 | ”After a moment” / “Then” | 🔴 피할 것 |
이 패턴이 통하는 이유는 Omni가 계획을 세울 수 있는 분명한 전후 구조가 생기기 때문입니다. 트리거가 막연하면 모델이 타이밍을 짐작해야 하고, 그러면 변신이 흐리멍덩하게 번지거나 뚝 끊기듯 튑니다.
트리거 + 고정 문구 + 기본 장면 — 흔한 실수
실수 1: 고정 문구를 빼먹음. Omni가 변신은 해 주지만 응접실 분위기를 바꾸고, 조명을 바꾸고, 인물까지 바꿔 버립니다. 해결: “Keep [list] identical.” 뒤에 구체적인 요소를 3~5개 나열하세요.
실수 2: 막연한 트리거. “When she touches the mirror”는 “When her index finger touches the glass”보다 약합니다. 물리적으로, 구체적으로 쓰세요.
실수 3: 트리거와 변신이 같은 동작을 가리킴. “When the leaves fall, the leaves turn red”라고 쓰면 Omni는 어느 순간에 맞춰야 할지 모릅니다. 트리거와 변신을 분리하세요. “When the wind picks up, the leaves turn red and start to fall.”처럼 쓰면 됩니다.
실수 4: 트리거를 생성 전 설정처럼 씀. 트리거는 준비 단계가 아니라 클립 도중에 작동합니다. “Trigger: butterfly lands. Show:…”처럼 쓰지 말고, 세 부분을 모두 담은 하나의 이어지는 프롬프트로 쓰세요.
실수 5: 변신을 여러 개 넣음. 서로 맞물린 변화 두 가지(거울 물결 + 팔)까지는 잘 됩니다. 세 가지 이상이면 대개 무너집니다. 대화형 편집으로 두 턴에 나누세요.
트리거 패턴을 쓰기 좋은 곳
제작 현장에서 자주 쓰는 경우는 다음과 같습니다.
- 표면 변화 — 물 → 얼음, 천 → 돌, 불 → 재
- 화면 속 사물 바꾸기 — 꽃 → 과일, 유리 → 금속
- 인물 상태 변화 — 차분함 → 깜짝 놀람, 피곤함 → 또렷이 깨어남
- 드러내는 애니메이션 — 닫힌 봉투 → 종이학, 오므린 꽃 → 활짝 핀 꽃
- 브랜드 연출 — “When the logo lights up, the product behind it appears”
아바타 기능 프롬프트에도 이 패턴을 쓸 수 있습니다. 이때는 피사체 자리에 @username을 넣습니다.
@your_username sits at a desk reading.
When you look up at the camera, smile and wave.
Keep the desk, the warm lamp light, and your sweater identical.
@username 호출과 작게 제한한 트리거를 결합한 형태로, 정면을 보고 말하는 인트로 영상에 유용합니다.
트리거 패턴을 쓰지 말아야 할 때
- 움직임이 없는 장면 — 풍경이나 분위기 위주의 영상입니다. 대신 동작 동사(orbit, pan)를 넣으세요.
- 계속 이어지는 변화 — 클립 전체에 걸쳐 천천히 변하는 장면은 일반 프롬프트로 쓰는 편이 낫습니다(“watercolor painting slowly forming from blank canvas”).
- 여러 숏으로 된 작품 — 서로 다른 숏 사이를 끊어 이어야 한다면 트리거가 아니라 Google Flow의 클립 연결 기능을 쓰세요.
빠른 체크리스트
트리거 패턴 프롬프트를 보내기 전에 확인하세요.
- 기본 장면이 구체적인가요(피사체 + 동작 + 장소)?
- 트리거가 구체적이고 한 프레임으로 딱 떨어지는 순간인가요?
- 변신이 서로 맞물린 한두 가지 변화인가요(세 가지 이상이 아닌가요)?
- 고정 문구에 유지할 요소가 이름과 함께 3~5개 들어 있나요?
- 전체 프롬프트가 50단어 미만인가요?
다섯 가지를 모두 지키면 변신이 깔끔하게 나옵니다. 하나라도 놓치면 다시 생성할 때마다 대개 이상한 결과가 나옵니다.
관련 글
- 전체 가이드 — 맥락 속에서 트리거 패턴을 다룹니다
- “Keep X identical” 고정 문구 — 트리거 패턴의 고정 부분을 자세히 설명합니다
- 라이브러리의 VFX 프롬프트 — 이 구조로 만든 실제 제작 예시
- 용어집 항목 — 공식 정의
출처