プロフィール

Na-7

Author:Na-7
SE(システムエンジニア)として約15年間システム系ソフト会社を勤めあげ、2008年3月退社。現在、ゲーム制作会社設立を目指して活動中。


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:三国志軍記開発
<br/><a href="http://video.msn.com/video.aspx?vid=6d085a99-09a1-4288-a4ed-82e2e85ecc35" target="_new" title="XNA Creators Club Online: Particle 3D Sample">Video: XNA Creators Club Online: Particle 3D Sample</a>
Particle 3D Sample
XNA CREATORS CLUB ONLINEのサンプル実行画面。火や煙をパーティクルに表現している。



◎基礎勉強

コンテントパイプラインはあまり融通がきかないようなので、諦めてメインプログラム側で地形モデルを生成します。
とは言え、私はモデルをContent.Loadで読み込む方法しか知らないので、まず基礎から学ぶ必要があります。

そこで今回もソーサリーフォースのTips「プリミティブ(3D)」で一通り勉強させて頂きました。毎度ながら、ソーサリーフォースは初心者にも解りやすい丁寧な解説でありがたいですね。

これで頂点バッファインデックスバッファが使えるようになった(気がする)ので、地形モデルを作成しましょう。



◎バッファサイズは?

プログラムを書き始めると、すぐに素朴な疑問が生じました。
「バッファサイズは?」
マップデータを差し替え可能とする場合は、バッファサイズが変動します。そんな時はどうすれば良いのでしょうか?

「バッファぐらいとりあえず大きめに確保しとけばいーじゃん」と思っていたのですが、XNAのヘルプに「XNAでの動的頂点バッファ」という記述があったので読んでみると、意外に奥の深い話のようです。

この中でXNA CREATORS CLUB ONLINEのサンプルが3つも紹介されていたので、一通り目を通すことにしました。



◎PrimitivesSample

PrimitivesSample

プリミティブを扱ったシンプルなサンプルです。

頂点バッファを予め確保(デフォルトは500頂点分)し、そこに頂点を追加しています。空き領域がない場合、バッファ内容をレンダリングしてからバッファをリセットし、その後保留中の頂点を追加します。

この方式ならどのグラボでも問題なく動作しそうです。但し、バッファ容量の多いグラボでは、その効果は十分に発揮されないでしょう。
最初にスペックを確認してバッファ容量を最大限確保するのが理想と思いますが…そこまでする必要ってあるのかな?

このサンプルではPrimitiveBatchが実装されていて、これを取り込むとSpriteBatchと同様に使うことができそうです。地形もこれで作ろうかと考えましたが、インデックスバッファがサポートされていないのでやめました。



◎Particle 3D Sample

冒頭で紹介したサンプルです。

XNAユーザでまだ見たことがない人は、是非一度ダウンして実行してみてください。カメラ(視点)は自由に操作できますし、そうすることで立体感を味わうことができます。炎の中に突入することもできます。
(冒頭のビデオは何故カメラ固定なのか…勿体無いなぁ)
サンプルでここまで表現できるなんて凄いですね~。改めてXNAの実力を垣間見た気がします。


さて、プログラムに目を移すと、DynamicVertexBufferで動的頂点バッファを作成し、SetDataで頂点データを登録、更新しているようです。しかし頂点データの削除はどうやっているのか理解できませんでした。

プログラム全体を詳細に解析したい誘惑に駆られましたが、今回はDynamicVertexBufferを使わないので自制しました。
このサンプル、いずれ我が物にしちゃる!!



◎Generated Geometry Sample

GeneratedGeometry

ビットマップから地形と背景を生成するサンプルです。

地形生成はHeightmapCollisionと同じコンテントプロセッサが使われていました。こちらが先に作成されたようですね。
既にHeightmapCollisionを使っているので、これは参考にならないなぁ。でも、ゲームの背景としては参考になるかも。


本題とは関係ありませんが、360度のパノラマ画像をどうやって作成したのか気になって調べたら、こんな方法があるそうです。

「ビデオカメラの前に半球体の鏡を置いて、360度のパノラマ映像を1度に撮影し、再生の時には半球体の鏡を使って元に戻す」

360度パノラマ製作会社とか、デジカメ用360度レンズもありました。そういえば昔テレビで見たような…?



◎次回予告

結局、今すぐ参考になるサンプルはありませんでした。
でも近い将来別の所で役に立ちそうなので、心に留めておきます。

バッファサイズは「とりあえず大きめに確保し、一度作成して頂点数を確認してからプログラムを修正する」という行儀の悪い方法でやり過ごします。

スポンサーサイト

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック


この記事にトラックバックする(FC2ブログユーザー)



copyright © ゲーム制作の舞台裏 all rights reserved.Powered by FC2ブログ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。