プロフィール

Na-7

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


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:三国志軍記開発
CLRデバッガ
CLRデバッガ
.NET Framework SDK v2.0付属デバッガ。コンテントパイプラインのデバッグに使用可能。紹介記事はこちら



◎色情報の取得

前回のエラーは、一度ソースを書き戻して再度修正したら出なくなりました。そんな訳で、結局何が悪かったのかよくわかりません。ごめんなさい。とりあえずハードの問題じゃなくて一安心。

結局、

 PixelBitmapContentでカラー情報を取得
 Vector4に変換してメインプログラムのContentTypeReaderに渡す
 Vector4からColor型に変換する

とすることでRGBA(赤、緑、青、透明)を取得しました。

最初は緑と青が常に0になるので悩みましたが、これは既存コードの影響で、色情報取得処理を先に行うと正常に取得出来るようになりました。



◎地形モデルの生成

カラーマップから地形種別を判別できるようになったので、今度は地形種別によって頂点位置を修正した地形モデルを作成したいのですが、ここでまた壁が立ち塞がりました。

地形モデルの生成コードは、サンプルからメインプログラムに丸ごとコピーしようと考えていたのですが、サンプルのコードはどうやらコンテントパイプライン専用らしいのです。
(肝心のMeshBuilderがカスタムインポータ用で、名前空間を追加して無理矢理移植しようとしてもダメでした)

そうなると、別途モデル生成サンプルを探して流用するか、別の方法を考える必要があります。



◎コンテントパイプラインへのデータ渡し

そもそも、カラーマップを読み込む際に、高さ情報を渡すことができれば、少しの改造で済むのですが…コンテントパイプラインにデータを渡すことは可能なのでしょうか?

A案:独自インポータを開発して、引数を追加する
B案:プロパティで受け渡す
C案:一旦ファイルに落として受け渡す

C案だと実行時に遅くなるし、XNAはファイルの扱いが面倒です。できればA案B案にしたいと思っていろいろ試行錯誤したのですが、どうにも上手くいきません。

やがてふと「コンテントパイプラインの処理は、ゲーム実行時ではなくビルド時に行われる」という記述を目にしました。
そうか~コンテントパイプラインって、XNBファイルを生成するだけの存在だったのね。
あれ?ということは、A案B案のようなメモリ連携は最初から不可能ってこと!?



◎コンテントパイプラインから別のコンテントを呼び出す

コンテントパイプラインの処理がビルド時に行われるなら、C案でも実行時に遅くなる心配はありません。しかし、C案はコンテントパイプラインの中から別のコンテントパイプラインを呼び出す必要があります。
これって可能なのでしょうか?

…結論から言うと、ダメでした。

Content.Loadを使用可能とするにはContentManagerのインスタンスを作成する必要がありますが、通常その引数にGameクラスのServicesプロパティを使用します。しかし今回はコンテントパイプラインの中なので、別途自力でサービスプロバイダを用意する必要があります。

さすがにこれは難しくて悩んでいたら、自分自身をgameクラスとして返却するコードを発見しました(こちらの後半のじぇいじぇいさんの回答)。

この「Gameクラス側のコード」を拝借して、コンテントパイプラインの中で強引にContentManagerを作成する所までは出来たのですが、Content.Loadを使用すると「~.XNBファイルが見つかりません」とエラーになりました。なるほど、ターゲットファイルは.XNB化された状態でないとダメなんですね。

それならばと、.XNBファイルを置いて実行したら「~.XNBの一部が見つかりません」とエラーになりました。
一部って何だよ~!



◎次回予告

あとちょっとで何とかなりそうなんですが…世の中甘くないですね。もう少し探ってみて、ダメならメインプログラム側で地形モデルを生成します。

スポンサーサイト

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

コメント

コメントの投稿


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

トラックバック


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



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