Home > C言語(Windows) Archive

C言語(Windows) Archive

【DXライブラリ3D入門第2部】物理エンジンBulletとDXライブラリを組み合わせて使う その3

かなり時間が空いてしまいましたが、BulletとDXライブラリに関する解説の続きです。今回はBulletの計算結果に合わせて、DXライブラリで3Dモデルを表示する方法を解説します。

WS002526

DXBullet_3DTest_src02.zip(要Visual C++ 2010 Express)

DXBullet_3DTest_bin02.zip(実行ファイル)

 

注:本記事で配布するソースコードにはモデルデータは含めませんので、それぞれの配布元から別途ダウンロードしてください(詳しくは初回記事を参照)。

©CRYPTON FUTURE MEDIA, INC.
解説中で使用しているモデルは前回に続きenamel toy box(ハッチさん運営)で公開されている「PMDねんどろ風初音ミクv1.1

pmdファイルのダウンロードや組み合わせ方については、過去記事も参考にしてください。

…続きを読む

【DXライブラリ3D入門第2部】物理エンジンBulletとDXライブラリを組み合わせて使う その2

前回記事に続いてBulletエンジンとDXライブラリを組み合わせて使う方法を説明していきます。

WS002219

DXBullet_3DTest_src01.zip(要Visual C++ 2010 Express)

DXBullet_3DTest_bin01.zip(実行ファイル)

…続きを読む

【DXライブラリ3D入門第2部】物理エンジンBulletとDXライブラリを組み合わせて使う その1

ほぼ3ヶ月ぶりの更新です。今回解説するのは、DXライブラリと3D用物理エンジンBullet(バレット)を組み合わせて使う方法です。Box2Dと基本的な考え方は似ているのですが、細かいところが色々と難しいですね。とりあえずBulletの一番簡単なBasicDemoを移植できたので、そこまでを解説します。

WS002216WS002219-ブロックが床に落下して飛び散る。

DXBullet_3DTest_src01.zip(要Visual C++ 2010 Express)

DXBullet_3DTest_bin01.zip(実行ファイル)

…続きを読む

【DXライブラリ3D入門】2Dに合わせて3Dグラフィックスを描画する その3

お知らせ:DXライブラリオンライン関数リファレンス付録編の3D関数編を公開しました。まだすべての関数の解説は揃っておりませんが、本記事を読む助けとしていただければ幸いです(足りない関数については本家「DXライブラリ置き場」のリファレンスをご参照ください)。

注:本記事で配布するソースコードにはモデルデータは含めませんので、それぞれの配布元から別途ダウンロードしてください(詳しくは初回記事を参照)。


引き続き前々回記事で公開したマリオブラザーズ風のゲームデモのグラフィックス処理について解説していきます。今回説明するのは表示範囲内にあるモデルを絞り込む方法です。範囲内の物体を高速に行うのは意外と面倒なのですが、ここではBox2DのQueryAABBという関数を使います。AABBは「Axis Aligned Bounding Box」の略で、「軸に沿った範囲を表す矩形」という意味になります。軸に沿わない――つまり回転もありうる矩形に比べると、高速に判定ができるわけです。

WS001631

…続きを読む

【DXライブラリ3D入門】2Dに合わせて3Dグラフィックスを描画する その2

お知らせ:DXライブラリオンライン関数リファレンス付録編の3D関数編を公開しました。まだすべての関数の解説は揃っておりませんが、本記事を読む助けとしていただければ幸いです(足りない関数については本家「DXライブラリ置き場」のリファレンスをご参照ください)。

注:本記事で配布するソースコードにはモデルデータは含めませんので、それぞれの配布元から別途ダウンロードしてください(詳しくは初回記事を参照)。


引き続き前々回記事で公開したマリオブラザーズ風のゲームデモのグラフィックス処理について解説していきます。解説を書く中でソースコード中の問題をいくつか見つけて修正したので、新たにこちらのソースコードをダウンロードし直してください。

maori-bros3D_src2.zip(要Visual C++ 2010 Express)

横スクロールタイプのゲームでは、ステージ内のどこを画面に表示するのかを決めなければいけません。3Dグラフィックスの場合、どこが表示されるかを決めるのはカメラです。カメラがどこに配置され、どこを注視しているかによって、「何がどこに表示されるのか」が決定されます。つまり、スクロールの進行に合わせてカメラを動かさなければならないということです。

