先に結論:透明が消えるのは背景透過の失敗とは限らない
Character Motion Studioでは、編集中のフレームをRGBA画像としてレンダリングできます。PNG連番やWebMなら、その透明度を次の形式へ引き継げます。
一方、現行のMP4書き出しはH.264 / yuv420pです。この経路ではアルファ平面を持たないため、透明度を動画へ残せません。
つまり、「元フレームが透明か」と「最終ファイルが透明を保存できるか」は別の問題です。
透明動画に必要なのはRGBに加えてAlpha
通常の色はR・G・Bの3成分で表せます。そこへ「どの程度見えるか」を持たせるのがAlphaです。
| 情報 | 役割 |
|---|---|
| R / G / B | 画素の色 |
| Alpha = 255 | 完全に見える |
| Alpha = 128前後 | 半透明 |
| Alpha = 0 | 完全に透明 |
キャラクターの輪郭には、完全透明と完全不透明だけでなく半透明の画素が多く含まれます。アンチエイリアスされた輪郭、ぼかし、影、薄いエフェクトなどです。
そのため「背景を消せるか」だけでなく、半透明のAlphaまで最終形式へ持ち越せるかが透過動画では重要になります。
現行MP4はH.264 / yuv420pなのでAlphaを持たない
Character Motion StudioのMP4書き出しは、FFmpegのlibx264を使い、ピクセル形式をyuv420pにしています。
この実装では、RGBAのAをそのままMP4へ入れるのではなく、動画化の前にRGBへ変換します。そのため、透明だった領域にも最終的には何らかの色が必要になります。
動画ファイルはコンテナ、コーデック、ピクセル形式の組み合わせで性質が決まります。Character Motion Studioの現行MP4経路はH.264 / yuv420pで、Alphaを保持しない構成です。
したがって、「MP4にしたら透明が消えた」という症状だけで、背景除去やPNG素材が壊れたとは判断できません。書き出し形式側でAlphaを落としている可能性を先に確認します。
透明MP4が黒背景になる理由
Alphaを捨てるとき、透明画素をどのRGBへ変換するかを曖昧にすると、半透明エッジで色が不安定になりやすくなります。
Character Motion Studioでは、透明または半透明を含むフレームをMP4へ送る前に、RGBA画像を黒い不透明マットへ合成し、その結果をRGBへ変換してからエンコードします。
このため、透明背景のままMP4を選ぶと、現行実装では黒背景として見えます。
「白背景(透過)」は確認表示なので、MP4へ白を焼き込む設定ではありません。背景モードを「背景あり」にし、背景色を白へ設定してからMP4を書き出します。
WebMではVP9 / yuva420pでAlphaを保持する
現行のWebM経路はlibvpx-vp9とyuva420pを使用します。ここではピクセル形式にAlphaを含められるため、RGBAフレームの透明度を動画へ引き継げます。
キャラクターだけを透明背景で書き出し、Web上で別背景へ重ねる、あるいは透過を理解する別工程へ渡す場合は、現行の4形式ではWebMが「動画としてAlphaを保持する」選択肢です。
ただし、透明を保持できることと、すべての投稿先・編集アプリがそのファイルを受け付けることは別です。最終配信先がMP4を要求する場合は、透過WebMやPNG連番を中間素材として残し、最終工程で背景を合成してMP4へ変換する方が戻りやすくなります。
PNG連番は各フレームのAlphaをそのまま残す
PNG連番ZIPは動画コーデックへ変換せず、各レンダリングフレームをPNGとしてまとめます。元フレームが透明なら、そのAlphaをフレーム単位で維持できます。
そのため、透過品質を優先したい、あとで1コマずつ修正したい、別ソフト側で動画化したい場合に強い形式です。
一方でPNG連番は、単体で「一本の動画」として再生する形式ではありません。ファイル数も増えるため、完成配信用というより編集可能な中間素材として考えると役割が明確です。
連番素材のキャンバスや基準位置は「PNG連番の作り方|サイズ・透明余白・基準点を揃える」で整理しています。
GIFの透明は1bitで半透明とは別物
GIFも透明を扱えますが、PNGやWebMと同じAlphaではありません。現行Character Motion Studioでは、透明専用のパレットインデックスを1つ予約し、各画素を最終的に透明か不透明へ割り当てます。
半透明エッジを単純なしきい値だけで切ると輪郭が欠けやすいため、実装では固定の4×4ディザパターンを使って、8bit Alphaを空間的な透明/不透明の分布へ変換しています。
| 形式 | Alphaの扱い | 半透明エッジ |
|---|---|---|
| WebM | Alphaを動画へ保持 | 保持できる |
| PNG連番 | PNGのAlphaを保持 | 保持できる |
| GIF | 1つの透明インデックス | ディザで近似 |
| MP4 | 現行経路では保持しない | 背景へ合成される |
GIFで輪郭が少しザラついて見える場合、それは元の透過PNGが壊れているのではなく、最終形式の透明表現へ変換した結果である可能性があります。
白背景・黒背景(透過)は確認用の表示
Character Motion Studioには「透明」「白背景(透過)」「黒背景(透過)」「背景あり」の4つの背景モードがあります。
このうち白背景(透過)と黒背景(透過)は、輪郭の白フチ・黒フチ・細線を確認するためのプレビューです。レンダリング時は透明として扱われます。
| モード | 画面での見え方 | 実際の背景 |
|---|---|---|
| 透明 | 市松模様 | 透明 |
| 白背景(透過) | 白 | 透明 |
| 黒背景(透過) | 黒 | 透明 |
| 背景あり | 指定色 | 指定色を合成 |
この仕組みがあるため、白で確認したから白背景として書き出される、という意味ではありません。
輪郭の白フチとAlphaについては「透過PNGの白フチ・位置ズレはなぜ起きる?」へ続けて確認できます。
透過を残すか、完成背景を焼き込むか
書き出しで迷ったら、最終用途を2つに分けます。
SNSへ投稿する完成映像なら、背景を決めてMP4へ焼き込む方が扱いやすい場面が多くあります。一方、同じキャラクターを複数背景へ使う、編集素材として配布する、別ソフトへ渡す場合はAlphaを保持した中間素材を残した方が再利用しやすくなります。
完成動画と透過素材を同じものとして扱わない。
公開用のMP4と、再編集用のWebMまたはPNG連番を役割で分けると、背景を変えたくなったときに最初から作り直す必要が減ります。
症状から原因を切り分ける
| 症状 | まず確認すること | 考えられる原因 |
|---|---|---|
| MP4だけ黒背景になる | 元フレームをPNG/WebMでも確認 | 現行MP4経路でAlphaを黒マットへ合成 |
| 白背景(透過)なのにMP4が白くない | 背景モードが「背景あり」か | 白背景(透過)は表示だけ |
| WebMでは透明、MP4では不透明 | 正常な形式差かを確認 | WebMはAlpha保持、MP4はAlphaなし |
| GIFだけ輪郭がザラつく | PNG/WebMのエッジと比較 | 1bit透明+ディザ近似 |
| どの形式でも白フチが出る | 黒背景(透過)で素材自体を確認 | 元PNGの半透明エッジRGBやマット色 |
| PNG連番で位置が跳ねる | 全フレームのキャンバスと余白 | Alphaではなく座標条件の不一致 |
まとめ
透過動画で重要なのは、元画像が透明かどうかだけではありません。最終形式がAlphaを保持できるか、変換時にAlphaをどのように処理するかまで見る必要があります。
現行Character Motion Studioでは、WebMはVP9 / yuva420pでAlphaを保持し、PNG連番は各PNGのAlphaを残します。GIFは1bit透明へ近似し、MP4はH.264 / yuv420pへ変換する前に透明部分を黒マットへ合成します。
したがって、MP4で透明が消えたときは、背景透過の失敗と決めつけず、素材のAlpha・背景モード・書き出し形式の3段階を分けて確認すると原因を特定しやすくなります。