動画と静止画

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ネス

動画と静止画

#1

投稿記事 by ネス » 15年前

動画を再生しながら音楽を流すことはできました。
しかし、再生中の動画の上にキャラの立ち絵や会話フレームなどを表示させようとしてできませんでした。
こういった作業というのは、プログラミングですることでなく、動画ソフトなどでするのでしょうか?

softya

Re:動画と静止画

#2

投稿記事 by softya » 15年前

Windowsの動画についてはあまり詳しくないですが、動画をスプライトに貼りこまないと上に立ち絵や会話フレームを表示することは難しいと思います。
どの様にして動画を再生しているか分かりませんので参考意見として・・・。

ネス

Re:動画と静止画

#3

投稿記事 by ネス » 15年前

レスありがとうございます。

>どの様にして動画を再生しているか分かりませんので参考意見として・・・。

この回答はsoftyaさんの意図を汲みきれていないかもしれませんが、PlayMovie関数で再生させています。
立ち絵、枠などはLoadGraphScreen、音楽はPlayMusicを使っています。

アニメのようにそれなりの時間流れる動画を再生するのではなく、フリーの動画素材などで、キャラの心境や場面の雰囲気、攻撃や防御に使えそうな動画を数秒流すような使い方をしています。

音楽を再生させた後、動画を再生させ、同じ要領で、立ち絵などの画像も読み込まれるかと思ったのですが、画面上では動画が再生されているだけで、立ち絵や枠は一切、上に表示されなかったので、どうすればいいのだろうと思ったしだいです。
動画再生命令の後、画像表示命令などを使えば、当たり前のように動画の上に画像が表示されると思っていたものですから。

ちなみに再生ファイルの種類は、フリーなので、色々なものがありましたが、どれもPlayMovieで再生できる種類のものばかりではありました。

Dixq (管理人)

Re:動画と静止画

#4

投稿記事 by Dixq (管理人) » 15年前

どうもDXライブラリで実現しようとしているようですね。
動画の上にあれこれゲーム的要素を表示することは可能です。

こちらで私が公開しているゲームに多用しています。
http://dixq.net/Aerobeat/

ただ、これはゲーム状況によって変化する要素であるため、ゲーム内で計算・描画していますが、
毎回変わらない要素であるなら、あらかじめ動画として作っておくべきでしょう。

私は動画編集ソフトにおいて、Windowsムービーメーカー、VideoStudio12やAdobe Premiere CS4で普段編集しています。
もし動画編集ソフトに興味がおありでしたら別途聞いてください。

ただネスさんの行いたい仕様がまだいまいちよくわかっていません。
ジャンルは何でしょうか?サウンドノベル?アクション?格ゲー?

何かの動作の背景に動画を使うような使い方であれば出来ますよ。

ネス

Re:動画と静止画

#5

投稿記事 by ネス » 15年前

管理人さん、レスありがとうございます。
>ただネスさんの行いたい仕様がまだいまいちよくわかっていません。
確かに色々と欲張って情報をくっつけ過ぎました。
実際、達成できているレベルでは、サウンドノベルに該当する思います。
物語をゲーム画面の雰囲気で読んでいくような感じです。ただ、
「バトルシーンのごときもの」もあるので、あいまいな質問になってしまいました。
選択肢によって分岐するような仕組みも所々あります。


とはいえ結局のところ、
>何かの動作の背景に動画を使うような使い方であれば出来ますよ。
まさに、ここに落着すると思います。立ち絵に様々な表情があるので、それに合わせて背景として動画を再生する感じです。文章を表示する際も、背景としてしか使いません。


>毎回変わらない要素であるなら、あらかじめ動画として作っておくべきでしょう
一応ノートに下書きやシーンのハコガキみたいなものを用意してはいますが、結局は場当たり的に作っているので、キャラのポジションやフレームの位置などは場面によってバラバラです。動画を背景にするという点では、どれも共通していると言えると思います。

