プロフィール

Na-7

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


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:三国志軍記開発
自作地形08   自作地形05の参考元
自作地形とサンプル地形(テクスチャ無し)
並べて比較すると微妙に違う。この状態では悪くなさそうだが、テクスチャを貼ると自作地形は見劣りしてしまう。



◎何が違う?

自作地形とサンプル地形の違いは何か?と、エフェクトや法線を変えたりコードを再比較したりしましたが、どうしてもわかりません。

テクスチャ無し状態で違いがあるってことは、やっぱり法線かなぁ?



◎頂点データの取得

このままではラチがあかないので、ついに頂点データの解析に踏み込むことにしました。ちょっと難しそうなので、気後れしてましたが…でも、やると決めたからには、前向きにやらないとね!

まずVertexBufferのマニュアルを見ると、GetDataというメソッドがありました。これで頂点データが取得できそうですが、適当にやってもなかなか上手くいきません。

ネットで調べると、「ReadOnlyで取得できません」なんてが…ああ、昔のバージョンでした。

コンテントパイプラインでデータ取得するパターンが多いのは、この名残かもしれません。昔は皆さん苦労されてたんですね~。

このコードを少し手直ししたらXNA3.0で動いたので、これを足掛かりに解析を進めます。



◎GetDataの第二引数

自作地形とサンプル地形の頂点データを比較する場合、同一座標の頂点でないと意味がありません。しかし自作地形の外周頂点はわざと法線を加工しているので、内側の頂点データを取得する必要があります。

そこでGetDataの第二引数(startIndex:コピーを開始する配列要素のインデックス)に内側のインデックス番号をセットすると、何故か想定外の動きをします。おかしいな~?

この謎は現在も解決していないのですが、この謎を追いかけているうちに、色々なことがわかってきました。



◎GetDataの解説記事

VertexBuffer.SetDataの使い方やサンプルを掲載した記事はネット上に多数ありましたが、それに比べるとGetDataの解説記事は少ないようです。

衝突判定やデバッグのためにGetDataを覚えたいと思う機会は多そうなのに、何故かな~?と不思議に思っていたのですが、その理由が判りました。

GetDataを正しく使うには、SetDataの知識が不可欠であり、SetDataの知識があれば、GetDataは簡単に使えるはずだから、GetDataは解説不要、というわけです。


でも、衝突判定やデバッグのために「とりあえず頂点データを取得したい」という初心者は私だけじゃないと思うので、そんな人向けの技術資料「3Dモデルの頂点データの取得」を作成しました。

初めに紹介している「簡易取得サンプルコード」は、頂点データフォーマットを決め打ちして強引に取得を試みます。
結果に満足できればそれで良し、ダメなら複雑なコードを追加する…という流れで記述しています。



◎次回予告

デバッグ目的で現状を把握したいだけだったのに、記事の都合上、カスタム頂点データフォーマットまで作成するハメになりました。お陰でいい勉強になりましたよ(笑)

次回は頂点データの内容を解析する予定です。

スポンサーサイト

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

コメント

コメントの投稿


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

トラックバック


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



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