locked
Modelクラス経由で読み出した.xファイルの頂点バッファやインデックスバッファにアクセスしたい。 RRS feed

  • 質問

  • Modelクラス経由で読み出した.xファイルの頂点バッファやインデックスバッファにアクセスする方法はあるのでしょうか?

    // 頂点を1つだけ取り出すテスト

    Model map = content.Load<Model>("Content\\Models\\map");
    VertexPositionNormalTexture [] v = new VertexPositionNormalTexture[1];
    ResourceUsage ru = map.Meshes[0].VertexBuffer.ResourceUsage;
    map.Meshes[0].VertexBuffer.GetData(v, 0, 1);

    とした所 ru は [WriteOnly] 書き込み専用となっており、GetData()でアクセスすると、やはり結果は例外が発生し読み出すことはできませんでした。

    // 例外内容 NotSupportedException
    You cannot call GetData on a resource that was created with ResourceUsage.WriteOnly.


    現在解決策として、コンテンツパイプラインのインポータを作成して、自前で頂点バッファとインデックスバッファを用意するという方法で解決していますが、インポータを書かなくても、もっと簡単にアクセス出来る方法があるのではないか?と考えています。

    そもそも何か勘違いしているのか?または、インポータを書く必要があるのか、書かなくても頂点データ・インデックスバッファにアクセスできる方法があるのかご教授お願いします。

    ※なお、頂点データは参照するだけでよく、変更して書き換えなどは行いません。


     

    2007年3月12日 0:40

回答

  • 情報ありがとうございます。
    現状はModelクラスから頂点・インデックスの読み出しはできないということですね。
    引き続き独自のコンテンツパイプラインで対応しておくようにして、4月のアップデートに期待したいと思います。

    自分で書いてもちょっとのことですが、こういう細かい点がフレームワークに含まれていくとますます便利になりそうです。現在XBOX360 + XNAの環境ですが、この開発環境が約10000円で使えるのはすごいですね。

    XNAチームの皆さんこれからも頑張ってください。

     

    2007年3月12日 5:01

すべての返信

  •  XNA Game Studio Express の次期アップデートで参照できるようになるそうです。(4月ごろ)

    http://blogs.msdn.com/xnajapan/archive/2007/03/09/XNA-Game-Studio-Express-_216B1F67A230C330D730C730FC30C830_.aspx

    2007年3月12日 3:44
  • 情報ありがとうございます。
    現状はModelクラスから頂点・インデックスの読み出しはできないということですね。
    引き続き独自のコンテンツパイプラインで対応しておくようにして、4月のアップデートに期待したいと思います。

    自分で書いてもちょっとのことですが、こういう細かい点がフレームワークに含まれていくとますます便利になりそうです。現在XBOX360 + XNAの環境ですが、この開発環境が約10000円で使えるのはすごいですね。

    XNAチームの皆さんこれからも頑張ってください。

     

    2007年3月12日 5:01