じっくりと何度も試したわけではないですが、上記の命令で動画を再生した後、静止画を重ねて表示させることができなかったもので、こちらで質問させてもらったしだいです。
まだ調査中ですが、Windowsムービーメーカーだとテロップ(文章)を動画に重ねられないとか、同時に複数の画像を動画の上で表示できないとか、他のソフトは英語表記だとかいう情報もあったので、動画ソフトについて分からないのもあります。

なんだか意味不明な文章になってしまいましたが、できることなら、DXライブラリの命令によって、動画を背景として、その上に画像や文字を表示できたらという、そんな仕様です。
最後に、自分が今作っているものはあくまでノベルゲームっぽいのですが、どうにかRPGとかの様相も取り入れたいと思っていまして、自分なりに当面の目標・参考としている動画があります。

>[nico]http://www.nicovideo.jp/watch/sm5740410[/nico]
どうやら内容的にはツッコミ所の多い動画なようですが、自分的にはゲームの基本や動画なども扱っていて、最初の到達目標のように思っています。仕様が分からないとのことですので、また、初心者ゆえ自分自身いちばんまだ見えていないと思うので、何らかの参考になればと思い、リンクを置かせてください。まだまだ不慣れなので、掲示板上、何か不都合でしたら、リンクなど削除してください。長文になってすいませんでした。

Dixq (管理人)

Re:動画と静止画

#6

投稿記事 by Dixq (管理人) » 15年前

リンク先拝見しました。
これ位であればDXライブラリなら比較的簡単に実装出来そうです。
ただし、一つ一つを実装する技術は簡単なもので大丈夫ですが、
RPGはイベント処理やフラグ管理・・・何よりデバッグ・検査が大変なので、規模によりますが、
大きなものを作るなら難易度は高いかもしれません。
(とりあえず似たような物でよければ比較的簡単だと思います)

上で紹介した私の作ったゲームは、
ニコニコから動画をダウンロードしてきて、自分で作った譜面をフォルダに入れたら遊べる音楽がドンドン増えるという仕様の音ゲーです。
音ゲーの背景には動画を使っていますから、その上にゲーム画面を重ねています。

特に重ねるときに工夫が必要なわけではありません。
動画を描画したら、その上に上書きすれば良いだけです。

>上記の命令で動画を再生した後、静止画を重ねて表示させることができなかったもので

具体的なプログラムソースを投稿して頂けないでしょうか?
どこかに思わぬ間違いがあるのかもしれません。

>Windowsムービーメーカーだとテロップ(文章)を動画に重ねられないとか、同時に複数の画像を動画の上で表示できないとか

前者は可能ですが、後者は無理ですね。
もし一度も動画編集の経験が無いならまずWindowsムービーメーカーで色々動画を作ってみてはいかがでしょう。
その上でまだ物足りなければまずVideoStudio辺りを購入してみたらよいと思います。
1万円ちょっとなので手頃です。
それでも物足りなければPremiereを購入すればいいと思いますが、出来ることが多すぎるのでこっちは使いこなすのが結構大変です。値段も結構しますし・・。
動画を使ったゲームを作るなら必ず動画編集の機会があると思いますので、VideoStudio辺りは持っておいた方がよいかもしれませんね。

>掲示板上、何か不都合でしたら、リンクなど削除してください

いえいえ全く構わないです。
あれこれ規約には書いていますが、常識の範囲内であれば基本的に何をして頂いても良いと思っていますので
お気軽にご投稿下さい^^

ネス

Re:動画と静止画

#7

投稿記事 by ネス » 15年前

>具体的なプログラムソースを投稿して頂けないでしょうか?
>どこかに思わぬ間違いがあるのかもしれません。
助かります。以下がソースです。

#include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{

ChangeWindowMode( TRUE ) ; // ウインドウモードに変更

if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}




PlayMovie ( "無題.wmv" , 1 , DX_MOVIEPLAYTYPE_BCANCEL ) ;
LoadGraphScreen ( 20, 100, "005.png", TRUE ) ;



WaitKey ( ) ;
DxLib_End() ; // DXライブラリ使用の終了処理



return 0 ; // ソフトの終了
}


動画が再生されるとすぐ次の命令に移り、動画が流れている間にも画像が表示されるのだろうなという意図でした。そして、動画再生が終わっても、ウェイトキーで画像だけが描画されている状態で停まっているのかなという予想でした。
しかし実際は、動画再生が終わった後、「えっ、今さら?」というタイミングで、画像が表示されるという手落ちを自分はやらかしてしまっています。画像だけが画面に残されるのは予期していたとおりでしたが。

うまく言えないのですが、描画の際、動画と静止画だったら、なんというか、動画の方が強いというか、優先される感じなのかな~という印象が今のところです。試しに静止画を先に表示させて、動画を再生させてみたのですが、静止画はまったく表示されませんで、動画のみが再生されました。動画の長さが短いためなのか、もうちょっと自分なりに調べてみますが、現状ではこのような状態です。

お手すきの際、またお知恵をお貸しください。

スキマ妖怪

Re:動画と静止画

#8

投稿記事 by スキマ妖怪 » 15年前

PlayMovie()関数は、動画が再生し終わるまで関数内で終了待ちするので
終わるまで他の処理は行われませんよ( WaitKey()の前にPlayMovie()内で待ちます )

代わりに
LoadGraph() + DrawGraph()系関数ではダメですか?

Dixq (管理人)

Re:動画と静止画

#9

投稿記事 by Dixq (管理人) » 15年前

補足すると、ゲームは裏画面処理をしないといけません。

DXライブラリには本格的にゲーム制作をする為の関数と試験的な描画などに使うための関数があるので、少々解りにくいかもしれませんが
ゲームは基本的に1秒間に60回メインループをまわらなくてはいけません。

DXライブラリの使い方についてはゲームプログラミングの館にかいてありますので、良ければ参考にしてください。

http://dixq.net/g/

ネス

Re:動画と静止画

#10

投稿記事 by ネス » 15年前

スキマ妖怪さん、レスサンクスです。
>代わりに
>LoadGraph() + DrawGraph()系関数ではダメですか?
はい、早速、試してみました。


#include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{

ChangeWindowMode( TRUE ) ; // ウインドウモードに変更

if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}

int MovieGraphHandle ;

MovieGraphHandle = LoadGraph( "無題.wmv" ) ;




PlayMovieToGraph( MovieGraphHandle ) ;


while( ProcessMessage() == 0 )
{
DrawGraph( 50, 0 , MovieGraphHandle , FALSE ) ;
LoadGraphScreen ( 20, 100, "005.png", TRUE ) ;
WaitTimer( 10 ) ;

}




WaitKey ( ) ;
DxLib_End() ; // DXライブラリ使用の終了処理



return 0 ; // ソフトの終了
}


こんな感じで、とりあえず動画と静止画を同時に表示させることに成功しました。
ただ、具体的な意味や、よりスムーズに見せるための処理などはこれから少しずつ学ばせもらいます。
>ゲームは基本的に1秒間に60回メインループをまわらなくてはいけません。
このあたりの意味など、「ん? 60回? 何が? どこが? なんでぇ~っ?」というのが正直なところなのです。


音ゲーの方、拝見しました。動画、確かにたくさん使われていますね~。あと左側のウィンドウが出現する際も、ただポンと出現するのでなく、なんかさりげなくオシャレというかスマートで、点滅してたり光線で右側の項目と結びついたり、「いったいどうなってんだ~?」という驚きを隠せない感じです。

自作ゲーム紹介のページのRPGも拝見し、「初めてでこれか~」とこれまた驚き、音ゲー見ては、「成長度ハンパないな~」と、これまたまた驚き。
余談ですが、管理人さん、作ったゲーム売って大いに食べていける人なのでは。。。もっと大きな世に出ていくべき人なのではという疑念が。。。任○堂さんも業績を下方修正したと小耳にはさみましたし、今が売りみ時なのではないですか~とか思ったり。(笑)


レスをくださった皆さん、今回の件、大いにたすかりました。
一度こうして「うまくいった感」を得られると、細かな部分の勉強もそんな苦じゃなくなるので助かります。
ありがとうございました。

ネス

Re:動画と静止画