サンプルプログラムの2D部分では、左右は主人公が画面中央に来るようにスクロールし、上下は画面の端から200px以内に主人公が入ったときにスクロールすることにしています。そのために主人公の現在位置から、表示範囲の左上隅座標(screen_x, screen_y)を求める計算を行っています。

WS001629

…続きを読む

【DXライブラリ3D入門】2Dに合わせて3Dグラフィックスを描画する その1

お知らせ:DXライブラリオンライン関数リファレンス付録編の3D関数編を公開しました。まだすべての関数の解説は揃っておりませんが、本記事を読む助けとしていただければ幸いです(足りない関数については本家「DXライブラリ置き場」のリファレンスをご参照ください)。

注:本記事で配布するソースコードにはモデルデータは含めませんので、それぞれの配布元から別途ダウンロードしてください(詳しくは初回記事を参照)。


前回記事で公開したマリオブラザーズ風のゲームデモのグラフィックス処理について解説していきます。このゲームデモはもともと2D向けに作ったものです。3D版ではジャンプ処理のあたりを少し調整しましたが、基本的にはほとんど同じプログラムです。main.hの12行目にある定数B2D_DEBUG_DRAWのコメントを解除してから実行すると……

main.h

#include <DxLib.h>
#include <Box2D/Box2D.h>
#ifdef _DEBUG
	#pragma comment(lib, "Box2D_d.lib")
#endif
#ifndef _DEBUG
	#pragma comment(lib, "Box2D.lib")
#endif
#include "_dxdebugdraw.h"

//定数
#define B2D_DEBUG_DRAW
const int VELOCITYITE = 6;		//速度計算精度
const int POSITIONITE = 2;		//位置計算精度

3Dグラフィックスに重なってBox2Dのデバッグドロー(物理エンジンが管理しているボディやジョイントを表示するデバッグ用機能)が表示されます。これを見ると完全に2Dのプログラムであることがわかると思います。

WS001607

©CRYPTON FUTURE MEDIA, INC.

Copyright (C) 2008-2010 唄音ウタProject, 飴屋/菖蒲 All Rights Reserved.

…続きを読む

【DXライブラリ3D入門】MikuMikuDance風かつマリオブラザーズ風なゲームデモ公開

お知らせ:DXライブラリオンライン関数リファレンス付録編の3D関数編を公開しました。まだすべての関数の解説は揃っておりませんが、本記事を読む助けとしていただければ幸いです(足りない関数については本家「DXライブラリ置き場」のリファレンスをご参照ください)。

注:本記事で配布するソースコードにはモデルデータは含めませんので、それぞれの配布元から別途ダウンロードしてください(詳しくは初回記事を参照)。


ようやくマリオブラザーズ風のゲームデモができあがりました。元々2D前提で作ったものを3Dに変更したため、座標変換がややこしいことになってしまい、予想以上に手こずりました。取り急ぎソースコードと実行ファイルを公開しますが、解説はまた日を改めてとさせてください。

WS001596WS001599

動画も用意したのですが、ゲームとキャプチャソフトを同時に実行できるスペックが無かったので、iPhoneで撮影しています。BGMはYoutubeの機能で合成したもので、実際のプログラムは無音です。操作方法はカーソルキーの左右とXキー、頭突きで動くブロックは動くだけでコインなどは出てきません。

http://www.youtube.com/watch?v=56foghugriI(クリックして動画再生)

©CRYPTON FUTURE MEDIA, INC.
Copyright (C) 2008-2010 唄音ウタProject, 飴屋/菖蒲 All Rights Reserved.

解説中で使用しているモデルはenamel toy box(ハッチさん運営)で公開されている「PMDねんどろ風初音ミクv1.1」「PMDねんどろ風デフォ子v1.11」です。

…続きを読む

【DXライブラリ3D入門】アニメーションの切り替えを滑らかにする

お知らせ:DXライブラリオンライン関数リファレンス付録編の3D関数編を公開しました。まだすべての関数の解説は揃っておりませんが、本記事を読む助けとしていただければ幸いです(足りない関数については本家「DXライブラリ置き場」のリファレンスをご参照ください)。

