CodeZine(コードジン)

特集ページ一覧

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

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

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2005/12/16 12:00

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

目次

はじめに

 この記事では、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再頒布パッケージが必要になります。


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

修正履歴

  • 2007/11/01 09:14 記事本文の修正をしました。

  • 2005/12/08 19:02 コメントを1部C++スタイルからCスタイルへ変更。

あなたにオススメ

著者プロフィール

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5