Presentation is loading. Please wait.

Presentation is loading. Please wait.

プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作

Similar presentations


Presentation on theme: "プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作"— Presentation transcript:

1 プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
第6回 サウンド

2 今日の内容 サウンド お待ちかね! BGM、SE、3Dサラウンドまで

3 サウンドを扱うAPI DirectSound(3D) SDL_mixer OpenAL Windows環境ではスタンダード
なんだけど、Vista以降切り捨ての方向に… SDL_mixer 機種非依存で、マルチメディア全般をサポート ライセンスの関係がめんどくさい… OpenAL マルチプラットフォームでライセンスフリー DirectSoundとの互換性も考慮されており、 今後のスタンダードとして有力株

4 OpenALを使ったプログラミング FKのライブラリパッケージ内にOpenALもセットにしてあります
プロジェクトを作る時に「OpenALを使用する」と「Ogg Vorbisを使用する」にチェック 既に作ってあるプロジェクトの設定変更は プロジェクトのプロパティ→リンカ→入力→ 追加の依存ファイル、に対して以下を追加 libvorbisfile.lib libvorbis.lib libogg.lib EFX-Util.lib alut.lib OpenAL32.lib

5 DLLへの依存が発生します 「OpenAL32.dll」「alut.dll」「libogg.dll」「libvorbis.dll」「libvorbisfile.dll」が必要 「FK_VC08/bin」フォルダ内にある 実行パスの通ったフォルダに配置する Visual Studio上から実行する場合 プロジェクトファイルと同じフォルダ EXEを直接実行する場合 EXEファイルと同じフォルダ

6 補足:パスについて ファイルを読み込むプログラムの場合、 Visual Studioから実行する場合と、 EXEを直接実行する場合とで、 相対パスの基準位置がズレます 両方にデータを置くのは面倒なので… EXEを実行する時はプロジェクトの フォルダにコピーしてくる プロジェクトの設定を変更して、VS上から実行する場合の基準位置を揃える

7 今回のクラス構成 BGM用 SE用(どちらも関数は共通) fk_AudioStream fk_AudioOggBuffer
fk_AudioWavBuffer Wav形式用

8 BGMと効果音の再生形式の違い BGMはファイルサイズが大きい SEはファイルサイズが小さい 少しずつ読み込みながら再生する
ストリーミング再生処理と呼ぶ 生Waveは大きすぎるのでOggを使うこと SEはファイルサイズが小さい 一気にメモリ上に読み込んで再生する WaveでもOggでも使用可

9 APIは至極単純 open play pause seek tell end setGain getGain ファイルを読み込む 鳴らす
鳴らし続けたい間 呼び続ける必要がある pause 止める seek 指定位置へ頭出し tell 現在再生位置を取得 end 再生を打ち切り、 読み込んだ内容を破棄 setGain 音量調整(0.0~1.0) getGain 音量取得

10 ちょっと不安定な機能ども setLoopMode setLoopArea tellで取得できる再生時間に若干のズレが生じる
ループ再生の設定 setLoopArea ループ範囲の指定 現状ループ開始地点 のみ有効 tellで取得できる再生時間に若干のズレが生じる それに伴ってループ再生の開始地点も厳密な位置指定は無理 そのうち直します

11 3Dサラウンド Buffer再生クラスの方は3次元座標を 与えることでサラウンド表現が可能 setPosition()で定点指定
setModel()で与えたモデルの位置に追従 setReferenceDist()で音の届く距離を設定 fk_Audio::setListenerModel()でリスナー (多くの場合はカメラモデル)を設定


Download ppt "プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作"

Similar presentations


Ads by Google