透過率付き動画を考えてみる

なんかいい話題、ということでこんなことを考えてみます。動画の形式の本流からは外れていますがADVシステムを考える上では必要な要素に思えるので個人的に考えているためです。普通の動画には透過率なんて合っても仕方が無いですしね。その代わりADVシステムだとアニメーションを行うときに背景画の上で透過率付きで動かす、というのはあり得ると考えていますのでそのためです。だいたいのADVシステムでそのような状態が必要になると背景すら含んだ動画を使うか透過率付きPNGを連続描画することで似た様な状態は作れますが・・・。

 

今現在透過率付き動画をサポートしているメジャーな形式は?

というとあまりないはずです。一応WebMであれば変換ツールをうまいことしてやれば透過率付き動画を作成することができる、ということまでは知っているのですが。そのほかの形式でサポートしている物って無いと思います。x264やHEVCなんかは基本的に映像配信を念頭に置いているので透過率なんて考えることに意味は無いでしょうからね。

 

透過率の性質について考える

動画を変換するときはまあだいたいはブロックに分割して動き補償やら各種DCTなどの変換を行って符号化を行っていくのですが、透過率についてはいろいろと性質が異なる部分が多いです。いくつか考えられる性質をあげるなら

  • 透過率では「0%」と「100%」が重要になる。中間は曖昧であってもかまわない(と思われる)がどちらかに傾いた部分で中間をとられると画像が不自然になる
  • 透過率が「0%」となっているブロックは色情報をとる必要が無い(描画対象ではないため)。この部分の圧縮に関しての定義など
  • 透過率と色との相関関係の取り方が難しい(ように感じる)。また、透過率でオブジェクトの輪郭抽出を考えたりもできるのでこのあたりをどう考えるか、が必要。

というところでしょうか。特に透過率にもDCT系の変換を施すことを仮定するとブロック内に複数の透過率が混じっていたときに透過率が拡散してしまう恐れがあり、そうなると0%や100%といったきっちりした値がとれなくなると言う問題が現れます。、100%の部分に多少透過が入るのはまあいいとしても0%の部分に色が入るとそれは別物になってしまう可能性が高いです。このあたりは圧縮率との兼ね合いもありますけれども。

ちなみに、私が過去にADV用にMPEG1ベースで透過率をつけて動画形式を考えたときには透過率部分は色との相関がないものとして考え、かつ普通にDCTの対象として処理していました。つまるところは上記の問題をきれいに無視したわけですね。まあ、ほとんど使っていなかったので何ともいえないのですが、次に考えるときにはどうにかしようと思っていたところではあります。

 

一度WebMの透過率付き動画を試してみないとまずいか

実際に透過率付き動画を(ADVゲームのエフェクトとしてあり得る状態を仮定して)作成してみて試してみたいところですね。ただ、WebMのコードは公開されていますから自分のライブラリに連結されているのですが透過率付きに関しては処理をしていないのでその場合どうなるのかを仕様書から引っ張ってこないとまずい様な気がします。WebPの仕様などとも連動しているはずなのでそれなりにうまく再生できるとは思うのですが・・・。


透過率付き動画を考えてみる」への2件のフィードバック

  1. dev_2nd

    初めまして。
    当方は趣味でゲームプログラムを作っているサンデープログラマーです。

    http://1drv.ms/1120hXR

    私も今作っている↑のRPG用プログラムで動画を利用しようとしましたが、うまくいきませんでした。
    透過率をサポートした動画形式が何かあるだろうと思っていたのですが、探してみると見つからない。

    戦闘画面で攻撃エフェクトに使えばアニメーションのピッチ時間や効果音との同期が楽になると思ったのですが、目論見が外れてしまいました。
    テスト用にMediaFoundation(SourceReader)とWASAPIを使用した動画再生機能を実装したのですが、今のところ無駄になっています。

    返信
    1. 音宮 志久 投稿作成者

      私もはじめにADVシステムを作ったときに同じようなことを考えまして悩んだのですよね・・・。
      一応トップから行ける場所にこのblogでも触れていますがMBC(Movie Block Code)というMPEG1をベースとした透過率をサポートした動画形式を試しで作っています。
      暇があれば改良するかWebMベースで再生できる様なライブラリを作成するかも知れませんが利用できるようでしたら利用してみると良いかも知れません。
      エンコーダも公開していますし、再生はDirectShowからDirectShow Extend Libraryを使って透過率再生ができる様になっています。

      返信

コメントを残す

メールアドレスが公開されることはありません。

*

この記事のトラックバック用URL