Home > C言語(Windows) Archive

C言語(Windows) Archive

【DXライブラリ3D入門】カメラの使い方をマスターしよう

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

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


今回はカメラ関係の関数について説明しましょう。これをマスターすると、3Dグラフィックスの基礎はほぼ終了といえます。

現実世界の「カメラ」は二次元の写真や映像を記録する道具です。3Dグラフィックスの「カメラ」も3Dのモデルを2Dの画像にします。立体的な絵を描くためのテクニックとして「遠近法」というものがありますが、その理屈で3次元の座標(ワールド座標)を2次元の座標(スクリーン座標)に変換してやるのです。

座標の変換ですから、内部では前回説明した行列を使って計算しています。ただし、DXライブラリを使ってカメラを設定する分には、行列を意識する必要はほとんどありません。

WS001332WS001334

今回の作例
©CRYPTON FUTURE MEDIA, INC.
解説中で使用しているモデルは前回に続きenamel toy box(ハッチさん運営)で公開されている「PMDねんどろ風初音ミクv1.1
※モデルのサイズは第2回記事でオリジナルの4倍に拡大しています。

…続きを読む

【DXライブラリ3D入門】モデルを移動する、回転する ~変形と行列

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

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


今回解説するのは「モデルの変形」です。3Dグラフィックスでいう「変形(Transform)」とは、主に「移動」「拡大/縮小」「回転」の3つのことで、すでに移動と拡大/縮小については初回記事で簡単に解説しています。では、後は回転のやり方を説明するだけかといえば、そうではありません。DXライブラリには簡単に変形を行う関数が用意されていますが、よりスマートな変形処理を行うには、「行列(Matrix)」の知識が必要です。

そこで、まず簡単な変形方法を説明した後、行列について説明していきます。

WS001292WS001290

今回の作例
©CRYPTON FUTURE MEDIA, INC.
解説中で使用しているモデルは前回に続きenamel toy box(ハッチさん運営)で公開されている「PMDねんどろ風初音ミクv1.1
※モデルのサイズは第2回記事でオリジナルの4倍に拡大しています。

…続きを読む

【DXライブラリ3D入門】モデルを綺麗に表示する

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


さて、今回は「モデルの輪郭線を細くする」「ガタガタが目立つのを何とかする」方法を解説する予定でしたが、「ガタガタ」の方は解決方法を見つけることができませんでした。

WS001304

ガタガタを直すには、Direct3Dの「アンチエイリアス」または「マルチサンプリング」と呼ばれる機能を有効にすればいいのですが、こちらで調べたところではDXライブラリは可能であればマルチサンプリングを有効にするよう設計されているようなのです。

つまり、筆者の環境はマルチサンプリングを使うのは無理だと判定されたようです(なにせノートパソコンのIntel965チップセット内蔵ビデオ機能なもので……)。手元にビデオカードがないので検証できないのですが、これについては、ちゃんとしたビデオカードを積んだパソコンでなら綺麗に表示されるはず、ということでご了解ください。

「ガタガタ解消」の話の代わりに、今回は「PMDエディタでモデルを拡大/縮小する」話と「トゥーン調表示を有効にする」話をします。

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

 

 

 

…続きを読む

【DXライブラリ3D入門】とりあえずモデルを表示してみよう

今回からしばらく、DXライブラリの3Dゲーム向け関数の解説記事を書いていくことにします。当面の目標としては、3Dグラフィックスを使った2Dゲームを作ることを目指します。具体的にいうと、ニュー・スーパーマリオブラザーズみたいなゲームですね。これならゲームのメイン処理は2Dゲームのものをそのまま活かせるので、3Dグラフィックスの表示処理の学習に集中できるからです。

この解説を読む方は、マイクロソフトが無料配布しているVisual C++ 2010 Expressを導入済みで、C言語とDXライブラリの基本(主に2Dゲームの作り方)を身につけていることを前提とします。これらについては『14歳からはじめる C言語わくわくゲームプログラミング教室Visual Studio 2010編』という本で解説しておりますので、よろしければご参照ください。
2Dでのプログラミングの話を飛ばしている代わりというわけでもないのですが、DXライブラリの使い方に混ぜて、「座標系」とか「変形行列」といった3Dグラフィックスの基礎知識の話も、可能な範囲で説明していきます。

 

さて、3Dゲームのプログラミングをするに当たって、最大のハードルとなるのは実は「3Dポリゴンモデルの入手」だったりします。3Dモデルは作るために必要とするスキルが高いため、ゲームに使えるものを用意するのが大変なのです。そこが解説を書き始めにくい原因ともなっていたのですが、DXライブラリの関数解説を眺めていたところ、樋口Mさんが無料公開しているMikuMikuDance用の3Dモデルの読み込みに対応しており、そのコミュニティが盛り上がって多くのモデルが公開されているということを知りました。そこで本解説ではMikuMikuDance形式で公開されているモデルを利用させてもらうことにしました。