注:本記事で配布するソースコードにはモデルデータは含めませんので、それぞれの配布元から別途ダウンロードしてください(詳しくは初回記事を参照)。


前回は「立つ」「走る」「ジャンプ」のアニメーションをキー操作に合わせて切り替える方法を説明しましたが、一瞬でモデルの向きやポーズが変わってしまうため、不自然に見えるという問題がありました。これを解決するために、DXライブラリには複数のアニメーションをブレンドするMV1SetAttachAnimBlendRate関数が用意されています。ただし、再生時間の設定やアタッチ、デタッチといった処理に合わせて、さらにブレンド率の設定もしなければいけないので、どうスマートに組み込むかが工夫のしどころです。

WS001584WS001587WS001588

今回の作例:いきなり「立つ」→「ジャンプ」へ切り替わるのではなく、切り替わり途中の中間段階のポーズが自動的に作られる
©CRYPTON FUTURE MEDIA, INC.
解説中で使用しているモデルは前回に続きenamel toy box(ハッチさん運営)で公開されている「PMDねんどろ風初音ミクv1.1

※今回は拡大していないオリジナルのモデルをそのまま使用します

…続きを読む

【DXライブラリ3D入門】モデルをアニメーションさせよう(後編)

お知らせ:DXライブラリオンライン関数リファレンス付録編の3D関数編を公開しました。まだすべての関数の解説は揃っておりませんが、本記事を読む助けとしていただければ幸いです(足りない関数については本家「DXライブラリ置き場」のリファレンスをご参照ください)。

注:本記事で配布するソースコードにはモデルデータは含めませんので、それぞれの配布元から別途ダウンロードしてください(詳しくは初回記事を参照)


前回記事ではMikuMikuDanceを使ってモーションファイル(VMD形式)を作成しました。今回はそのモーションファイルをDXライブラリで読み込んで再生します。ゲームとまではいきませんが、キー操作に合わせて「立つ」「走る」「ジャンプする」の3つのモーションが切り替わるようにします。

WS001486WS001491

今回の作例
©CRYPTON FUTURE MEDIA, INC.
解説中で使用しているモデルは前回に続きenamel toy box(ハッチさん運営)で公開されている「PMDねんどろ風初音ミクv1.1

…続きを読む

【DXライブラリ3D入門】モデルをアニメーションさせよう(前編)

お知らせ:DXライブラリオンライン関数リファレンス付録編の3D関数編を公開しました。まだすべての関数の解説は揃っておりませんが、本記事を読む助けとしていただければ幸いです(足りない関数については本家「DXライブラリ置き場」のリファレンスをご参照ください)。

注:本記事で配布するソースコードにはモデルデータは含めませんので、それぞれの配布元から別途ダウンロードしてください(詳しくは初回記事を参照)。


さて、前回までで3Dの基礎はほぼ終わったので(ライトやマテリアルの解説は飛ばしていますが……)、今回はいよいよモデルをアニメーションさせる方法を説明します。大まかな流れを先に説明しておくと、「MikuMikuDanceでモーションを作成する」「モーションファイルを書き出す」「DXライブラリで読み込んで再生する」となります。今回の記事ではモーション作成から書き出しまでを解説します。

改めて紹介しますと、MikuMikuDanceは樋口Mさんが公開している無料の3Dアニメーションツールです。初音ミクなどの3Dモデルを読み込み、それにポーズを付けてアニメーションさせることができます。

VPVP(MikuMikuDance公開ページ)

この記事ではWindows Vista/7向けのMikuMikuDance(DirectX9 Ver)Ver.7.30を使用しています。高スペック向けと説明されていますが、Vista/7で使う場合は他のバージョンよりこちらのほうがFPSが出るようです。

WS001443WS001493

MikuMikuDanceの編集画面と今回の作例
©CRYPTON FUTURE MEDIA, INC.
解説中で使用しているモデルは前回に続きenamel toy box(ハッチさん運営)で公開されている「PMDねんどろ風初音ミクv1.1

※今回は拡大していないオリジナルのモデルをそのまま使用します

…続きを読む

Home > C言語(Windows) Archive

Amazonリンク

Return to page top