Fujimiya edited this page Jan 4, 2018 · 34 revisions

Prominence3Dランタイムライブラリ(for DirectX9)

Copyright© 藤宮翔流 All Rights Reserved.

概要

Prominence3Dで作成した3Dゲームエフェクトを、DirectX9で簡単に表示するためのライブラリです。
DXライブラリでも使用できます。(DXライブラリで使う場合はこちらを参考にしてください。)

スクリーンショット


バージョン

Ver.1.0.0
Prominence3D Ver1.7.3以降で作成したエフェクトファイルに対応


使用手順

①エフェクトファイルを用意する

Prominence3Dでエフェクトを作成し、メニューの「ファイル」⇒「バイナリ書き出し」を選択します。
「*.p3b」ファイルと、使用している素材ファイルが出力されるので、表示したいプログラムのフォルダに移動させてください。
(または、②でダウンロードするデータ内のサンプルプログラムのAssetsフォルダにサンプルデータが4つあるので、そちらを使って動作検証することができます。)

※バイナリ書き出しを行うには行うには、Prominence3Dのバージョンが1.7.3以上で、
 シリアルナンバーを購入してアクティベートしてある必要があります。
  
※「*.p3b」ファイルと使用している素材ファイルは、同じ場所に置いてください。

※テクスチャのサイズが2の乗数になっていないと、正しく表示されないことがあります。


②ライブラリをダウンロード

https://github.com/KakeruFujimiya/Prominence3D_Runtime_DX9へ行き、
必要なファイルをダウンロードします。
※VisualStudio2013や2015をお使いの場合はブランチを切り替えてください。
ダウンロード


③ライブラリを配置

ダウンロードしたZipファイルを解凍し、
**「P3DEngine.h」「P3DEngine.lib」「P3DEngineD.lib」「P3DEngine.cfx」**を、
表示したいプログラムのフォルダにコピーします。


④ランタイムライブラリの設定

VisualStudioでプロジェクトのプロパティを開いて、
「構成プロパティ」⇒「C/C++」⇒「コード生成」⇒「ランタイムライブラリ」の項目を
デバッグの場合はマルチスレッドデバッグ(/MTd)、リリースの場合は**マルチスレッド(/MT)**に設定してください。
ランタイム設定



### ⑤プログラム

プログラムのどこかに次のように書きます。
#if _DEBUG
#pragma comment(lib, "P3DEngineD.lib")
#else
#pragma comment(lib, "P3DEngine.lib")
#endif
もちろん、プロジェクトの設定の方に書いても構いません。


エフェクトを表示したいところでP3DEngine.hをインクルードし、P3DEngine型のポインタを用意します。
#include "P3DEngine.h"

P3DEngine* pP3D;


初期化用データを用意し、P3DEngineオブジェクトを作成します。
P3DInitData data;
data.pDevice = pDevice;
pP3D = new P3DEngine(data);
P3DInitDataのメンバは他にもありますが、最低限pDeviceにDirect3Dのデバイスオブジェクトを渡してください。


使いたいエフェクトファイルをロードします。
pP3D->Load("炎.p3b");
pP3D->Load("爆発.p3b");
pP3D->Load("魔法.p3b");
エフェクトは何個でもロードできます。


描画処理の中に次の一文を追加してください。
pP3D->Draw();
これで、発生中のすべてのエフェクトが描画されます。
なおエフェクトの描画は、なるべく一番最後になるようにしてください。


あとは、任意のタイミングでエフェクトを発生させます。
pP3D->Play("爆発.p3b", D3DXVECTOR3(0, 0, 0), FALSE);
第一引数はファイル名、第二引数はエフェクトを出したい位置、第三引数はループフラグです。
たき火や煙突の煙のように、常に出し続けたい場合はループフラグをTRUEにしてください。
ループフラグは省略可能です。(省略時はFALSE)



表示中のエフェクトを移動、回転、拡大縮小したい場合は次のとおり。

まず、Play関数の戻り値をP3DEffect型のポインタで受け取ります。
P3DEffect* pEffect = NULL;
pEffect = pP3D->Play("爆発.p3b", D3DXVECTOR3(0, 0, 0));

その後、次の記述で変形できます。
pP3D->SetTranslation(pEffect, D3DXVECTOR3(5, 0, 0)); //(5,0,0)の位置に移動
pP3D->SetRotation(pEffect, D3DXVECTOR3(0, 3.14f, 0)); //Y軸で3.14ラジアン回転
pP3D->SetScaling(pEffect, D3DXVECTOR3(2, 2, 2)); //全方向に2倍

これらの処理は、すでに再生が終わっているエフェクトに関しては無効となります。
エフェクトが再生中かどうかは次の記述で確認できます。

pP3D->IsPlayng(pEffect)
戻り値がTRUEなら再生中、FALSEならまだ再生されてないか、再生が終わったことを意味します。


リファレンス

詳細な使用方法は、P3DEngine.hのコメントおよび、サンプルプログラムをご覧ください。


サンプルプログラム

ダウンロードしたファイル内に、サンプルのプロジェクトが含まれています。


お問い合わせ

Issuesページに投稿してください。
https://github.com/KakeruFujimiya/Prominence3D_Runtime_DX9/issues
(※投稿するにはGithubアカウントが必要です)

人に見られたくない情報がある場合は作者サイトのお問い合わせフォームからご連絡ください。
藤宮翔流のひきだしhttp://game-hikidashi.com

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.