タイトル | : Re5はじめまして。スケユーと申します。 |
投稿日 | : 2016/03/28(Mon) 23:26:25 |
投稿者 | : 管理人 |
参照先 | : |
いろいろ調べていただきありがとうございます。
ひとまずこちらが知っていることとして、OSに標準のMPEG1コーデックはナゼかDirectShowでうまく認識出来ないようです。
Win10では大丈夫だった気がしますが、charatbeatHDX側で要求しているフォーマットに対応していないのかもしれません。
※K-LiteにもMPEG1のデコーダーが入っており、こちらは問題なく使用出来ます
さて、ソースコードを見直したところ仕様的に忘れていたことがありましたので、
それについてご報告いたします。
現在のcharatbeatHDXでは動画は常に256x256として生成するようになっております。
これはBMSの仕様ではBGAは256x256で作成することになっていたのと、
また当時のスペック的にもそれ以上の解像度では処理落ちが発生してしまうといった懸念があったため、
内部ではどのような解像度もいったん256x256に収めるように処理しています。
問題はこの時フィルタをかけて縮小することはせず、
単にドット単位で近いピクセルを参照する仕様のため、
これで画質がさらに悪くなっているのだと思われます。
ということで、次回のアップデートでは固定256x256の他に、
ネイティブなサイズを使用出来るようにしたいと思います。
なお、高解像度では低スペックPCでは再生が追いつかなくなるといった問題に加え、
これが影響してゲーム自体が処理落ちしてしまうといったことも考えられますので、
その際はなるべく軽いコーデックを採用していただければと思います。
それとネイティブサイズについて1つ問題があります。
それは動画のサイズが2の累乗になっていない場合、グラフィックボードによっては
ものすごく汚く表示されてしまうことがあります。
当時はこのような問題に対処するため、一度内部で2の累乗のテクスチャを生成し、
その左上を原点にフレーム画像を描画するようにしていました。
・1280x720の動画の場合、必要なテクスチャは2048x1024となる
□□□□□□□□□□□■■■■■
□□□□□□□□□□□■■■■■
□□□□□□□□□□□■■■■■
□□□□□□□□□□□■■■■■
□□□□□□□□□□□■■■■■
■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■
※この時あまった右下部分は真っ黒な状態となる
例えばこれを2Dとして表示する場合、上記の白い部分を切り抜いて描画するだけなので特に問題は起こりませんが、
これを3Dモデル内に貼り付けたい場合、場合によってはこの黒い部分も表示対象となってしまうため、
おかしな表示になってしまいます。
3Dモデルと言うのはテクスチャの位置をピクセル単位では持っておらず、
UV座標という縦と高さをそれぞれ0〜1とした値で持っているため、
これにより画像の低解像度や高解像度関係なく貼り付けられるといった利点がありますが、
上記のような特殊なテクスチャを作成してしまうとこれが破綻してしまいます。
なお、charatbeatHDXでも動画を3Dモデルに貼り付けることができるので、
作成するテクスチャは特に2の累乗にはいたしませんが、
場合によっては汚く表示されてしまうことがあることを覚えておいていただければと思います。
最後に「#MOVIE」ですが、これはcharatbeatHDX(もともとは前作のBM2DXEmuで実装)専用のBMSコマンドです。
このコマンドで動画を指定すると、ゲームの最初から自動的に再生がスタートします。
これは世界初(自伝w)でBMSプレイヤーで動画対応したBM2DXEmuの売りでもありました。
そのあとで他のプレイヤーでは#BMPzzコマンドにて動画が指定出来るようになりましたが、
こちらをcharatbeatHDXで逆輸入した形となっています。
#MOVIEでは常にゲームの最初から動画が再生されてしまうため、
曲に合わせるために最初の空白を調整してあげる必要がありますが、
#BMPzzでは表示するタイミングをBMSで制御出来るという利点があります。
しかし問題は#BMPzzは本来1枚の画像を指定するものを、動画も指定出来るようにしたという経緯があり、
BMSプレイヤー側から見れば指定されたファイルが画像なのか動画なのか判断が付きません。
そこでcharatbeatHDXでは、#BMPzzで指定したものが動画なのか判断するために拡張子を見るようになっています。
※その拡張子が前のレスに列挙したものとなります
変わりに#MOVIEは常に動画ファイルを指定するわけなので拡張子という概念はありません。
DirectShowが解析出来るのであれば、極端に言えば元がmp4なのにtxtという拡張子を付けても動画として認識します。
- WebForum -