Stable Diffusion 用 prompt 控制鏡頭距離及角度

在 Stable Diffusion 中有時人物的大小遠近好像很隨機,除了用 ControlNet 其實可以利用 prompt 輸入 拍攝電影的鏡頭控制術語用來控制距離及角度。

Stable Diffusion 用 prompt 控制鏡頭距離及角度
Stable Diffusion 用 prompt 控制鏡頭距離及角度

English Version

在 Stable Diffusion 中有時人物的大小遠近好像很隨機,除了用 ControlNet 其實可以利用 prompt 輸入拍攝電影的鏡頭控制術語用來控制距離及角度。

電影拍攝時的鏡頭距離參考圖
Dark Sushi Mix 大颗寿司Mix - Colorful | Stable Diffusion Checkpoint | Civitai
FTU-NoiseOffset0.5fp16 was just the temporary name of colorful version when I tested the model. I don’t know how to change the model name in gerera…

此教學採用 Dark Sushu Mix Colorful 為 checkpoint

鏡頭距離

我們把可以使用的視角 prompt 放進 X/Y/Z plot 比較一下,為了突出效果要提高權重,盡量不要加入面部描述 e.g. beautiful face ,否則多數都會變成半身照。以下prompts 會加上 1.5 權重。

  • extreme close-up 超近鏡
  • close-up 近鏡
  • medium close-up 中近鏡
  • medium shot 中景鏡
  • long shot 遠鏡
  • establishing shot 場景鏡
  • point-of-view 主觀視角
  • cowboy shot 西部牛仔常用的鏡頭,見到上半身以及大腿(為了見到拔槍)
  • medium full shot 中風全景鏡
  • full shot 全景鏡
  • upper body 上半身
  • full body 全身
使用不同的 prompt 去控制鏡頭距離

出來的結果意外地有些 prompts 很相似,不過再配合其他 prompt 可以更穩定地控制距離。

  • extreme close-upclose-upmedium close-up 都是放大眼睛/面部為主,但有時extreme close-up會放大更多。
  • medium shotlong shotmedium full shotfull shot 看起來差不多,medium shot有時候會比 full shot 更近一點,都是顯示臀部以上到頭頂的位置,因應場景這幾個 prompt 的距離可能會有些變化。
  • establishing shot 的背景會比較明顯,如果主體是建築時人物可能會更細。
  • point-of-view 角度會因應人物有點轉變,背景通常比較 wide,角度跟主體未必是同一水平視角。
  • cowboy shotcowboy 污染變了牛仔裝,距離跟 medium full shot 差不多但距離比較穩定,一定會顯示臀部以上到頭頂。
  • upper body 會顯示人身上半身,範圍可能由臀部以上到胸以上。
  • full body 是唯一可以見到全身的距離。

經測試後由近至遠可用的鏡頭 - extreme close-up > close-up > medium close-up > upper body > medium shot > medium full shot > full body

point-of-viewestablishing shot 會環境有所影響所以不適合控制距離。


鏡頭角度

攝影一樣有不同的拍攝角度術語可供參考

掌握距離然後就是角度,由最基本的前後左右再加一些攝影角度,一樣加上 1.5 權重,因為角度比較多我分成兩張。

  • front view 正面
  • bilaterally symmetrical 左右對稱
  • side view 側面
  • back view 後面
  • from above 從上拍攝
  • from below 從下拍攝
  • from behind 後拍
  • wide angle view 廣角鏡
  • fisheyes view 魚眼鏡
  • macro view 微距
多種視角 prompts
  • overhead shot 俯視
  • top down 由上向下
  • bird's eye view 鳥瞰
  • high angle 高角度
  • slightly above 微高角度
  • straight on 水平拍攝
  • hero view 英雄視角
  • low view 低視角
  • worm's eye view 仰視
  • selfie 自拍
另一批視角 Prompts

出來的結果跟字面表示的角度差不多,也有些角度其實是重複的,也有一些受字面影響而受到污染。

  • front view straight on 就是正面,但不一定是絕對正面,straight on 因為水平拍攝的角度所以背景也不會歪。
  • bilateral symmetry 正面兼左右對稱,比正面更準確。
  • side view 向左/向右都是隨機的。
  • back viewfrom behind 都是背面, back view 會近一點,而且通常露背。
  • from above overhead shot high angle slightly above 都是由高角度影向主體, overhead shot 角度較高, high angle 會背景比較闊一些。
  • from below 由下方偷拍 (?) 的視角,天空通常會筒狀變形。
  • wide angle 背景會有一些筒狀變形 fisheyes view 的變形效果會更強,但 fisheyes view 受到污染,總會拿著相機。
  • macro view 變了拍花或微細的物件。
  • bird's eye view 從高角度影高去同時會見到廣闊的背景,但會有雀鳥出現。
  • top down 的角度很糟糕 (?),變成正上方被女生抱住的視角。
  • hero view 角度不對,人物也受污染穿上了英雄戰衣。
  • low view 角度不算很低,有點懷疑沒有效果。
  • worm's eye view 完全錯了,有很多蟲及怪眼,跟角度完全沒關係。
  • selfie 人物會伸手自拍而且不會太遠。

其中 fisheyes view 雖然會污染但因為視角比較特別還是有用的,但 hero viewworm's eye viewmacro view 受污染角度又不明顯可以放棄。


距離+角度=取景

了解不同的鏡頭距離及角度後就可以輕鬆使用 prompt 生成出想要的取景。

1girl, beautiful, solo, (top down:1.5), (close-up1.5), lying in car
1girl, beautiful, solo, (from below:1.5), (full body:1.5), night, street
1girl, beautiful, solo, (establishing shot:1.5), (side view:1.5), in a bus, reading
1girl, beautiful, solo, (from above:1.5), (selfie:1.5), (close-up:1.5), in swimming pool

總結

由於以 prompt 取景有時會受其他 prompt 影響,建議先用簡單 prompt 取景,然後用 controlnet 去固人物動作,既可以得到想要得畫面,並不怕人物受到影響。


SDXL 版本可以參考這篇

SDXL Prompts 進階指南 (1) - 鏡頭視角距離
SDXL 版本的 prompts 鏡頭距離視角教學,可以單純使用 prompts 就控制鏡頭距離視角,而不用 ControlNet 或其他 extensions。同時也新增場景構圖 prompts 以供參考。