概要
Gensparkから利用できる動画生成モデル3種に同一のプロンプトを与え、生成された映像が物理法則を満たしているかを検証した。評価対象は画質ではなく、水量の保存や紙の面積といった、成否が客観的に判定できる物理量のみ比較する。
検証方法
対象モデル
系統の異なる3モデルを選定した。
| モデル | 開発元 | 解像度 | 尺 |
|---|---|---|---|
| Gemini Veo 3.1 | 1280×720 | 8秒 | |
| Grok Imagine Video v1.5 | xAI | 848×480 | 8秒 |
| Kling V3 | 快手 | 1280×720 | 5〜10秒 |
解像度と尺が揃っていないため、厳密な比較としては不十分だが、本稿の観察対象は解像度や尺に依存しない性質のものである。
プロンプトの設計方針
全プロンプトを以下の型に統一した。
[動作を1文] + [観察対象となる物理的変化] +
Static locked-off camera, [画角], plain neutral background,
even lighting, no text, no camera movement.
Static locked-off camera(カメラ固定)を指示することで、フレーム間で背景がずれなくなり、静止画での比較が容易になった。
フレーム抽出
動画を再生しながらの判定では見落としが生じるため、
今回は、生成された動画から等間隔でフレームを抽出し、静止画として比較した。
また、Klingのみ尺が異なるため、秒数の絶対値ではなく尺に対する割合で抽出している。
for f in *.mp4; do
base="${f%.mp4}"
dur=$(ffprobe -v error -show_entries format=duration -of csv=p=0 "$f")
i=0
for pct in 0.02 0.20 0.39 0.58 0.77 0.96; do
t=$(awk -v d="$dur" -v p="$pct" 'BEGIN{printf "%.2f", d*p}')
ffmpeg -v error -ss "$t" -i "$f" -frames:v 1 -vf "scale=900:-1" \
-y "frames/${base}_${i}.png"
i=$((i+1))
done
done
課題1:湯気の立つコーヒー(易)
A white ceramic mug of black coffee on a wooden table, steam
rising continuously from the surface. Static locked-off camera,
close-up, plain neutral background, natural soft lighting,
no text, no camera movement.
3モデルとも成功した。湯気は上昇を続け、途中で消失も逆流もしていない。マグカップの形状も8秒間保たれていた。
課題2:コップに水を注ぐ(中)
A half-full glass pitcher stands upright on a table next to an empty
drinking glass. A hand lifts the pitcher, pours water into the glass
until it is nearly full, then places the pitcher back upright on the
table. Both the pitcher and the glass are fully visible inside the
frame at all times. Static locked-off camera, eye-level medium shot,
plain neutral background, even lighting, no text, no camera movement.
3モデルともピッチャー全体が画角に収まっており、開始時と終了時の水位を
比較できる。目視で読み取った限り、3モデルとも水位は低下している。
水量の保存という点では、いずれも破綻していない。
ただし注ぐ動作そのものを追跡すると、3モデルの挙動は大きく異なっていた。
Gemini:傾きが不足したまま、手元から出水する
2つの異常がある。
第一に、水流の発生位置が注ぎ口ではない。手で把持している位置、指の裏側付近から水が出ている。
第二に、傾きが不足している。ピッチャー内部の水面は水平な直線として明確に描画されているが、その水面は注ぎ口の縁よりも大きく下にある。本来であれば水面が縁に達するまで傾けなければ流出は起こらない。にもかかわらず、水面と縁の間に空間を残したまま流出が継続している。
水面を水平に保つ処理は正確でありながら、その水面が縁に達しているかという判定は行われていなかった。
Kling:注ぐ動作を正しく再現している
3モデルで唯一、動作として正しい。傾けていく過程で水面が注ぎ口の縁に到達し、その時点から流出が始まる。水流は注ぎ口から発生し、傾斜が深まるにつれて流量が増加する。グラス側の水位もこれに連動して上昇する。
Grok:把持の瞬間に容器が回転する
注ぐ動作自体は正しい。水面が縁に達してから流出が始まり、水流は注ぎ口から出ている。
問題は把持の瞬間にある。3コマ目では取っ手が右側にあり、手は左方向から接近する。5コマ目では取っ手が左側に移動しており、手はそれを把持している。手を取っ手へ移動させるのではなく、取っ手が手の位置まで回転してきている。
課題3:紙を半分に折る(難)
Two hands fold a square sheet of red origami paper in half diagonally
on a table, pressing the crease flat, so the paper becomes a triangle
half the size. The entire sheet stays fully visible inside the frame.
Static locked-off camera, top-down medium shot, plain neutral
background, even lighting, no text, no camera movement.
判定方法:赤い紙の面積をピクセル単位で計測する
フレームごとに赤い紙の占有面積を計測した。
import glob
import numpy as np
from PIL import Image
for m in ["gemini", "grok", "kling"]:
areas = []
for p in sorted(glob.glob(f"seq/{m}/*.png")):
a = np.asarray(Image.open(p).convert("RGB")).astype(int)
R, G, B = a[..., 0], a[..., 1], a[..., 2]
mx, mn = a.max(2), a.min(2)
sat = np.where(mx > 0, (mx - mn) / np.maximum(mx, 1), 0)
mask = (R > 90) & (R > G + 40) & (R > B + 25) & (sat > 0.30)
areas.append(mask.sum())
base = max(areas[:3])
print(m, [round(100 * x / base) for x in areas])
抽出は ffmpeg -vf "fps=6,scale=480:-1" で行った。手による遮蔽が計測値を押し下げるため、推移を確認する。
計測結果
| モデル | 面積推移(開始=100%) | 最終値 | 判定 |
|---|---|---|---|
| Grok Imagine v1.5 | 100 → 41 → 67 | 67% | 成功 |
| Gemini Veo 3.1 | 100 → 71 → 79 | 79% | 失敗 |
| Kling V3 | 100 → 33 → 45 | 45% | 失敗 |
Grokは対角線で正しく折っている。途中の41%は折る動作中に紙が立ち、見かけの投影面積が減少したものである。最終値67%は理想値50%より大きいが、折り返し部分の陰影や手の遮蔽が計測に影響しているためであり、映像上は正しい三角形が形成されている。
Geminiは面積がほぼ減少しない。79%という値は角を1つ折った場合に相当し、実際の映像もそのように見える。半分には折られていない。
Klingは三角形を形成せず、紙を細長い円錐状に巻いている。33%まで減少した後に45%へ戻る点も、折り紙の挙動としては不自然である。
結果の整理
| モデル | 湯気(易) | 水を注ぐ(中) | 半分に折る(難) |
|---|---|---|---|
| Gemini Veo 3.1 | ○ | ✕ 傾き不足のまま手元から出水 | ✕ 角を1つ折るのみ |
| Grok Imagine v1.5 | ○ | △ 注ぎは正常だが容器が回転 | ○ |
| Kling V3 | ○ | ○ | ✕ 円錐状に巻く |
思ったこと・考えたこと
映像の自然さと動作の正しさは独立している
3モデルとも、映像として破綻している箇所はなく、
光の回り込み、影、ガラスの屈折、水面の描写はいずれも自然であり、
再生しているだけでは異常に気づきにくい。しかし動作の正しさは3モデルで一致しなかった。
水を注ぐ課題で正しかったのはKling V3のみ、
紙を折る課題で正しかったのはGrok Imagine v1.5のみである。
両方を満たしたモデルは存在しなかった。
評価課題は単純であるほどよい
本検証で有効だったのは、課題を単純な形に落としたことである。
「紙を半分に折る」は、面積が半分になったかどうかという単一の数値で判定できる。
判定基準が一意であれば、観察者の印象が入り込む余地がない。複数の動作と状態変化
が同時に要求される課題では、何がどこで失敗したのかを切り分けられず、判定は映像
の完成度に引きずられる。
水の課題も同様である。「開始時と終了時に容器を直立させる」という一文を加える
だけで、同じ姿勢どうしで水位を比較できる条件が整うと考えた。











