SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

ムービーファイルをDirect3Dのテクスチャとして利用する

3D画像の表面に動画を表示する方法


  • X ポスト
  • このエントリーをはてなブックマークに追加

DirectShowで読み込んだムービーファイルを、Direct3Dのテクスチャとして利用する方法を解説します。ムービーファイルを3DCGのテクスチャとして利用すると、動画を背景に利用したり、グラフィックカードのシェーダプログラミングでエフェクトをかけたりすることができます。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 この記事では、DirectShowを利用して、AVIやMPEG、Windows Media Videoなどのムービーファイルを、Direct3Dのテクスチャに書き込む方法を解説します。

 一般にDirect3Dのテクスチャは、ビットマップやJPEGなどの静止画像から作成されるのですが、この記事のサンプルではそれを動画で行います。

 本記事の実装方法は、Microsoft DirectX 9.0 SDKの2004年夏版(Summer 2004)以前に収録されていたサンプルをベースにして、汎用性を高めるためにサポートするファイル形式を増やして改良をしたものです。

 なお、本サンプルがサポートするムービーファイルの形式は、下記のとおりです。サウンドの再生もサポートしてます。

  1. AVI形式(DivXなどはコーデックがインストールされていれば可能です)
  2. MPEG1形式
  3. MPEG2形式(ただし、コーデックがインストールされている必要があります)
  4. WMV形式(再生するファイルに対応したバージョンのWindows Media Playerがインストールされている必要があります)
サンプルでの動作の様子
サンプルでの動作の様子

対象読者

 Visual Studio .NET 2003(言語は、C++)を利用して、Direct3Dの基本的なことが理解できるプログラマを対象にしています。難易度は、中級から上級になると思います。

必要な環境

  • Visual Studio .NET 2003
  • DirectX SDK(DirectX SDK 9.0 Summer 2004以降)
  • Platform SDK(Windows Server 2003 SP1 Platform SDK)

準備

 この記事ではDirectXを使うので、そのSDK(ソフトウェア開発キット)を用意する必要があります。SDKは、Microsoftの公式ページからダウンロードできます。セットアップはインストーラが行ってくれますので、特別難しいことはありません。

 その他に、DirectShowの準備があります。このDirectShowは、Windows上でムービーファイルやカメラなどの制御を行うAPIで、元々はDirectXの1部だったのですが、2005年2月版のDirectX SDK以降、WindowsのPlatform SDKに付属することになりました。

 まず、下記のページからPlatform SDKをダウンロードします。

 DirectShowに関するファイルは、デフォルトの設定の場合、「C:\Program Files\Microsoft Platform SDK\Samples\Multimedia\DirectShow」にインストールされます。

 インストールが終ったら、Platform SDKをインストールしたルートのフォルダで「SetEnv.Cmd」というファイルを実行し、Platform SDKの環境設定を行います。DirectShowの基本ライブラリにはデバッグ版とリテール版があるので、それぞれ下記のように引数を変更し、環境を切り替えてmakeする必要があります。

デバッグ版のライブラリを作成したい場合(32bit版 Windows XPの場合)
C:\Program Files\Microsoft Platform SDK>SetEnv.Cmd /XP32 /DEBUG
リテール版のライブラリを作成したい場合(32bit版 Windows XPの場合)
C:\Program Files\Microsoft Platform SDK>SetEnv.Cmd /XP32 /RETAIL

 なお引数の/XP32は、32bit版のWindows XPを対象にする場合の引数です。それ以外の環境の引数に関しては、「SetEnv.Cmd」のオプションを参照してください。

 Platform SDKの環境設定が終わったら、続いて、DirectShowの開発に必要な基本ライブラリのmakeを行います。これは、下記のようにコマンドプロンプトで実行します。

DirectShow基本ライブラリのメイク
C:\Program Files\Microsoft Platform SDK\Samples\Multimedia
\DirectShow\BaseClasses>nmake

 この作業はデバッグ環境とリテール環境で、それぞれ行ってください。メイクが成功すると、デバッグ環境なら「XP32_DEBUG」フォルダの中に「strmbasd.lib」ができ、リテール環境なら「XP32_RETAIL」の中に「strmbase.lib」ができていると思います。

 ここで作成したライブラリと、「C:\Program Files\Microsoft Platform SDK\Samples\Multimedia\DirectShow\BaseClasses」のディレクトリ内のインクルードファイルは、開発上必要になりますのでパスを通しておいてください。

 以上で、DirectXとDirectShowで開発する準備ができました。最後に、ビルド時に必要な下記のライブラリを、あらかじめリンクしておいてください。

リンクするライブラリ(デバッグビルド時)
d3dxof.libdxguid.libd3dx9d.libd3d9.libwinmm.libstrmbasd.lib
リンクするライブラリ(リリースビルド時)
d3dxof.libdxguid.libd3dx9d.libd3d9.libwinmm.libstrmbase.lib

 なお、本記事のサンプルの実行ファイルを、DirectX 9.0cのSDKをインストールしていない環境で起動するためには、DirectX 9.0c再頒布パッケージが必要になります。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
ムービーファイルのテクスチャ化

修正履歴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

高橋 誠史(タカハシ マサフミ)

僻地の大学院生です。GPUプログラミングとそのニュースを集めたサイトShader.jpを開いています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/226 2007/11/01 09:16

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング