プロフィール

Na-7

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


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:三国志軍記開発
HeightmapCollision
HeightmapCollision
地形の高さを取得するXNA公式サンプル。ボールを地表に沿って動かすことができる。


◎シリーズ化決定!

「高さを取得するだけ」ってことで、最初は軽く見てましたが、どうやら一筋縄ではいかなさそうです。
他のサイトやサンプルでも1つのテーマとして扱っているので、改めてシリーズ化することとし、過去記事のタイトルを付け直しました。

見ての通り試行錯誤でやってますので、最終的にどうなるかは自分でもわかりません(笑)



◎色情報取得方法の追求(前回B案)

前回記事で「GetPixcelメソッドを見つけたものの、使い方がよくわからない」と書きましたが、進展がありました。
後日HPにまとめるつもりなので、この場で技術詳細は書きませんが、

1.名前空間の指定とDLLの登録が必要
2.「BitmapContent」と「PixelBitmapContent」は別モノ

この2点に気付かずに長いことハマってました(^^;

ようやくGetPixelがインテリセンスに現われたので、これで一気にいけるかな?
…と思ったのも束の間、すぐに次の壁が立ち塞がりました。
PixelBitmapContentに画像データをセットする方法がよくわからないのです。う~む…。



◎サンプルのエラー原因判明(前回CD案)

一方、naroさんのコメントを拝見して、CD案はサンプル解析から進めることにしました。

最初の問題は、サンプルがエラーになる点ですが…原因が判明しました!

「HeightmapCollision」と「TankOnAHeightmap」の両サンプルには、terrain.bmpが付属しています。その解像度が257*257なので、256*256に変更したら動きました。

ガーン!これは私にはちょっとショックでした。



◎2のn乗の問題

画像ファイルの解像度は2のn乗でないと動かないことがあるので、それに合わせて作るものだと思ってました。
(確かDirectX関連の記事にそんなことが書かれてました)

そのために結構苦労したんですけど、公式サンプルでこの状態ということは、2のn乗を無視した作品も多いってこと?

まぁXNA開発者の大半はまともなグラボを装備してるだろうから、開発側は問題無いと思いますが、一般ユーザの大半は、グラボ増設してません。
2のn乗で統一すると少しはユーザが増えることになりますが、普通は気にしないものなのか!?
…以上が、私がショックを受けた理由です。

ちなみに、サンプルは2のn乗プラス1でした。プラス1に何か特別な意味があるのかな?
まさかケアレスミスってことは無いと思いますが…。

それと余談ですが、もう1つの「BillboardSample」は、Xファイル読み込み時に例のエラーになります。前例からして、多分ハードが原因でしょう。このサンプルは今回扱わないことにします。




[2009/1/16追記]
この記事には間違いがありました。訂正記事はこちら



◎サンプルの解析

2のn乗の是非はともかく、サンプルが動くようになったので、HeightmapCollisionの内容解析に移ります。

…おや?コンテンツパイプライン内でグレースケールマップを読み込み、GetPixelで色を取得してますね。こんな所でGetPixelにお目にかかれるとは思いませんでした(笑)

色取得に関する情報がなかなか見当たらなかったので、色取得方式は邪道なのかと思い始めてましたが、公式サンプルでやってるってことは、一般的な方式ってことですね。少し安心しました(^^)



◎次回予告

まだサンプル解析中ですが、長くなってきたので続きは次回にします。

ちなみに、もう1つのTankOnAHeightmapは、高さだけでなく地面の傾斜も取得できるので高機能なんですが、
「今回そこまで必要なのか?」という疑問があるので、解析に踏み込まないかもしれません。
(城を傾けて配置するわけじゃないので…ユニットは微妙ですけど)

スポンサーサイト

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

コメント

コメントの投稿


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

トラックバック


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



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