ただし、著作権フリー素材というわけではないですし、本ブログの記事は無料公開とはいえ宣伝の側面もありますので、本解説で配布するソースコードにはモデルデータは含めません。読まれた皆さんがそれぞれをダウンロードし、合わせてお使いください。

ということで、今回はenamel toy box(ハッチさん運営)で公開されている「PMDねんどろ風初音ミクv1.1」を使わせていただいて、モデルデータを表示してカーソルキーで動かすというところまでをやってみます。繰り返しますが本記事で作成するソースコードにはモデルデータは含めませんので、上記リンク先から別途ダウンロードしてください。

また、他のモデルを使いたい方は、ソースコード中のファイル名などを適宜書き換えてください。

WS001253

今回の作例
©CRYPTON FUTURE MEDIA, INC.

 

 

 

…続きを読む

Box2D+DXライブラリによるマリオもどきのテスト その2

マリオもどきにモンスターを追加して、だいたいこんなもんかなという感じになりました。左右はカーソルキーで移動、Xキーでジャンプです。しゃがむことはできません。

WS001227

・画像をクリックするとYoutubeで再生

実行ファイルはここ、ソースコードはここにあります。ソースコードは要ユーザー登録ですが、書籍の購入者でなくともダウンロードできます。マップエディタも少しバージョンアップしました。

C言語VS2010編』のサンプルを元にしているので、キモとなる部分に絞って説明すると……

…続きを読む

Box2D+DXライブラリによるマリオもどきのテスト

『C言語VS2010』のサンプルをベースに、スーパーマリオ風味のプログラムを作ってみました(実はオリジナルやったことがありません)。地形のみですし、全部四角なので言われないとわからないですが……。

WS001225

・クリックするとYoutubeで動画再生

テストなのでグラフィック周りを作り込む予定はありませんが、後日、キノコぐらいは登場するようにするつもりです。

DXライブラリ関数リファレンスの改良

動作速度や使い勝手が上がるよういじってみました。

http://i-libro.net/game/c14vc2010/dxlib_reference/

dxrefimage2

主に変えたところは……

…続きを読む

最新のBox2Dをビルドする

この記事はBox2Dのソースコードをビルドして、LIBファイルを取り出す方法を説明しています。『Visual Studio 2010編』のために書き起こしたのですが、ページ数の都合で入らなかったものです。基本的にはソースコードに含まれている英文の説明どおりにやればいいのですが、日本語名フォルダが混ざっていると「cmake-gui」が正常動作しないとか、細かいところに罠があったりします。

 

Box2D公式サイト(http://www.box2d.org/)では、ソースコードの形でBox2Dを配布しています。これをコンパイルしてVC++2010で利用する方法を説明します。

まず、公式サイトの「download」をクリックし、「code.google.com」のダウンロードページに進みます。そこで「Download」タブをクリックすると、ファイルの一覧が表示されます。「Box2D_vバージョン番号.zip」をダウンロードしましょう。

vs-omake02-01

―Box2D_v2.1.2.zipをダウンロードする
URL: http://code.google.com/p/box2d/downloads/list

…続きを読む

DXライブラリ関数リファレンスの制作

新刊の『14歳からはじめる C言語わくわくゲームプログラミング教室 Visual Studio 2010編』は、既刊書に付けていた「DXライブラリ関数リファレンス」がページ数の都合で入っていません。そこで、オンラインのWeb版リファレンスを制作することになりました。どうせなら色々ひねってみようということで、JavaScript(jQuery)を活用して自分なりに表示しやすさ、読みやすさを追求してみました。

IE9β、Firefox3.6、Safari5、iPad、iPhoneで確認済み。確認していませんがChromeでも動くはずです。Operaは不明(jQuery 1.4を使っているのでたぶん動くかも)。

dxrefipad

…続きを読む

Direct2Dは凄い

「初級編」のサンプル「宇宙戦艦ディフェンスゲーム」をDirect2Dに移植してみました。

aaaaaa-283

http://i-libro.net/game/playroom/showgame.php?gameid=84
※Windows XPでは動作しません。7かVista SP2が必要です。

速くてしかも軽いです。左画像がGDI+版、右画像がDirect2D版ですが、倍の25fpsで動かしてもCPU使用率が15~20%程度に収まってしまい、クロックダウンしてしまっています。50fpsでも使用率25%程度。ただし、GPUには負荷がかかっているらしく、ゲームの実行中はウィンドウを動かすなどのデスクトップ操作がガタつくことがありました。

d2dgdiplus d2dd2d

また、60fpsではゲームがまともに動かず、終了させるのも不安定な状態になりましたが、これはプログラムの作り方の問題か(ムリヤリ改造したので)、パソコンのスペック不足かもしれません。

テスト環境はCore 2 Duo2.0GHz、GPUはIntel 965チップセット内蔵という一昔前のビジネスノートなので、それでこれだけ動くなら大したものだと思います。Windows XPで動かないのが最大のネックですが、最近になってようやく脱XPが進み始めたようなので、Direct2Dを使ったソフトが色々出るといいですね。

…続きを読む

Home > C言語(Windows) Archive

Amazonリンク

Return to page top