#11

投稿記事 by ネス » 15年前

あ、忘れてました、これで解決です。

Dixq (管理人)

Re:動画と静止画

#12

投稿記事 by Dixq (管理人) » 15年前

> このあたりの意味など、「ん? 60回? 何が? どこが? なんでぇ~っ?」というのが正直なところなのです。

この辺はDXライブラリを使っていく中で自然に解っていくとは思いますが、一応お答えします。
ネスさんが普段どんなゲームをされているか解りませんが、「60FPS」のような表示を見たことはないでしょうか。
FPSは「Frame Per Second」つまり1秒間に何フレーム描画するかということです。
一般的なゲームは60FPSで動いています。
本格的なゲームはベストエフォートで、FPSは変化するかもしれませんが、
フレーム数固定で計算する方が簡単なので、素人が作るゲームはFPS固定が多いです。
30FPSのものも時々ありますが、STGのような鮮明な動きが必要なものはたいてい60FPSですね。

また、一般的にPCで使われているモニタも60FPSの物が多いです。
ここで、ゲーム画面はモニタがリフレッシュするタイミングでモニタに反映しないといけません。
モニタが画面を書き換えている途中で画像を書いてしまうと半分だけ描画したような状態になったりして、結果としてそれが続くとチラチラしたりしてしまうのです。

そこで、ゲーム中描画するときは「裏画面」という見えない画面の領域に描画しておき、
モニタがリフレッシュするタイミングでそれを表に反映するようにしないといけないのです。
この辺はゲームプログラミングの館を13章辺りまで読めばわかると思います。

> 音ゲーの方、拝見しました。

ありがとうございます^^

> 自作ゲーム紹介のページのRPGも拝見し

中学生じゃないのに厨二病が発症s(ry
ゲームとしてはそこそこ動いていましたが、プログラムは本当にひどいものでしたよ^^;

> ゲーム売って大いに食べていける人なのでは

私はそんな大そうなスキルは持ち合わせていないので無理でしたが、
でも一日中自分が好きなゲームを作って食べていければ幸せですね^^
しかし今現在私は勤めたいと思っていた所に勤めることが出来ているので、全く不満はないです。
ゲームとは関係ないですが、ゲームは趣味でやっていけばいいと思っています。

ネスさんも頑張ってください^^

ネス

Re:動画と静止画

#13

投稿記事 by ネス » 15年前

>自然に解っていくとは思いますが、一応お答えします。
解説までありがとうございます。今13章までをじっくり取り組んでいるところです。じっくりやるのにも、虫食い的に学ぶにも、ピタッと知りたいことが分かるので助かります。

>中学生じゃないのに厨二病が発症s(ry
いえいえ、人間、幼い日の気分に戻ったり、どっかに感情の捌け口は必要だとこないだテレビで医者も言ってましたからいいと思います、皆どっかで本当はそういう部分、あるはず、日頃は隠してるけど(笑)

>全く不満はないです。
あ、今思い出しましたが、そういえば音ゲーの動画で、「リア充め~」とやたらとツッコまれてましたぞ~(笑)
動画を見ながら、「ま、ツッコまれてもしゃーない」と、自分も決して同情はいたしませんでいたぞ~(笑)
「そうだ~リア充だぁ~、このやろぉ~、羨ましいだろう~」と、書き返すべきです(笑)

冗談はさておき、こちらでDXを学んでいると、Win32APIにも抵抗がなくなるので不思議です。「こうすればいいんだな~」といった具合に、学習の要領みたいなものを感じとれるからかもしれません。

暑い日が続いているので、管理人さんも体調にはお気を付けてください。

ネス

Re:動画と静止画

#14

投稿記事 by ネス » 15年前

>「そうだ~リア充だぁ~、このやろぉ~、羨ましいだろう~」と、書き返すべきです(笑)
これの後に、「感情の捌け口のためにも」と、付け足しておきます(笑)


それでは、明日は水曜日ということで、素晴らしい週の折り返し地点を♪(ちょい、しつこかった)

閉鎖

“C言語何でも質問掲示板” へ戻る